Привет, Хабр! Меня зовут Федор Тышков. Я работаю в отделе сопровождения инфраструктуры небольшого банка. Мне поставили задачу протестировать работу open-source инструмента для отслеживания изменений в конфигурационных файлах. Перед стартом я изучил много отзывов и практически все они были положительными, поэтому, казалось, все должно было пройти «без сучка и без задоринки». Но обо всем по порядку.

Wazuh — популярная многофункциональная платформа с открытым исходным кодом для мониторинга событий безопасности. Она широко используется для отслеживания изменений файлов, анализа логов и обнаружения угроз.

Компоненты архитектуры

Wazuh состоит из нескольких ключевых компонентов:

  • Агент. Устанавливается на конечные точки (рабочие станции, серверы, контейнеры) и собирает данные безопасности, передавая их на центральный сервер для анализа.

  • Сервер (менеджер). Анализирует данные, полученные от агентов, декодирует их, сопоставляет с правилами обнаружения и генерирует алерты. Поддерживает кластерную конфигурацию для обеспечения отказоустойчивости и распределения нагрузки.

  • Индексатор. Хранит данные в базе OpenSearch (форк Elasticsearch), обеспечивает долгосрочное хранение, полнотекстовый поиск и агрегацию.

  • Дашборд. Веб-интерфейс для просмотра и фильтрации алертов в реальном времени, визуализации данных через графики, таблицы и карты, управления агентами, правилами и конфигурацией.

Для критичных ИТ-систем требуется надежное решение для отслеживания изменений конфигурационных файлов. Важна как полнота данных (отсутствие потери событий при детектировании и обработке), так и точность таких данных. Это необходимо для:

  • Обнаружения несанкционированных изменений конфигурации наблюдаемой операционной системы (создание злоумышленником точек входа в систему) и прикладного ПО (корректность и стабильность работы системы)

  • Контроля и мониторинга целостности системы

  • Соответствия нормативным требованиям

  • Оперативного выявления и реагирования на инциденты

В рамках поставленной задачи мне было необходимо проверить способность Wazuh обрабатывать реалистичное (не лабораторные или демонстрационные) количество событий без потери данных и задержек в обработке.

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

Окружение

  • Сервер: Wazuh. Развернут и настроен как указано в описании тестов ниже

  • Агенты: Windows и Linux

  • Сценарий: Создание файла размером 16 МБ и последующее внесение 10 000+ изменений

Тестовый сценарий на Windows

Для Windows-клиента использовались три скрипта: run.cmd — скрипт для последовательного запуска скриптов test_1.cmd и test_2.cmd:

@echo off
start /wait test_1.cmd 
start /wait test_2.cmd
exit

test_1.cmd — создание файла 16 МБ путем многократного дублирования содержимого:

@echo off
echo "This is just a sample line appended to create a big file. " > test.txt
for /L %%i in (1,1,18) do (
type test.txt >> test.txt
)
Exit

test_2.cmd — добавление 10 000 строк с временными метками:

@echo off
for /L %%x in (1,1,10000) do (
echo %%x %date% %time% >> test.txt
)
Exit

Скрипты размещались в директории C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp, которая отслеживается Wazuh по умолчанию.

Тестовый сценарий на Linux

Для Linux-клиента предварительно была добавлена строка в файл конфигурации /var/ossec/etc/ossec.conf:

<directories check_all="yes" realtime="yes" whodata="yes">/tmp/test</directories>

После этого служба была перезапущена:

sudo systemctl restart wazuh-agent.service

run.sh — скрипт для запуска скриптов test1.sh и test2.sh:

#!/bin/bash
bash test1.sh
bash test2.sh

test1.sh — создание файла 16 МБ:

#!/bin/bash
dd if=/dev/urandom of=test.txt bs=1M count=16

test2.sh — добавление 10 000 строк с временными метками:

#!/bin/bash
for x in {1..10000}
do
    echo "$x $(date '+%d.%m.%Y %H:%M:%S')" >> test.txt
done

Скрипты размещались в директории /tmp/test/, мониторинг за которой был добавлен в файл конфигурации.

Результаты тестирования

Windows: критическое количество незарегистрированных событий изменения наблюдаемого объекта

Параметр

Ожидается

Зарегистрировано

Потеря данных

События изменения файла

~10 019

~20

99,8%

Зарегистрированные события

10 019

20

Вывод: Wazuh зарегистрировал только 20 событий из ожидаемых 10 019. Это указывает на серьезные проблемы с обработкой большого количества изменений файлов в режиме реального времени.

Linux: лучше, но недостаточно

Параметр

Ожидается

Зарегистрировано

Потеря данных

События изменения файла

~10 001

~120

98,8%

Зарегистрированные события

10 001

120

Вывод: Linux-клиент показал лучший результат (120 событий против 20 на Windows), однако потеря 98.8% событий остается неприемлемой для мониторинга событий на критичных системах.

Анализ проблем

  1. Асинхронная постобработка событий

    Агент Wazuh использует ресурсы операционной системы для динамического (realtime) детектирования событий изменения и, фильтруя очередь журнала событий в буфере механизма журналирования ОС, производит самостоятельную постобработку событий (создание теневой копии контента и подсчет контрольной суммы измененного файла). Так как постобработка событий производится в асинхронном режиме, пока обрабатываются артефакты одного событий, другие события в очереди игнорируются.

  2. Узкое место в локальном хранении зарегистрированных событий на агенте

    Агент Wazuh использует локальный буфер для накопления событий перед отправкой на сервер. При высокой интенсивности регистрации событий, доступное пространство буфера на агенте заполняется, и события теряются.

  3. Отсутствие адаптивной обработки потока входящих событий на сервере

    Сервер Wazuh не имеет встроенного механизма для адаптации к всплескам потока входящих событий. Когда количество событий входящих с агентов событий превышает доступную пропускную способность сервера, события просто отбрасываются.

  4. Отсутствие гарантий доставки

    Wazuh не гарантирует доставку каждого события. При перегрузке система предпочитает потерять события, чем замедлить обработку. Сравнение с требованиями регуляторов (национальные центральные банки, национальные и международные стандарты кибербезопасности) другие отраслевые регуляторы.

Для банковских систем обычно требуется:

  • 100% отслеживание изменений конфигурационных объектов (файлов и ключей)

  • Гарантированная доставка событий на сервер

  • Минимальное влияние на быстродействие системы и приложений

  • Регистрация всех наблюдаемых событий безопасности без исключения

  • Масштабируемость при росте нагрузки

Результаты Wazuh:

  • Потеря 98-99% событий

  • Отсутствие гарантий доставки

  • Неопределенная задержка обработки

  • Критичные события могут быть пропущены

  • Негарантированная масштабируемость

Возможные решения и рекомендации

Могу сказать, что результат тестирования был неожиданным, вспоминая все прочитанные положительные отзывы. Что я отметил для себя:

  1. Потеря данных неприемлема: потеря событий недопустима для систем, требующих полного аудита

  2. Отсутствие гарантий: Wazuh не гарантирует регистрацию каждого события

  3. Масштабируемость ограничена: система не справляется с высокой интенсивностью отправляемых на сервер событий

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

Пишите в комментариях, если у вас получались другие результаты, интересно обменяться мнениями.

Комментарии (4)


  1. NailBash
    01.06.2026 12:02

    Добрый день. Вы тестировали Wazuh с настройками из коробки - как есть? Или что-то крутили?
    У него довольно много настроек (https://documentation.wazuh.com/current/user-manual/reference/internal-options.html). В том числе можно увеличить буфер агента или вообще отключить буферизацию - тогда агент будет передавать на менеджер данные с максимально возможной скоростью.


    1. tyshkov_ff Автор
      01.06.2026 12:02

      Мы повышали ОЗУ на сервере до 16ГБ и буфер (для мониторинга событий с одного клиента-хоста) и всё равно “через край стакана выливались события”. При 4ГБ событий приходило ещё меньше… Смотрели документацию: что можно сделать, чтобы увеличить процент “не потерянных” событий. Получали либо те же результаты теста, либо что-то, что не могли понять (контрольные суммы файлов после изменения не совпадали с реальными, и копии контента файлов не совпадали (съехали) c тем, к какому результату изменения относятся). И самое неприятное, это что агент теряет много событий ещё на этапе детектирования на хосте. Прото их игнорирует. Интересно узнать, какие результаты ещё получались при других конфигурациях сервера из продов, поделитесь пожалуйста...


  1. infokirov
    01.06.2026 12:02

    Добрый день, честно говоря очень странный кейс вы решаете, даже используя средства автоматизации, тест "добавление 10 000 строк" в конфигурационный файл - выглядит мягко говоря нереальным. Для реагирования вам достаточно факта внесения изменений. Какой смысл в хранении и генерации созданного шума в тесте?


    1. tyshkov_ff Автор
      01.06.2026 12:02

      Мы тестировали по постинцидентной истории, когда за короткий промежуток времени меняется конфиг (файл xml) приложения на хосте и рестартуется служба (приложение запускается в конфиге новой версии конфиг файла) и после этого конфиг файл меняется обратно на правильный.

      В итоге приложение работает в других (заданных злоумышленником) настройках (и это не видно нигде, а в мониторинге видно только, что текущая версия конфиг-файла правильная.

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

      Ещё есть история с возможностью видеть реалтайм конфигурацию всех хостов “в конюшне” (когда машины в группе/департаменте в одной конфигурации) и видеть где есть отклонение после релиза - вообще мимо( Все машины отображаются после релиза как разные… Хотя отклонение от ожидаемой конфигурации после релиза было только на двух из 55 машин и то по одному и двум файлам