Как известно, SIEM‑системы предназначены для обнаружения угроз и мониторинга безопасности, но при этом важно учитывать, что и сама SIEM является сложной распределенной системой, с которой также могут возникнуть различные проблемы. Так, к примеру, в Wazuh может отключиться агент, переполниться диск с логами или перестать работать менеджер. В этой статье мы рассмотрим практические подходы к мониторингу состояния Wazuh, чтобы вы всегда были уверены в его работоспособности.

Мониторинг системы мониторинга

Прежде, чем приступать к рассмотрению практических примеров, давайте разберемся, с тем, а зачем вообще нужно следить за состоянием здоровья вашей SIEM системы. Давайте представим ситуацию, когда на вашу сеть идет атака, но ваш Wazuh‑менеджер «упал» час назад, и вы не получили ни одного предупреждения. Или еще худший сценарий: диск с индексами Elasticsearch заполнен, и новые логи просто не записываются, создавая слепую зону в безопасности. Мониторинг состояния самой системы Wazuh позволяет избежать подобных сценариев.

Мониторинг состояния агентов

Начнем с первой линии при сборе событий — агентов. Здесь нам необходимо на регулярной основе отслеживать подключение агентов. Каждый агент осуществляет сбор событий с определенной группы источников, и, если по какой‑либо причине этот агент перестанет работать, мы не сможем обнаружить атаки на эти узлы.

Для выявления проблем с агентами можно использовать различные средства. Прежде всего, можно воспользоваться веб‑консолью администрирования Wazuh.

В консоли перейдите в раздел Agents management. Здесь вы увидите сводку: количество активных, отключенных и никогда не подключавшихся агентов. Зеленый индикатор Active — всё хорошо.

В случае, если у вас используются внешние системы мониторинга, такие как Zabbix или Prometheus, то лучшим решением будет мониторинг через Wazuh API. Вы просто можете выполнить GET‑запрос к агенту и получить структурированные JSON‑данные о статусе каждого агента. Более подробно о работе с Wazuh API можно узнать в статье.

На сервере Wazuh также имеется функционал для проверки состояния агентов. Так, с помощью утилиты agent_control можно быстро узнать о статусе всех агентов или какого‑то конкретного.

Показать статус всех агентов:

/var/ossec/bin/agent_control -l

Показать статус конкретного агента (например, с ID 001):

/var/ossec/bin/agent_control -i 001

Вывод покажет, активен ли агент (Active), отключен (Disconnected) или находится в ожидании (Pending).

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

sudo grep ^status /var/ossec/var/run/wazuh-agentd.state

Возможные статусы: connected, disconnected, pending.

Итак, мы разобрались с мониторингом состояния агентов. Теперь перейдем непосредственно к ядру системы и поговорим о мониторинге Wazuh Manager.

Самонаблюдаемая система

Для критически важных компонентов, таких как Wazuh Manager, можно реализовать систему самодиагностики, которая не только сигнализирует о проблеме, но и пытается ее исправить. Мы можем написать bash‑скрипт, который проверяет ключевые процессы менеджера (wazuh‑authd, wazuh‑db, и др.). Если процесс не работает, скрипт пытается его перезапустить и логирует свои действия в JSON‑файл.

Вот пример подобного скрипта, найденный на просторах Github:

#!/bin/bash

# Определяем IP хоста

host=$(ip route get 8.8.8.8 | awk -F"src " 'NR==1{split($2,a," ");print a[1]}')

# Проверяем процесс wazuh-authd

if pgrep wazuh-authd > /dev/null; then
  echo "{\"host\":\"$host\", \"process\":\"wazuh-authd\", \"status\":\"healthy\"}" >> /tmp/health.json
else
  echo "{\"host\":\"$host\", \"process\":\"wazuh-authd\", \"status\":\"attempting_restart\"}" >> /tmp/health.json
  systemctl restart wazuh-manager
  # Здесь можно добавить проверку после рестарта
fi

Далее этот скрипт можно выполнять по расписанию. Но неплохо было уведомить администратора Wazuh о том, что м одним из компонентов системы произошел сбой.

Для того, чтобы данные из скрипта попали в Wazuh и стали видимыми в дашборде, создадим правило корреляции, которое будет регулярно проверять содержимое файла /tmp/health.json.

Для этого добавьте в файл /var/ossec/etc/rules/local_rules.xml правила, которые будут реагировать на статусы из health.json. Например, вот правило, которое сработает, если какой‑то процесс не здоров или была попытка перезапуска.

<group name="wazuh_healthcheck">
  <rule id="100100" level="12">
    <field name="status">attempting_restart</field>
    <description>Wazuh Manager: Process $(process) on $(host) is down. Restart attempted.</description>
  </rule>
</group>

Этот подход превращает Wazuh в самонаблюдаемую систему, которая не только ищет угрозы вовне, но и следит за собственным «здоровьем».

Мониторинг производительности и системных метрик

Мы рассмотрели варианты, когда Wazuh следит за своими компонентами сам, но лучше на этом не ограничиваться и использовать внешнюю систему для сбора метрик с него. Вот несколько метрик, по которым можно оценить общее состояние компонентов Wazuh:

  • Размер очереди логов: Если входящий поток событий слишком велик, очередь может переполняться, и часть данных будет потеряна. За этим нужно следить.

  • Использование диска: Wazuh Indexer (Elasticsearch) очень чувствителен к заполнению диска. При заполнении диска индексация останавливается. Мониторинг места на дисках с логами — обязательная процедура.

  • Ресурсы: Загрузка CPU и RAM на сервере Wazuh напрямую влияет на скорость обработки событий.

  • Состояние кластера: Если у вас кластерная установка, необходимо отслеживать состояние нод и их синхронизацию.

Эти метрики лучше всего собирать внешней системой мониторинга, такой как Zabbix, Prometheus + Grafana или встроенными средствами Elastic Stack.

Мониторинг пользовательских сценариев и команд

Помимо прочего, Wazuh позволяет выполнять произвольные команды на агентах. Данный функционал можно использовать для проактивной проверки работоспособности сервисов, а не только для поиска угроз. Например, если нам необходимо убедиться в том, что процесс Cron постоянно работает, мы можем настроить на агенте выполнение команды ps с определенной периодичностью.

Для этого добавляем в ossec.conf следующее:

<localfile>
  <log_format>full_command</log_format>
  <command>ps -auxw | grep [c]ron</command>  <alias>check_cron_status</alias>
  <frequency>300</frequency> <-- Каждые 5 минут -->
</localfile>

На стороне сервера нам необходимо указать следующее:

<group name="service_monitor,">
  <rule id="100010" level="0">
    <if_sid>530</if_sid>
    <match>^ossec: output: 'check_cron_status'</match>
    <description>Cron check executed.</description>
  </rule>
  <rule id="100011" level="10">
    <if_sid>100010</if_sid>
    <match>cron</match>  <description>CRITICAL: Cron process is NOT running!</description>
  </rule>
</group>

В результате правило 100 010 срабатывает на любой вывод нашей команды. А идущее за ним правило 100 011 проверяет, есть ли в выводе слово «cron».

Обратите внимание на конструкцию [c]ron в команде ps. Она используется, чтобы сам grep не находил сам себя в выводе. В результате, если Cron не запущен, команда ps не вернет строк с «cron», и правило 100 011 сработает, создав критический алерт.

Заключение

Мониторинг состояния самого Wazuh так же важен, как и мониторинг безопасности инфраструктуры, осуществляемый с его помощью. Используя комбинацию встроенных инструментов (дашборд, API), внешних систем (Zabbix) и кастомизированных скриптов, вы можете построить надежную систему самоконтроля. Реализовав эти практики, вы превратите Wazuh из пассивного сборщика логов в активного стража, за здоровьем которого вы следите так же пристально, как и за здоровьем вашей инфраструктуры.

Когда SIEM сама становится источником слепых зон, цена ошибки — не алерт, а пропущенная атака. На курсе по SIEM вы разбираете архитектуру, внедрение и эксплуатацию таких систем на практике: от настройки сбора событий до сценариев реагирования и контроля их «здоровья». Это как раз тот уровень, где перестаешь просто смотреть в дашборд и начинаешь понимать, что в нем на самом деле происходит.

А чтобы узнать больше о формате обучения и задать вопросы экспертам, приходите на бесплатные уроки:

  • 8 апреля в 20:00 «Настройка аудита событий информационной безопасности в Windows». Записаться

  • 21 апреля в 20:00 «Архитектура контроля событий информационной безопасности в инфраструктуре на базе SIEM». Записаться