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
- Перейдите в настройки приложения Slack: Apps - Manage - Custom Integrations - Incoming WebHooks
- Создайте новый webhook и скопируйте URL вида
https://hooks.slack.com/services/T00/B00/XXXX - Добавьте конфигурацию в
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
- Создайте сервис в PagerDuty с типом интеграции Events API v2
- Скопируйте Integration Key (Routing Key)
- Добавьте конфигурацию:
<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 Level | PagerDuty Severity |
|---|---|
| 1-4 | info |
| 5-7 | warning |
| 8-11 | error |
| 12-15 | critical |
Алерты уровня 12+ создают инцидент с приоритетом Critical и немедленным оповещением дежурного инженера. Для тонкой настройки маппинга можно модифицировать скрипт интеграции в /var/ossec/integrations/pagerduty.
Интеграция с VirusTotal
VirusTotal-интеграция позволяет автоматически проверять хеши файлов, обнаруженных модулем FIM (File Integrity Monitoring), через API VirusTotal.
Настройка VirusTotal
- Зарегистрируйтесь на virustotal.com и получите API-ключ
- Добавьте конфигурацию:
<integration>
<name>virustotal</name>
<api_key>YOUR_VIRUSTOTAL_API_KEY</api_key>
<group>syscheck,</group>
<alert_format>json</alert_format>
</integration>Как работает проверка
- Модуль FIM обнаруживает изменение файла и вычисляет его хеш (MD5, SHA1, SHA256)
wazuh-integratordотправляет хеш в API VirusTotal- VirusTotal возвращает результат проверки: количество антивирусных движков, обнаруживших угрозу
- 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
- Разверните Shuffle и создайте новый Workflow
- Добавьте триггер типа Webhook и скопируйте URL
- Настройте интеграцию в
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:
- Получение алерта через webhook
- Обогащение данных (IP reputation, WHOIS, geolocation)
- Классификация по критичности
- Создание тикета в Jira/ServiceNow
- Отправка уведомления в Slack
- При критичности 12+ - запуск Active Response через API Wazuh
Подробнее о SOAR-интеграциях читайте в разделе Сторонние интеграции .
Интеграция с TheHive
TheHive - платформа управления инцидентами, интегрируемая с Wazuh для автоматического создания кейсов из алертов.
Настройка TheHive
Интеграция с TheHive реализуется через пользовательский скрипт интеграции:
- Создайте API-ключ в TheHive: Organization - Users - API Key
- Установите скрипт интеграции:
cp custom-thehive /var/ossec/integrations/
chmod 750 /var/ossec/integrations/custom-thehive
chown root:wazuh /var/ossec/integrations/custom-thehive- Добавьте конфигурацию:
<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 Field | TheHive Field |
|---|---|
rule.description | title |
rule.level | severity (1-4) |
rule.mitre.id | tags |
agent.name | sourceRef |
full_log | description |
Пользовательские webhook-интеграции
Для систем без встроенной поддержки Wazuh позволяет создавать произвольные webhook-интеграции.
Создание custom-интеграции
- Создайте скрипт интеграции на 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()- Установите скрипт:
cp custom-webhook /var/ossec/integrations/
chmod 750 /var/ossec/integrations/custom-webhook
chown root:wazuh /var/ossec/integrations/custom-webhook- Настройте в
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 |
json | JSON-формат алерта | Splunk, ELK, современные SIEM |
cef | Common Event Format | ArcSight, 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
- Установите Splunk Universal Forwarder на сервер Wazuh Manager
- Настройте мониторинг файла алертов:
# /opt/splunkforwarder/etc/system/local/inputs.conf
[monitor:///var/ossec/logs/alerts/alerts.json]
disabled = false
index = wazuh
sourcetype = wazuh-alerts- Установите Wazuh App for Splunk на Search Head для визуализации данных
Wazuh как standalone SIEM vs дополнение к Splunk/ELK
| Критерий | Wazuh Standalone | Wazuh + Splunk/ELK |
|---|---|---|
| Хранение данных | OpenSearch (Wazuh Indexer) | Splunk/Elasticsearch |
| Визуализация | Wazuh Dashboard | Splunk/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 .
Устранение неполадок
Алерты не отправляются во внешнюю систему
- Проверьте статус демона integratord:
/var/ossec/bin/wazuh-control status | grep integratord- Проверьте логи интеграции:
tail -f /var/ossec/logs/integrations.log- Убедитесь, что скрипт интеграции имеет корректные права:
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 не работает
- Проверьте сетевую доступность:
nc -zv siem.example.com 514- Убедитесь, что блок
<syslog_output>находится внутри<ossec_config>:
/var/ossec/bin/wazuh-logtest -t- Проверьте, что после изменения конфигурации сервер был перезапущен:
/var/ossec/bin/wazuh-control restartПодробнее о написании собственных скриптов интеграции читайте в разделе Разработка пользовательских интеграций .