Wazuh Container Security - безопасность контейнеров
Wazuh обеспечивает мониторинг безопасности контейнерных сред через модуль Docker listener и интеграцию с аудит-логами Kubernetes. Платформа отслеживает события жизненного цикла контейнеров, действия пользователей с Docker-ресурсами и изменения в оркестрированных развертываниях. Контейнерная безопасность дополняет классический мониторинг хостовых систем и обеспечивает видимость в динамических средах, где контейнеры создаются и уничтожаются в течение минут.
Модуль Docker Listener
Модуль docker-listener мониторит события Docker-демона: запуск и остановка контейнеров, загрузка образов, выполнение команд внутри контейнеров и другие операции.
Конфигурация
Модуль настраивается в ossec.conf на агенте, установленном на Docker-хосте:
<wodle name="docker-listener">
<interval>10m</interval>
<attempts>5</attempts>
<run_on_start>yes</run_on_start>
<disabled>no</disabled>
</wodle>Параметры конфигурации
| Параметр | По умолчанию | Описание |
|---|---|---|
disabled | no | Включение или отключение модуля (yes/no) |
interval | 1m | Интервал между проверками событий (s/m/h/d) |
attempts | 5 | Количество попыток при сбое подключения |
run_on_start | yes | Запускать при старте службы агента (yes/no) |
Расширенное планирование
<!-- Выполнение в определенное время -->
<wodle name="docker-listener">
<time>00:00</time>
<disabled>no</disabled>
<attempts>3</attempts>
</wodle>
<!-- Выполнение по дням недели -->
<wodle name="docker-listener">
<wday>monday</wday>
<time>06:00</time>
<disabled>no</disabled>
</wodle>Предварительные требования
Для работы модуля необходимо:
- Python 3 установлен на Docker-хосте
- Библиотека Docker SDK для Python:
pip3 install docker - Агент Wazuh имеет доступ к Docker-сокету (
/var/run/docker.sock)
Мониторинг событий Docker
Docker listener отслеживает следующие категории событий:
События контейнеров
| Событие | Описание |
|---|---|
start | Запуск контейнера |
stop | Остановка контейнера |
create | Создание контейнера |
destroy | Удаление контейнера |
pause / unpause | Приостановка и возобновление |
restart | Перезапуск контейнера |
exec_create / exec_start | Выполнение команды внутри контейнера |
die | Аварийная остановка контейнера |
kill | Принудительное завершение |
attach | Подключение к контейнеру |
События образов
| Событие | Описание |
|---|---|
pull | Загрузка образа из реестра |
push | Публикация образа в реестр |
delete | Удаление образа |
tag | Присвоение тега образу |
import | Импорт образа |
События томов и сетей
| Событие | Описание |
|---|---|
volume create / destroy | Создание и удаление томов |
network connect / disconnect | Подключение и отключение сетей |
Пример алерта
При запуске контейнера Wazuh генерирует алерт со следующей структурой:
{
"rule": {
"id": "87903",
"level": 3,
"description": "Docker: Container started"
},
"data": {
"docker": {
"Type": "container",
"Action": "start",
"Actor": {
"Attributes": {
"image": "nginx:latest",
"name": "web-server"
}
}
}
}
}Мониторинг среды выполнения контейнеров
Помимо событий Docker API, Wazuh мониторит процессы и файловую систему внутри контейнеров при развертывании агента непосредственно в контейнере.
Развертывание агента в контейнере
Агент Wazuh может быть развернут как sidecar-контейнер или встроен в образ приложения:
# docker-compose.yml
services:
wazuh-agent:
image: wazuh/wazuh-agent:4.14.3
environment:
- WAZUH_MANAGER=wazuh-manager
- WAZUH_AGENT_NAME=docker-agent-01
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- /var/log:/var/log:ro
restart: unless-stopped
network_mode: hostМониторинг через Dockerfile
Для встраивания агента в контейнер приложения:
FROM ubuntu:22.04
RUN apt-get update && \
apt-get install -y curl apt-transport-https && \
curl -s https://packages.wazuh.com/key/GPG-KEY-WAZUH | gpg --dearmor -o /usr/share/keyrings/wazuh.gpg && \
echo "deb [signed-by=/usr/share/keyrings/wazuh.gpg] https://packages.wazuh.com/4.x/apt/ stable main" > /etc/apt/sources.list.d/wazuh.list && \
apt-get update && \
apt-get install -y wazuh-agent && \
apt-get clean
COPY ossec.conf /var/ossec/etc/ossec.conf
CMD ["/var/ossec/bin/wazuh-control", "start"]Мониторинг логов контейнеров
Для сбора логов из контейнеров настройте localfile на Docker-хосте:
<localfile>
<log_format>json</log_format>
<location>/var/lib/docker/containers/*/*.log</location>
</localfile>Аудит Kubernetes
Wazuh интегрируется с Kubernetes через сбор и анализ аудит-логов кластера. Kubernetes audit log фиксирует все запросы к API-серверу, позволяя отслеживать создание, изменение и удаление ресурсов.
Настройка аудит-политики Kubernetes
Создайте файл политики аудита для Kubernetes API-сервера:
# audit-policy.yaml
apiVersion: audit.k8s.io/v1
kind: Policy
rules:
- level: Metadata
resources:
- group: ""
resources: ["pods", "services", "configmaps", "secrets"]
- level: RequestResponse
resources:
- group: "rbac.authorization.k8s.io"
resources: ["clusterroles", "clusterrolebindings"]
- level: Request
resources:
- group: ""
resources: ["pods/exec", "pods/attach"]Сбор аудит-логов Kubernetes в Wazuh
Настройте пересылку аудит-логов Kubernetes на агент Wazuh:
<localfile>
<log_format>json</log_format>
<location>/var/log/kubernetes/audit/audit.log</location>
</localfile>Критичные события Kubernetes
Wazuh включает правила для обнаружения следующих событий в Kubernetes:
- Создание привилегированных контейнеров
- Изменение ролей RBAC и привязок ролей
- Доступ к секретам кластера
- Выполнение команд через
kubectl exec - Создание контейнеров с монтированием hostPath
- Изменения в сетевых политиках
Правила обнаружения для контейнеров
Wazuh включает набор встроенных правил для контейнерных сред. Примеры пользовательских правил:
Обнаружение привилегированного контейнера
<rule id="100300" level="12">
<if_sid>87901</if_sid>
<field name="docker.Actor.Attributes.Privileged">true</field>
<description>Docker: Privileged container started - $(docker.Actor.Attributes.name)</description>
<mitre>
<id>T1610</id>
</mitre>
<group>container_security,privilege_escalation,</group>
</rule>Обнаружение exec в контейнере
<rule id="100301" level="8">
<if_sid>87903</if_sid>
<field name="docker.Action">exec_start</field>
<description>Docker: Command executed inside container - $(docker.Actor.Attributes.name)</description>
<mitre>
<id>T1609</id>
</mitre>
<group>container_security,command_execution,</group>
</rule>Обнаружение загрузки образа из неизвестного реестра
<rule id="100302" level="10">
<if_sid>87904</if_sid>
<field name="docker.Action">pull</field>
<field name="docker.Actor.Attributes.name" negate="yes">^docker\.io|^registry\.internal</field>
<description>Docker: Image pulled from untrusted registry</description>
<group>container_security,supply_chain,</group>
</rule>Дашборд Docker в Wazuh
Wazuh Dashboard предоставляет специализированный вид для контейнерных событий. Дашборд отображает:
- Хронологию событий контейнеров
- Статистику по типам событий (start, stop, exec)
- Список активных контейнеров
- События безопасности, связанные с контейнерами
- Информацию об образах и их версиях
Доступ к дашборду: Wazuh Dashboard - Modules - Docker Listener.
Подробнее об установке Wazuh: Быстрый старт
Устранение неполадок
Docker listener не собирает события
- Проверьте, что Python 3 и Docker SDK установлены:
pip3 show docker - Убедитесь, что агент имеет доступ к
/var/run/docker.sock - Проверьте права пользователя
wazuhна чтение Docker-сокета - Просмотрите
/var/ossec/logs/ossec.logна наличие ошибок модуля
События Kubernetes не обрабатываются
- Проверьте, что аудит-политика Kubernetes применена к API-серверу
- Убедитесь, что путь к аудит-логу корректен в
<location> - Проверьте формат аудит-лога: должен быть JSON
- Убедитесь, что правила для Kubernetes загружены в Wazuh
Агент в контейнере не подключается к менеджеру
- Проверьте сетевую связность между контейнером и менеджером
- Убедитесь, что переменная
WAZUH_MANAGERуказывает на корректный адрес - Проверьте, что порт 1514 (TCP/UDP) доступен для агента
- При использовании
network_mode: hostпроверьте firewall-правила хоста
Высокий объем событий
- Настройте фильтрацию событий Docker через правила Wazuh
- Увеличьте
<interval>в конфигурации docker-listener - Исключите шумные события (healthcheck, stats) через пользовательские правила
Подробнее о сборе логов: Сбор логов Wazuh
Подробнее об Active Response: Active Response