Wazuh в Docker: установка, агент и первое правило

Wazuh собирает журналы и события с узлов, применяет правила обнаружения и показывает результат в веб-интерфейсе. Ниже развёртывание на одном сервере через официальный репозиторий wazuh-docker, подключение агента и первое правило. Чем это отличается от мониторинга: SOC и SIEM против Zabbix.
Требования
- Docker и Docker Compose, не менее 4 ядер и 8 ГБ ОЗУ для single-node (индексатору нужна память).
- Место на диске под индексы. Следите за свободным местом: без него индексатор остановится.
- Параметр ядра для индексатора.
sudo sysctl -w vm.max_map_count=262144
echo 'vm.max_map_count=262144' | sudo tee /etc/sysctl.d/99-wazuh.conf
Шаг 1. Получите конфигурацию
git clone https://github.com/wazuh/wazuh-docker.git -b v4.14.8 --depth 1
cd wazuh-docker/single-node
Подставьте актуальную версию из релизов. Версии менеджера, индексатора и панели должны совпадать.
Шаг 2. Сертификаты и запуск
docker compose -f generate-indexer-certs.yml run --rm generator
docker compose up -d
docker compose ps
Панель по умолчанию доступна на https://HOST. Учётные данные по умолчанию (admin / SecretPassword в примере репозитория) нужно сменить сразу, по порядку, описанному в документации wazuh-docker. До смены не открывайте панель наружу.
Шаг 3. Закройте лишние порты
| Порт | Назначение | Кому открыть |
|---|---|---|
| 443 | Панель | Администраторам (VPN или список адресов) |
| 1514/tcp | События от агентов | Адресам ваших серверов |
| 1515/tcp | Регистрация агентов | Адресам серверов на время подключения |
| 55000 | API менеджера | Только администраторам |
| 9200 | Индексатор | Никому снаружи |
Правила firewall: nftables и firewalld. Помните, что Docker обходит правила хоста для опубликованных портов, и привязывайте служебные порты к 127.0.0.1 в compose-файле: безопасность Docker.
Шаг 4. Подключите агент на Linux
Добавьте репозиторий Wazuh по официальной инструкции и установите агент с адресом менеджера:
sudo WAZUH_MANAGER="wazuh.example.com" apt install wazuh-agent
sudo systemctl daemon-reload
sudo systemctl enable --now wazuh-agent
Версия агента не должна быть выше версии менеджера. В панели в разделе агентов узел должен появиться со статусом Active.
Шаг 5. Первое собственное правило
Правила пишутся в /var/ossec/etc/rules/local_rules.xml внутри контейнера менеджера (или в примонтированном каталоге). Пример: поднять уровень события при неудачном входе в SSH под учётной записью admin.
<group name="local,syslog,sshd,">
<rule id="100100" level="10">
<if_sid>5716</if_sid>
<user>admin</user>
<description>SSH: неудачный вход под учётной записью admin</description>
</rule>
</group>
Правило 5716 из набора по умолчанию соответствует неудачной аутентификации sshd. Идентификаторы пользовательских правил начинаются со 100000.
Как проверить
Проверьте правило без реальной атаки через инструмент разбора:
docker exec -it single-node-wazuh.manager-1 /var/ossec/bin/wazuh-logtest
Вставьте строку вида Oct 11 10:00:00 host sshd[1234]: Failed password for admin from 203.0.113.5 port 5555 ssh2. В ответе должен сработать ваш 100100. Затем перезапустите менеджер (/var/ossec/bin/wazuh-control restart внутри контейнера) и вызовите событие с тестового узла. Оповещение появится в панели. Имя контейнера зависит от версии compose, найдите его в docker ps.


















