# Wazuh Agentless Monitoring - безагентный мониторинг

> Безагентный мониторинг Wazuh 4.14 - SSH-мониторинг маршрутизаторов, коммутаторов, legacy-систем, проверка целостности и отслеживание изменений

Source: https://opennix.org/docs/wazuh/capabilities/wazuh-agentless-monitoring/


Безагентный мониторинг в Wazuh позволяет контролировать устройства и системы без установки агента. Wazuh подключается к конечной точке по протоколу SSH, выполняет проверки и передает результаты на сервер для анализа. Этот подход применяется для мониторинга сетевого оборудования (маршрутизаторы, коммутаторы, межсетевые экраны), legacy-систем Unix/BSD и других устройств, на которые невозможно или нецелесообразно устанавливать программное обеспечение.

## Принцип работы

Безагентный мониторинг функционирует следующим образом:

1. Сервер Wazuh устанавливает SSH-соединение с целевым устройством
2. Выполняет заданную проверку (контрольная сумма файлов, вывод команды)
3. Сравнивает результат с предыдущим (при использовании `periodic_diff`)
4. Передает данные в движок анализа для сопоставления с правилами
5. Генерирует алерт при обнаружении изменений или аномалий

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

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

### Настройка SSH-аутентификации

Для безагентного мониторинга необходима аутентификация по SSH-ключу. Создайте ключевую пару и распространите открытый ключ:

```bash
# Генерация ключа (на сервере Wazuh)
sudo -u wazuh ssh-keygen -t ed25519 -f /var/ossec/.ssh/id_ed25519 -N ""

# Копирование открытого ключа на целевое устройство
sudo -u wazuh ssh-copy-id -i /var/ossec/.ssh/id_ed25519.pub admin@192.168.1.1
```

### Регистрация хоста

Зарегистрируйте устройство для безагентного мониторинга:

```bash
/var/ossec/agentless/register_host.sh add admin@192.168.1.1 NOPASS
```

Параметр `NOPASS` указывает на аутентификацию по ключу. При использовании пароля укажите его вместо `NOPASS`.

### Включение безагентного мониторинга

В файле `ossec.conf` на сервере Wazuh включите модуль:

```xml
<agentless>
  <type>ssh_integrity_check_linux</type>
  <frequency>3600</frequency>
  <host>admin@192.168.1.1</host>
  <state>periodic_diff</state>
  <arguments>/etc /usr/bin /usr/sbin</arguments>
</agentless>
```

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

### Структура блока agentless

```xml
<agentless>
  <type>check_type</type>
  <frequency>seconds</frequency>
  <host>user@hostname</host>
  <state>periodic|periodic_diff</state>
  <arguments>arguments</arguments>
</agentless>
```

### Параметры конфигурации

| Параметр | Описание |
|----------|----------|
| `type` | Тип проверки (см. поддерживаемые типы ниже) |
| `frequency` | Интервал между проверками в секундах |
| `host` | Учетные данные и адрес: `user@hostname` |
| `state` | Режим анализа: `periodic` или `periodic_diff` |
| `arguments` | Аргументы проверки (пути, команды) |

### Параметр state

- `periodic` - результат проверки анализируется правилами при каждом выполнении
- `periodic_diff` - текущий результат сравнивается с предыдущим, алерт генерируется при обнаружении различий

## Поддерживаемые типы проверок

### ssh_integrity_check_linux

Проверка целостности файлов на Linux-системах. Вычисляет контрольные суммы MD5 для указанных файлов и директорий.

```xml
<agentless>
  <type>ssh_integrity_check_linux</type>
  <frequency>3600</frequency>
  <host>admin@10.0.0.10</host>
  <state>periodic_diff</state>
  <arguments>/etc /usr/bin /usr/sbin</arguments>
</agentless>
```

При режиме `periodic_diff` Wazuh генерирует алерт при изменении контрольной суммы любого файла в указанных директориях.

### ssh_integrity_check_bsd

Аналогичная проверка для BSD-систем (FreeBSD, OpenBSD, NetBSD). Использует команды, совместимые с BSD-утилитами.

```xml
<agentless>
  <type>ssh_integrity_check_bsd</type>
  <frequency>3600</frequency>
  <host>admin@10.0.0.20</host>
  <state>periodic_diff</state>
  <arguments>/etc /usr/local/bin</arguments>
</agentless>
```

### ssh_generic_diff

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

```xml
<agentless>
  <type>ssh_generic_diff</type>
  <frequency>1800</frequency>
  <host>admin@10.0.0.30</host>
  <state>periodic_diff</state>
  <arguments>netstat -tulnp</arguments>
</agentless>
```

Дополнительные примеры:

```xml
<!-- Мониторинг таблицы маршрутизации -->
<agentless>
  <type>ssh_generic_diff</type>
  <frequency>600</frequency>
  <host>admin@router-core.local</host>
  <state>periodic_diff</state>
  <arguments>ip route show</arguments>
</agentless>

<!-- Мониторинг ARP-таблицы -->
<agentless>
  <type>ssh_generic_diff</type>
  <frequency>300</frequency>
  <host>admin@switch-access.local</host>
  <state>periodic_diff</state>
  <arguments>arp -a</arguments>
</agentless>

<!-- Мониторинг пользователей -->
<agentless>
  <type>ssh_generic_diff</type>
  <frequency>3600</frequency>
  <host>admin@legacy-unix.local</host>
  <state>periodic_diff</state>
  <arguments>cat /etc/passwd</arguments>
</agentless>
```

### ssh_pixconfig_diff

Специализированная проверка для маршрутизаторов Cisco PIX/ASA. Отслеживает изменения в конфигурации устройства.

```xml
<agentless>
  <type>ssh_pixconfig_diff</type>
  <frequency>3600</frequency>
  <host>enable_password:admin@10.0.0.1</host>
  <state>periodic_diff</state>
</agentless>
```

Для Cisco-устройств формат `host` включает enable-пароль перед именем пользователя: `enable_password:user@host`.

## Практические сценарии

### Мониторинг маршрутизаторов

Отслеживание изменений конфигурации и таблицы маршрутизации сетевых маршрутизаторов:

```xml
<!-- Конфигурация маршрутизатора -->
<agentless>
  <type>ssh_generic_diff</type>
  <frequency>1800</frequency>
  <host>admin@router-01.local</host>
  <state>periodic_diff</state>
  <arguments>show running-config</arguments>
</agentless>

<!-- Таблица маршрутизации -->
<agentless>
  <type>ssh_generic_diff</type>
  <frequency>600</frequency>
  <host>admin@router-01.local</host>
  <state>periodic_diff</state>
  <arguments>show ip route</arguments>
</agentless>
```

### Мониторинг коммутаторов

```xml
<!-- Состояние портов -->
<agentless>
  <type>ssh_generic_diff</type>
  <frequency>900</frequency>
  <host>admin@switch-01.local</host>
  <state>periodic_diff</state>
  <arguments>show interfaces status</arguments>
</agentless>

<!-- MAC-адресная таблица -->
<agentless>
  <type>ssh_generic_diff</type>
  <frequency>300</frequency>
  <host>admin@switch-01.local</host>
  <state>periodic_diff</state>
  <arguments>show mac address-table</arguments>
</agentless>
```

### Мониторинг legacy Unix-систем

Для систем, на которые невозможно установить агент (устаревшие версии ОС, ограниченные ресурсы):

```xml
<!-- Проверка целостности системных файлов -->
<agentless>
  <type>ssh_integrity_check_linux</type>
  <frequency>7200</frequency>
  <host>root@legacy-solaris.local</host>
  <state>periodic_diff</state>
  <arguments>/etc /usr/local/etc</arguments>
</agentless>

<!-- Мониторинг запущенных процессов -->
<agentless>
  <type>ssh_generic_diff</type>
  <frequency>600</frequency>
  <host>root@legacy-solaris.local</host>
  <state>periodic_diff</state>
  <arguments>ps -ef</arguments>
</agentless>

<!-- Мониторинг crontab -->
<agentless>
  <type>ssh_generic_diff</type>
  <frequency>3600</frequency>
  <host>root@legacy-solaris.local</host>
  <state>periodic_diff</state>
  <arguments>crontab -l 2>/dev/null; cat /etc/crontab</arguments>
</agentless>
```

### Мониторинг межсетевых экранов

```xml
<agentless>
  <type>ssh_generic_diff</type>
  <frequency>1800</frequency>
  <host>admin@firewall.local</host>
  <state>periodic_diff</state>
  <arguments>iptables -L -n</arguments>
</agentless>
```

## Мониторинг нескольких устройств

Для каждого устройства создается отдельный блок `<agentless>`. Множественные проверки одного устройства также допускаются:

```xml
<!-- Устройство 1: маршрутизатор -->
<agentless>
  <type>ssh_generic_diff</type>
  <frequency>1800</frequency>
  <host>admin@10.0.0.1</host>
  <state>periodic_diff</state>
  <arguments>show running-config</arguments>
</agentless>

<!-- Устройство 2: коммутатор -->
<agentless>
  <type>ssh_generic_diff</type>
  <frequency>900</frequency>
  <host>admin@10.0.0.2</host>
  <state>periodic_diff</state>
  <arguments>show interfaces status</arguments>
</agentless>

<!-- Устройство 3: сервер Linux -->
<agentless>
  <type>ssh_integrity_check_linux</type>
  <frequency>3600</frequency>
  <host>root@10.0.0.3</host>
  <state>periodic_diff</state>
  <arguments>/etc /usr/bin</arguments>
</agentless>
```

## Ограничения

Безагентный мониторинг имеет ряд ограничений по сравнению с агентным подходом:

| Ограничение | Описание |
|-------------|----------|
| Нет реального времени | Проверки выполняются периодически, минимальный интервал ограничен |
| Нет Active Response | Невозможно выполнить автоматическое реагирование |
| Нет FIM | Мониторинг целостности ограничен контрольными суммами |
| Нет Syscollector | Инвентаризация системы недоступна |
| Нет SCA | Оценка конфигурации безопасности недоступна |
| Зависимость от SSH | Требуется доступ по SSH и предварительная настройка ключей |
| Нагрузка на сервер | Все SSH-соединения инициируются с сервера Wazuh |
| Ограниченная масштабируемость | Большое количество устройств нагружает сервер |

Рекомендация: используйте агентный мониторинг для всех систем, где это возможно. Безагентный мониторинг является резервным вариантом для устройств, не поддерживающих установку агента.

Подробнее о возможностях агента: [Установка агента Wazuh](/docs/wazuh/installation/wazuh-agent-installation/)

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

### SSH-подключение не устанавливается

- Проверьте сетевую доступность устройства: `ping` и `ssh` с сервера Wazuh
- Убедитесь, что SSH-ключ скопирован на целевое устройство
- Проверьте, что пользователь `wazuh` может подключиться: `sudo -u wazuh ssh admin@device`
- Убедитесь, что хост зарегистрирован: проверьте `/var/ossec/agentless/.passlist`
- Проверьте `/var/ossec/logs/ossec.log` на наличие ошибок модуля agentless

### Изменения не обнаруживаются

- Убедитесь, что `<state>` установлено в `periodic_diff`
- Дождитесь минимум двух циклов проверки для формирования базовой линии
- Проверьте, что команда в `<arguments>` возвращает ожидаемый вывод
- Для проверки целостности убедитесь, что указанные пути существуют на целевом устройстве

### Ошибка аутентификации на Cisco

- Проверьте формат `<host>`: `enable_password:user@host`
- Убедитесь, что enable-пароль корректен
- Проверьте, что SSH включен на устройстве Cisco
- Убедитесь, что пользователь имеет привилегии уровня 15

### Высокая нагрузка на сервер Wazuh

- Увеличьте `<frequency>` для снижения частоты проверок
- Распределите проверки по времени, чтобы избежать одновременных подключений
- Сократите количество путей в `<arguments>` для проверок целостности
- Рассмотрите установку агента на устройства, где это возможно

Подробнее об архитектуре: [Архитектура Wazuh](/docs/wazuh/getting-started/wazuh-architecture/)

Подробнее о сборе логов: [Сбор логов Wazuh](/docs/wazuh/capabilities/wazuh-log-data-collection/)

