Wazuh SIEM-интеграции - коннекторы и пересылка

Wazuh 4.14 включает демон wazuh-integratord, который обеспечивает передачу алертов во внешние системы безопасности и мониторинга. Встроенные интеграции настраиваются через блок <integration> в конфигурационном файле ossec.conf на сервере Wazuh Manager. Помимо встроенных коннекторов, платформа поддерживает syslog forwarding и пользовательские webhook-интеграции.

Демон wazuh-integratord

Демон wazuh-integratord запускается автоматически при старте Wazuh Manager и обрабатывает алерты в реальном времени. Для каждой настроенной интеграции демон проверяет условия фильтрации и, при совпадении, формирует JSON-payload для отправки во внешнюю систему.

Общая структура блока integration

Все встроенные интеграции настраиваются в файле /var/ossec/etc/ossec.conf внутри блока <ossec_config>:

<integration>
  <name>integration-name</name>
  <hook_url>https://endpoint.example.com/webhook</hook_url>
  <api_key>YOUR_API_KEY</api_key>
  <level>7</level>
  <rule_id>100001,100002</rule_id>
  <group>authentication_failed,</group>
  <alert_format>json</alert_format>
</integration>

Параметры фильтрации:

ПараметрОписаниеПример
<level>Минимальный уровень алерта для отправки7 - отправлять алерты уровня 7 и выше
<rule_id>Список ID правил через запятую100001,100002
<group>Группа правил (с завершающей запятой)authentication_failed,
<event_location>Фильтр по источнику события/var/log/auth.log

Если указано несколько параметров фильтрации, они объединяются логическим AND - алерт должен соответствовать всем условиям одновременно.

Интеграция со Slack

Slack-интеграция отправляет уведомления об алертах в указанный канал через Incoming Webhook.

Настройка Slack Webhook

  1. Перейдите в настройки приложения Slack: Apps - Manage - Custom Integrations - Incoming WebHooks
  2. Создайте новый webhook и скопируйте URL вида https://hooks.slack.com/services/T00/B00/XXXX
  3. Добавьте конфигурацию в ossec.conf:
<integration>
  <name>slack</name>
  <hook_url>https://hooks.slack.com/services/T00/B00/XXXX</hook_url>
  <level>10</level>
  <alert_format>json</alert_format>
</integration>

Фильтрация алертов для Slack

Для высоконагруженных сред рекомендуется ограничить отправку только критическими алертами:

<integration>
  <name>slack</name>
  <hook_url>https://hooks.slack.com/services/T00/B00/XXXX</hook_url>
  <level>12</level>
  <group>attack,exploit,</group>
  <alert_format>json</alert_format>
</integration>

Эта конфигурация отправляет в Slack только алерты уровня 12 и выше, принадлежащие группам attack или exploit.

Формат уведомлений

Wazuh формирует Slack-сообщение с полями: уровень алерта, описание правила, ID агента, временная метка и источник события. Сообщение визуально размечено цветом в зависимости от уровня критичности.

Интеграция с PagerDuty

PagerDuty используется для эскалации критических инцидентов с автоматическим оповещением дежурной смены.

Настройка PagerDuty

  1. Создайте сервис в PagerDuty с типом интеграции Events API v2
  2. Скопируйте Integration Key (Routing Key)
  3. Добавьте конфигурацию:
<integration>
  <name>pagerduty</name>
  <api_key>YOUR_PAGERDUTY_INTEGRATION_KEY</api_key>
  <level>12</level>
  <alert_format>json</alert_format>
</integration>

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

PagerDuty-интеграция автоматически маппит уровень алерта Wazuh на severity PagerDuty:

Wazuh LevelPagerDuty Severity
1-4info
5-7warning
8-11error
12-15critical

Алерты уровня 12+ создают инцидент с приоритетом Critical и немедленным оповещением дежурного инженера. Для тонкой настройки маппинга можно модифицировать скрипт интеграции в /var/ossec/integrations/pagerduty.

Интеграция с VirusTotal

VirusTotal-интеграция позволяет автоматически проверять хеши файлов, обнаруженных модулем FIM (File Integrity Monitoring), через API VirusTotal.

Настройка VirusTotal

  1. Зарегистрируйтесь на virustotal.com и получите API-ключ
  2. Добавьте конфигурацию:
<integration>
  <name>virustotal</name>
  <api_key>YOUR_VIRUSTOTAL_API_KEY</api_key>
  <group>syscheck,</group>
  <alert_format>json</alert_format>
</integration>

Как работает проверка

  1. Модуль FIM обнаруживает изменение файла и вычисляет его хеш (MD5, SHA1, SHA256)
  2. wazuh-integratord отправляет хеш в API VirusTotal
  3. VirusTotal возвращает результат проверки: количество антивирусных движков, обнаруживших угрозу
  4. Wazuh генерирует дополнительный алерт с результатами проверки

Ограничения бесплатного API

Бесплатный API VirusTotal ограничен 4 запросами в минуту и 500 запросами в день. Для продуктивных сред с большим объемом FIM-событий рекомендуется использовать Premium API или фильтровать запросы по критическим директориям.

<integration>
  <name>virustotal</name>
  <api_key>YOUR_VIRUSTOTAL_API_KEY</api_key>
  <rule_id>554</rule_id>
  <alert_format>json</alert_format>
</integration>

Правило 554 срабатывает только при добавлении нового файла, что значительно снижает количество API-запросов.

Интеграция с Shuffle

Shuffle - SOAR-платформа с открытым исходным кодом, которая позволяет создавать автоматизированные workflows для обработки алертов Wazuh.

Настройка Shuffle

  1. Разверните Shuffle и создайте новый Workflow
  2. Добавьте триггер типа Webhook и скопируйте URL
  3. Настройте интеграцию в ossec.conf:
<integration>
  <name>shuffle</name>
  <hook_url>https://shuffle.example.com/api/v1/hooks/HOOK_ID</hook_url>
  <level>5</level>
  <alert_format>json</alert_format>
</integration>

Пример workflow

Типичный Shuffle workflow для обработки алертов Wazuh:

  1. Получение алерта через webhook
  2. Обогащение данных (IP reputation, WHOIS, geolocation)
  3. Классификация по критичности
  4. Создание тикета в Jira/ServiceNow
  5. Отправка уведомления в Slack
  6. При критичности 12+ - запуск Active Response через API Wazuh

Подробнее о SOAR-интеграциях читайте в разделе Сторонние интеграции .

Интеграция с TheHive

TheHive - платформа управления инцидентами, интегрируемая с Wazuh для автоматического создания кейсов из алертов.

Настройка TheHive

Интеграция с TheHive реализуется через пользовательский скрипт интеграции:

  1. Создайте API-ключ в TheHive: Organization - Users - API Key
  2. Установите скрипт интеграции:
cp custom-thehive /var/ossec/integrations/
chmod 750 /var/ossec/integrations/custom-thehive
chown root:wazuh /var/ossec/integrations/custom-thehive
  1. Добавьте конфигурацию:
<integration>
  <name>custom-thehive</name>
  <hook_url>http://thehive.example.com:9000/api/alert</hook_url>
  <api_key>YOUR_THEHIVE_API_KEY</api_key>
  <level>10</level>
  <alert_format>json</alert_format>
</integration>

Маппинг полей

Скрипт интеграции преобразует алерт Wazuh в формат TheHive Alert:

Wazuh FieldTheHive Field
rule.descriptiontitle
rule.levelseverity (1-4)
rule.mitre.idtags
agent.namesourceRef
full_logdescription

Пользовательские webhook-интеграции

Для систем без встроенной поддержки Wazuh позволяет создавать произвольные webhook-интеграции.

Создание custom-интеграции

  1. Создайте скрипт интеграции на Python:
#!/usr/bin/env python3
import sys
import json
import requests

def main():
    # wazuh-integratord передает 4 аргумента:
    # 1: путь к файлу с алертом (JSON)
    # 2: API-ключ (из <api_key>)
    # 3: hook URL (из <hook_url>)
    # 4: путь к файлу с полным алертом

    alert_file = sys.argv[1]
    api_key = sys.argv[2]
    hook_url = sys.argv[3]

    with open(alert_file) as f:
        alert = json.load(f)

    payload = {
        "source": "wazuh",
        "rule_id": alert.get("rule", {}).get("id"),
        "level": alert.get("rule", {}).get("level"),
        "description": alert.get("rule", {}).get("description"),
        "agent": alert.get("agent", {}).get("name"),
        "timestamp": alert.get("timestamp"),
    }

    headers = {
        "Content-Type": "application/json",
        "Authorization": f"Bearer {api_key}",
    }

    response = requests.post(hook_url, json=payload, headers=headers)
    response.raise_for_status()

if __name__ == "__main__":
    main()
  1. Установите скрипт:
cp custom-webhook /var/ossec/integrations/
chmod 750 /var/ossec/integrations/custom-webhook
chown root:wazuh /var/ossec/integrations/custom-webhook
  1. Настройте в ossec.conf:
<integration>
  <name>custom-webhook</name>
  <hook_url>https://api.example.com/wazuh-alerts</hook_url>
  <api_key>YOUR_API_KEY</api_key>
  <level>7</level>
  <alert_format>json</alert_format>
</integration>

Syslog Forwarding

Syslog forwarding позволяет пересылать алерты Wazuh в другие SIEM-системы (Splunk, QRadar, ArcSight, ELK) по протоколу syslog.

Настройка syslog output

Конфигурация задается в блоке <syslog_output> файла ossec.conf:

<syslog_output>
  <server>192.168.1.100</server>
  <port>514</port>
  <format>json</format>
  <level>5</level>
</syslog_output>

Поддерживаемые форматы

ФорматОписаниеРекомендуемое использование
defaultСтандартный syslog (RFC 3164)Совместимость с legacy SIEM
jsonJSON-формат алертаSplunk, ELK, современные SIEM
cefCommon Event FormatArcSight, QRadar

Фильтрация по группам и уровням

<syslog_output>
  <server>splunk.example.com</server>
  <port>1514</port>
  <format>json</format>
  <level>7</level>
  <group>authentication_failed,attack,</group>
</syslog_output>

Syslog через TLS

Для безопасной пересылки используйте rsyslog или syslog-ng в качестве промежуточного слоя с TLS-шифрованием:

# /etc/rsyslog.d/wazuh-forward.conf
module(load="imudp")
input(type="imudp" port="514")

action(
  type="omfwd"
  target="siem.example.com"
  port="6514"
  protocol="tcp"
  StreamDriver="gtls"
  StreamDriverMode="1"
  StreamDriverAuthMode="x509/name"
)

Wazuh как источник данных для Splunk

Wazuh предоставляет официальное приложение для Splunk, которое обеспечивает двустороннюю интеграцию.

Архитектура интеграции

Wazuh Manager --> syslog/json --> Splunk Universal Forwarder --> Splunk Indexer
                                                                     |
                                                              Wazuh App for Splunk

Настройка Splunk Forwarder

  1. Установите Splunk Universal Forwarder на сервер Wazuh Manager
  2. Настройте мониторинг файла алертов:
# /opt/splunkforwarder/etc/system/local/inputs.conf
[monitor:///var/ossec/logs/alerts/alerts.json]
disabled = false
index = wazuh
sourcetype = wazuh-alerts
  1. Установите Wazuh App for Splunk на Search Head для визуализации данных

Wazuh как standalone SIEM vs дополнение к Splunk/ELK

КритерийWazuh StandaloneWazuh + Splunk/ELK
Хранение данныхOpenSearch (Wazuh Indexer)Splunk/Elasticsearch
ВизуализацияWazuh DashboardSplunk/Kibana + Wazuh App
КорреляцияПравила WazuhПравила Wazuh + SPL/KQL
МасштабированиеКластер OpenSearchИнфраструктура Splunk/ELK
СтоимостьБесплатноЛицензия Splunk / ресурсы ELK

Для организаций, уже использующих Splunk или ELK, рекомендуется гибридный подход: Wazuh обеспечивает сбор данных и первичный анализ на конечных точках, а SIEM выполняет централизованную корреляцию и долгосрочное хранение.

Интеграция с Elastic Stack (ELK)

Wazuh поддерживает интеграцию с Elasticsearch через Filebeat.

Настройка Filebeat

# /etc/filebeat/filebeat.yml
filebeat.modules:
  - module: wazuh
    alerts:
      enabled: true

output.elasticsearch:
  hosts: ["https://elasticsearch.example.com:9200"]
  index: "wazuh-alerts-%{+yyyy.MM.dd}"
  username: "elastic"
  password: "${ES_PASSWORD}"
  ssl.certificate_authorities: ["/etc/filebeat/certs/ca.pem"]

Подробнее о настройке Filebeat для Wazuh описано в официальной документации Wazuh .

Устранение неполадок

Алерты не отправляются во внешнюю систему

  1. Проверьте статус демона integratord:
/var/ossec/bin/wazuh-control status | grep integratord
  1. Проверьте логи интеграции:
tail -f /var/ossec/logs/integrations.log
  1. Убедитесь, что скрипт интеграции имеет корректные права:
ls -la /var/ossec/integrations/
# Ожидаемые права: -rwxr-x--- root wazuh

Ошибки аутентификации

  • Slack: проверьте, что webhook URL актуален и приложение не деактивировано
  • PagerDuty: убедитесь, что Integration Key соответствует сервису Events API v2
  • VirusTotal: проверьте лимит API-запросов в Dashboard VirusTotal

Высокая нагрузка на integratord

При большом количестве алертов демон может создавать очередь. Рекомендации:

  • Увеличьте <level> для фильтрации несущественных алертов
  • Используйте <rule_id> или <group> для точечной отправки
  • Мониторьте размер очереди через /var/ossec/var/run/wazuh-integratord.state

Syslog forwarding не работает

  1. Проверьте сетевую доступность:
nc -zv siem.example.com 514
  1. Убедитесь, что блок <syslog_output> находится внутри <ossec_config>:
/var/ossec/bin/wazuh-logtest -t
  1. Проверьте, что после изменения конфигурации сервер был перезапущен:
/var/ossec/bin/wazuh-control restart

Подробнее о написании собственных скриптов интеграции читайте в разделе Разработка пользовательских интеграций .

Last updated on