Экспорт событий (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:
Возможные результаты:
| Результат | Что означает | Что делать |
|---|---|---|
| Успешно | Тестовое событие доставлено | Всё работает |
| 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¶
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)¶
- Формат: 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. Возможно, токен истёк — обновите его в настройках экспортера. |