
SOC, реагирование на инциденты и SecOps для Linux-серверов в одном агенте: изучает каждый хост, наблюдает за ним с помощью сенсоров без токенов, выполняет триаж с помощью небольшой модели и локализует атаки в рамках политики, принадлежащей root. Опциональный хаб для парка серверов.
У хакеров есть агенты, которые атакуют круглосуточно. Теперь у вас есть агент, который защищает.
Симуляция с problem99.io/kodeblue: один kodeblue на сервер, локализующий атаки по мере их поступления.
AI-команда защиты для ваших Linux-серверов: SOC, реагирование на инциденты и SecOps в одном решении. Один kodeblue на сервер, работающий под собственным непривилегированным пользователем kodeblue. Он выполняет работу всех трёх ролей и никогда не спит:
Он рассчитан на работу с небольшой и недорогой моделью через любой OpenAI-совместимый API: детерминированные сенсоры и фильтры берут на себя основную нагрузку, поэтому модель видит только то, что прошло через них. Без настроенной модели сенсоры, детекция и мониторы всё равно работают.
fast watch (5s) ─► sensors (60s, 0 tokens) ─► deterministic filters (0 tokens) ─► triage (small model, batched)
+ agent-written monitors (0 tokens) │
▼
daily review session ◄─ reports/skills/monitors ◄─ one agent session per incident ─► respond (policy) ─► Slack
Необязательный hub (kodeblue-hub) даёт парку единую консоль: инциденты каждого сервера, отчёты, рассуждения агентов и вызовы инструментов (в реальном времени), мониторы, находки и ожидающие одобрения, а также способ отправлять сообщения агентам. Серверы только исходяще подключаются к нему, всегда по TLS (открытый HTTP разрешён только для hub на той же машине).
Каждый шаг — это одна команда плюс API-ключ вашей модели, в Linux с systemd (amd64 или arm64; см. Требования). Установщики скачивают последний релиз для архитектуры сервера и проверяют его по SHA256SUMS релиза перед установкой. Чтобы скачать и проверить файлы самостоятельно или собрать их, см. docs/deploy.md и Сборка.
curl -fsSL https://github.com/Problem99-io/kodeblue/releases/latest/download/install.sh | sudo sh -s -- --inference-url https://openrouter.ai/api --model <model>
Используйте любую конечную точку, совместимую с OpenAI, с /v1 на конце или без него. Установщик запрашивает её API-ключ, необязательный вебхук Slack и необязательные учётные данные бота Telegram (секретный ввод не отображается), после чего запускает kodeblue. kodeblue создаёт снимки сервера примерно в течение 30 минут. Затем обучающая сессия исследует сервер, а оценка фиксирует его уязвимости (каждый этап может занимать до 45 минут), поэтому ожидайте, что мониторинг начнётся в течение одного-двух часов.
Без --inference-url kodeblue начинает мониторинг после создания снимков, а обучающая сессия и оценка ожидают, пока вы зададите модель; после этого они запускаются самостоятельно. Задать или изменить модель и её ключ можно одной командой (она запрашивает ключ и перезапускает kodeblue):
sudo kodeblue inference --url https://openrouter.ai/api --model <model> --key-file -
Уведомления Telegram можно использовать отдельно или вместе со Slack. Автономные серверы настраивают их во время установки; пользователи хаба настраивают их в разделе Settings → Telegram. Инструкции по настройке бота и chat-ID см. в Telegram setup.
Затем проверьте политику (режим реагирования, защищённые пользователи, IP-адреса и юниты, бюджет) с помощью sudoedit /etc/kodeblue/kodeblue.toml и следите за работой через sudo journalctl -fu kodeblue.
На хосте хаба, здесь с самоподписанным сертификатом, который закрепляют серверы:
curl -fsSL https://github.com/Problem99-io/kodeblue/releases/latest/download/install-hub.sh | sudo sh -s -- --public-url https://hub.example.com:8443 --self-signed
Или запустите образ хаба: ghcr.io/problem99-io/kodeblue-hub:latest (см. docs/deploy.md).
Установщик запрашивает пароль первого оператора (дважды) и запускает хаб. Затем:
f=$(mktemp) && r=$([ "$(id -u)" = 0 ] || echo sudo) && { curl -fsSL --proto =https --proto-redir =https -k --pinnedpubkey 'sha256//…' -o "$f" https://hub.example.com:8443/install.sh && echo "<sha256> $f" | sha256sum -c - && printf '%s\n' kbe_… | $r sh "$f" --hub https://hub.example.com:8443 --pin 'sha256//…' --token-file -; s=$?; rm -f "$f"; (exit "$s"); }
Он сохраняет установщик, проверяет его хеш перед запуском от имени root и передаёт одноразовый токен через stdin, чтобы тот никогда не появлялся в аргументах процесса. Сервер получает модель и ключ хаба при регистрации и больше ничего не запрашивает. Сервер, у которого ещё нет модели, наблюдает с помощью детерминированного обнаружения, а хаб показывает, что его обучение ожидает модель.
Для хаба в интернете мы рекомендуем разместить его за Cloudflare с туннелем cloudflared: хост хаба не открывает ни одного порта, серверы проверяют публичный сертификат Cloudflare (без pin), а Cloudflare Access может защищать консоль. Тогда Cloudflare видит трафик между серверами и хабом; см. docs/deploy.md для настройки и компромиссов.