Перейти к содержанию

Экспорт событий (SIEM)

В этом разделе описано, как настроить отправку событий безопасности из AppSec.AIGate во внешние системы: SIEM, SOAR, мессенджеры, аналитические платформы. Концептуальное описание — см. Основные понятия.

Что такое экспортер?

Экспортер — конфигурация отправки событий безопасности во внешнюю систему. AppSec.AIGate доставляет события безопасности во все настроенные внешние системы согласно конфигурации экспортеров.

Зачем нужен экспорт: события безопасности хранятся внутри AppSec.AIGate и доступны через Dashboard. Однако в большинстве организаций уже есть централизованная система мониторинга, и экспорт позволяет:

  • Коррелировать события AppSec.AIGate с другими источниками (WAF, IDS, Endpoint) в едином SOC.
  • Использовать существующие дашборды и playbooks SOAR для автоматической реакции.
  • Хранить события в SIEM с собственными retention-политиками (независимо от AppSec.AIGate).
  • Отправлять оповещения в мессенджеры (Slack, Telegram) через webhook.

Сколько экспортеров можно создать: без ограничений. Типичная конфигурация — 2–3 экспортера для разных целей: Syslog в SOC (только критичные), Kafka в аналитику (все события), Webhook в Slack (только блокировки).

Создание экспортера

Перейдите на страницу SIEM Экспортеры (/exporters) и нажмите Добавить экспортер.

Поле Обяз. Описание
Название Да Осмысленное имя: prod-syslog-soc, analytics-kafka, slack-alerts.
Тип Да Один из типов: Syslog, CEF, Webhook, Kafka, File. Нельзя изменить после создания.
Описание Нет Комментарий: назначение, ответственный, целевая система.
Экспортер активен Переключатель. Если включён — экспортер начинает работать сразу после создания.
Конфигурация (JSON) Да Параметры подключения в формате JSON. Набор полей зависит от типа (см. Типы экспорта); при выборе типа поле заполняется шаблоном-подсказкой.

Нажмите Создать. После создания обязательно выполните тест для проверки связности (см. Тестирование).

Тестирование

После создания экспортера обязательно проверьте подключение — нажмите кнопку Тест в строке экспортера. Система отправит тестовое событие в целевую систему и покажет результат. То же можно сделать через API:

# Отправить тестовое событие
curl -X POST "http://localhost:8001/api/v1/exporters/{id}/test"

Возможные результаты:

Результат Что означает Что делать
Успешно Тестовое событие доставлено Всё работает
Destination недоступен Не удалось подключиться к адресу Проверьте адрес/порт, firewall
Ошибка аутентификации Неверные учётные данные Проверьте параметры доступа (логин/пароль/токен)
Таймаут Получатель не ответил вовремя Увеличьте timeout_sec или проверьте сеть

Управление экспортерами

Включение / отключение: откройте экспортер на Редактирование и переключите Экспортер активен. Отключённый экспортер перестаёт отправлять события, но конфигурация сохраняется. Полезно для временной паузы (например, при обслуживании SIEM).

Редактирование: все параметры конфигурации можно изменить, кроме типа экспортера. Изменения вступают в силу автоматически.

Удаление: кнопка Удалить (доступна только роли admin). Удаление необратимо — конфигурация не сохраняется.

Несколько экспортеров одновременно: можно создать неограниченное количество экспортеров. Каждый работает независимо со своей целевой системой. Типичная конфигурация:

Экспортер Тип Назначение
prod-syslog-soc syslog Корпоративный SOC
analytics-kafka kafka Аналитическая платформа — события для дашбордов и ML
slack-critical webhook Оповещение дежурного в Slack
backup-file file Локальный backup на случай недоступности SIEM

Типы экспорта

Syslog (RFC 5424 / 3164)

Отправка событий на syslog-сервер через UDP, TCP или TCP+TLS. Наиболее распространённый способ интеграции с корпоративными SIEM (QRadar, ArcSight, KUMA, Splunk).

Параметр Обяз. По умолчанию Описание Подробности
address Да Адрес сервера Формат host:port. Пример: syslog.company.com:514. Для TLS обычно порт 6514.
transport Нет udp Протокол транспорта udp — быстро, но ненадёжно (события могут теряться). tcp — надёжная доставка, рекомендуется для production. tcp+tls — шифрованный канал, требуется для передачи по недоверенным сетям.
format Нет rfc5424 Формат syslog-сообщения rfc5424 — современный стандарт с структурированными данными, рекомендуется. rfc3164 — устаревший формат для старых syslog-серверов (rsyslog < 8, syslog-ng < 3).
facility Нет 16 (LOCAL0) Syslog facility Число 0–23. LOCAL0–LOCAL7 (16–23) — для пользовательских приложений. Определяет, в какую категорию попадут события на syslog-сервере.
app_name Нет LLMFirewall Имя приложения в syslog Произвольная строка. Используется для идентификации источника на стороне syslog-сервера.
tls_insecure Нет false Отключить проверку TLS-сертификата Только для tcp+tls. Установите true для self-signed сертификатов. Не рекомендуется для production.

CEF (ArcSight, MaxPatrol, QRadar)

Common Event Format (CEF) — стандартизированный формат Micro Focus для SIEM-интеграции. Используется ArcSight, MaxPatrol SIEM, QRadar, LogRhythm. AppSec.AIGate автоматически маппит поля события в CEF-атрибуты и формирует CEF-строку.

Параметр Обяз. По умолчанию Описание Подробности
address Да Адрес SIEM-сервера Формат host:port. Пример: maxpatrol.company.com:514. Типичные порты: 514 (plain), 1514 (CEF over syslog).
transport Нет udp Протокол транспорта udp или tcp. CEF обычно передаётся поверх syslog.
device Нет LLMFirewall Имя устройства в CEF-заголовке Идентифицирует источник событий в SIEM.
version Нет 0 Версия формата CEF в заголовке Обычно не меняется; 0 — текущая версия CEF.

Webhook (HTTP POST)

Отправка событий через HTTP POST в формате JSON. Самый универсальный тип — позволяет отправлять события в любую систему с HTTP API: свой backend, Slack (Incoming Webhook), PagerDuty, Opsgenie, Telegram (через bot API), SOAR-платформы.

Параметр Обяз. По умолчанию Описание Подробности
url Да URL назначения Полный URL. Пример: https://hooks.company.com/security. Должен быть доступен из сети AppSec.AIGate.
method Нет POST HTTP-метод Обычно POST. Некоторые системы требуют PUT.
headers Нет {} Кастомные HTTP-заголовки JSON-объект. Используйте для авторизации: {"Authorization": "Bearer token123"}. Значения хранятся в зашифрованном виде.
batch_mode Нет false Режим отправки false — каждое событие отправляется отдельным HTTP POST (проще для обработки на стороне получателя). true — события накапливаются и отправляются массивом (экономит HTTP-вызовы при high-traffic).
timeout_sec Нет 10 Таймаут HTTP-запроса (сек) 1–60. Если получатель не ответил за это время — попытка считается неуспешной.
max_retries Нет 3 Макс. повторов при ошибке 0–10. При ошибке (5xx, timeout) экспортер повторит отправку с exponential backoff (1s, 2s, 4s...).

Kafka (SASL + TLS)

Публикация событий в Apache Kafka. Оптимально для высоконагруженных инсталляций и потоковой аналитики — Kafka обеспечивает гарантированную доставку и горизонтальное масштабирование.

Параметр Обяз. По умолчанию Описание Подробности
brokers Да Массив адресов брокеров Формат: ["host1:9092", "host2:9092"]. Укажите несколько брокеров для отказоустойчивости.
topic Да Имя Kafka-топика Пример: llm-security-events. Топик должен существовать или быть создан автоматически (зависит от настроек Kafka).
compression Нет snappy Алгоритм сжатия snappy — баланс скорости и размера (рекомендуется). gzip — лучшее сжатие, медленнее. lz4 — максимальная скорость. zstd — лучшее сжатие с хорошей скоростью. none — без сжатия.
batch_size Нет 100 Макс. сообщений в пакете 1–10000. Сообщения накапливаются в буфере и отправляются пакетом. Большие пакеты = выше throughput, выше задержка.
flush_interval Нет 1000 Интервал принудительной отправки Даже если batch не заполнен — отправить через этот интервал. Целое число в миллисекундах.
sasl_mechanism Нет Механизм аутентификации SASL PLAIN, SCRAM-SHA-256, SCRAM-SHA-512. Если не указан — подключение без аутентификации.
sasl_username Нет Имя пользователя SASL Обязательно при указанном sasl_mechanism.
sasl_password Нет Пароль SASL Хранится в зашифрованном виде.
tls_enabled Нет false Включить TLS-шифрование Рекомендуется для передачи по недоверенным сетям.
tls_ca_file Нет Путь к CA-сертификату Для проверки серверного сертификата. Если не указан — используется системное хранилище CA.
tls_cert_file Нет Путь к клиентскому TLS-сертификату (mTLS) Нужен при использовании mutual TLS (mTLS) для подключения к Kafka.
tls_key_file Нет Путь к приватному ключу клиентского сертификата (mTLS) Нужен при использовании mutual TLS (mTLS) для подключения к Kafka.
tls_insecure Нет false Пропустить проверку серверного сертификата (true/false, по умолчанию false)

File (JSON Lines)

Запись событий в локальный файл в формате JSON Lines (одно JSON-событие на строку). Подходит для отладки, разработки, air-gapped сред без внешних систем, а также как backup-экспортер на случай недоступности основного SIEM.

Параметр Обяз. По умолчанию Описание Подробности
path Да Путь к файлу Полный путь на файловой системе контейнера. Пример: /var/log/llm-firewall/events.jsonl. Директория должна существовать и быть доступна для записи.
max_size_bytes Нет 104857600 (100 MB) Максимальный размер файла для ротации (байты) При достижении этого размера файл ротируется: переименовывается (с timestamp в суффиксе) и создаётся новый. 104857600 = 100 MB.
max_files Нет 10 Максимальное количество ротированных файлов, по умолчанию 10.

Полные примеры конфигурации

Syslog — отправка в rsyslog/syslog-ng

{
  "address": "syslog.company.com:514",
  "transport": "tcp",
  "format": "rfc5424",
  "facility": 16,
  "app_name": "LLMFirewall"
}
  • facility: 16 = LOCAL0 (стандарт для пользовательских приложений, диапазон 16-23).
  • transport: "tcp" — надёжнее UDP (гарантированная доставка); для шифрования: "tcp+tls".
  • format: "rfc5424" — современный стандарт, рекомендуется; "rfc3164" — для старых систем.

CEF — отправка в MaxPatrol SIEM / ArcSight

{
  "address": "maxpatrol.company.com:1514",
  "transport": "tcp",
  "device": "LLMFirewall"
}

CEF-формат автоматически маппит severity в CEF severity (0-10) и формирует CEF-строку.

Webhook — отправка в Slack / Telegram / свой backend

{
  "url": "https://hooks.company.com/security-events",
  "method": "POST",
  "headers": {
    "Authorization": "Bearer your-webhook-token",
    "X-Source": "llm-firewall"
  },
  "batch_mode": false,
  "timeout_sec": 10,
  "max_retries": 3
}
  • batch_mode: false — каждое событие отправляется отдельным HTTP POST.
  • batch_mode: true — события накапливаются и отправляются массивом (экономит HTTP-вызовы).
  • headers — сюда можно добавить любые заголовки для аутентификации.

Kafka — потоковая доставка в аналитическую платформу

{
  "brokers": ["kafka-1.company.com:9092", "kafka-2.company.com:9092"],
  "topic": "llm-security-events",
  "compression": "snappy",
  "sasl_mechanism": "SCRAM-SHA-256",
  "sasl_username": "llm-firewall",
  "sasl_password": "your-kafka-password",
  "tls_enabled": true
}
  • compression: "snappy" — баланс скорости и сжатия; для максимального сжатия: "zstd".

File — локальный файл (для разработки / offline)

{
  "path": "/var/log/llm-firewall/events.jsonl",
  "max_size_bytes": 104857600,
  "max_files": 10
}
  • Формат: JSON Lines (одно JSON-событие на строку).
  • При достижении max_size_bytes файл ротируется (переименовывается, создаётся новый).
  • Полезно для разработки, отладки и offline-развёртываний без SIEM.

Типичные проблемы и решения

Проблема Симптом Решение
Экспортер не отправляет события Поле Обновлён не меняется, в логах ошибки Выполните тест (кнопка Тест). Проверьте адрес, порт, firewall. Для webhook — проверьте URL.
События приходят в SIEM с задержкой Задержка > 30 секунд Для webhook: проверьте timeout_sec и max_retries. Для Kafka: уменьшите flush_interval.
Syslog: события не парсятся в SIEM Приходят, но отображаются как raw text Проверьте format: rfc5424 для современных SIEM, rfc3164 для старых. Проверьте facility — SIEM может фильтровать по нему.
Kafka: LEADER_NOT_AVAILABLE В логах ошибки подключения Проверьте адреса brokers, SASL-credentials, TLS-сертификаты. Убедитесь, что топик существует.
Webhook: HTTP 401/403 Ошибка авторизации Проверьте заголовок Authorization в headers. Возможно, токен истёк — обновите его в настройках экспортера.