# Wazuh Container Security - безопасность контейнеров

> Мониторинг безопасности Docker и Kubernetes в Wazuh 4.14 - docker-listener, события контейнеров, аудит Kubernetes, развертывание агента в контейнерах

Source: https://opennix.org/docs/wazuh/capabilities/wazuh-container-security/


Wazuh обеспечивает мониторинг безопасности контейнерных сред через модуль Docker listener и интеграцию с аудит-логами Kubernetes. Платформа отслеживает события жизненного цикла контейнеров, действия пользователей с Docker-ресурсами и изменения в оркестрированных развертываниях. Контейнерная безопасность дополняет классический мониторинг хостовых систем и обеспечивает видимость в динамических средах, где контейнеры создаются и уничтожаются в течение минут.

## Модуль Docker Listener

Модуль `docker-listener` мониторит события Docker-демона: запуск и остановка контейнеров, загрузка образов, выполнение команд внутри контейнеров и другие операции.

### Конфигурация

Модуль настраивается в `ossec.conf` на агенте, установленном на Docker-хосте:

```xml
<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) |

### Расширенное планирование

```xml
<!-- Выполнение в определенное время -->
<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>
```

### Предварительные требования

Для работы модуля необходимо:

1. Python 3 установлен на Docker-хосте
2. Библиотека Docker SDK для Python: `pip3 install docker`
3. Агент 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 генерирует алерт со следующей структурой:

```json
{
  "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-контейнер или встроен в образ приложения:

```yaml
# 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

Для встраивания агента в контейнер приложения:

```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-хосте:

```xml
<localfile>
  <log_format>json</log_format>
  <location>/var/lib/docker/containers/*/*.log</location>
</localfile>
```

## Аудит Kubernetes

Wazuh интегрируется с Kubernetes через сбор и анализ аудит-логов кластера. Kubernetes audit log фиксирует все запросы к API-серверу, позволяя отслеживать создание, изменение и удаление ресурсов.

### Настройка аудит-политики Kubernetes

Создайте файл политики аудита для Kubernetes API-сервера:

```yaml
# 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:

```xml
<localfile>
  <log_format>json</log_format>
  <location>/var/log/kubernetes/audit/audit.log</location>
</localfile>
```

### Критичные события Kubernetes

Wazuh включает правила для обнаружения следующих событий в Kubernetes:

- Создание привилегированных контейнеров
- Изменение ролей RBAC и привязок ролей
- Доступ к секретам кластера
- Выполнение команд через `kubectl exec`
- Создание контейнеров с монтированием hostPath
- Изменения в сетевых политиках

## Правила обнаружения для контейнеров

Wazuh включает набор встроенных правил для контейнерных сред. Примеры пользовательских правил:

### Обнаружение привилегированного контейнера

```xml
<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 в контейнере

```xml
<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>
```

### Обнаружение загрузки образа из неизвестного реестра

```xml
<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: [Быстрый старт](/docs/wazuh/installation/wazuh-quickstart/)

## Устранение неполадок

### 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](/docs/wazuh/capabilities/wazuh-log-data-collection/)

Подробнее об Active Response: [Active Response](/docs/wazuh/capabilities/wazuh-active-response/)

