# Wazuh System Inventory - инвентаризация системы

> Настройка модуля Syscollector в Wazuh 4.14 - инвентаризация оборудования, ОС, пакетов, портов, процессов, сетевых интерфейсов и API-запросы к данным

Source: https://opennix.org/docs/wazuh/capabilities/wazuh-system-inventory/


Модуль Syscollector в Wazuh выполняет инвентаризацию конечных точек - собирает данные об оборудовании, операционной системе, установленных пакетах, сетевых интерфейсах, открытых портах, запущенных процессах и учетных записях. Эти данные используются модулем Vulnerability Detector для сопоставления установленного ПО с базами известных уязвимостей, а также для формирования отчетов о состоянии IT-инфраструктуры. Syscollector работает на всех поддерживаемых платформах: Linux, Windows и macOS.

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

Модуль настраивается через блок `<wodle name="syscollector">` в файле `ossec.conf` на агенте:

```xml
<wodle name="syscollector">
  <disabled>no</disabled>
  <interval>1h</interval>
  <scan_on_start>yes</scan_on_start>
  <hardware>yes</hardware>
  <os>yes</os>
  <network>yes</network>
  <packages>yes</packages>
  <ports all="no">yes</ports>
  <processes>yes</processes>
  <hotfixes>yes</hotfixes>
</wodle>
```

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

| Параметр | По умолчанию | Описание |
|----------|-------------|----------|
| `disabled` | no | Включение или отключение модуля (yes/no) |
| `interval` | 1h | Интервал между сканированиями (s/m/h/d) |
| `scan_on_start` | yes | Выполнять сканирование при запуске службы (yes/no) |
| `hardware` | yes | Сбор данных об оборудовании (yes/no) |
| `os` | yes | Сбор данных об операционной системе (yes/no) |
| `network` | yes | Сбор сетевой конфигурации (yes/no) |
| `packages` | yes | Сбор данных об установленных пакетах (yes/no) |
| `ports` | yes | Мониторинг открытых портов (yes/no) |
| `processes` | yes | Инвентаризация процессов (yes/no) |
| `hotfixes` | yes | Проверка установленных обновлений Windows (yes/no) |
| `users` | yes | Сбор информации об учетных записях (yes/no) |
| `groups` | yes | Сбор информации о группах (yes/no) |
| `services` | yes | Сбор данных о службах (yes/no) |
| `browser_extensions` | yes | Сбор данных о расширениях браузеров (yes/no) |

### Атрибут ports all

Параметр `<ports all="no">yes</ports>` определяет, какие порты включать в отчет:

- `all="no"` - только слушающие (LISTEN) порты
- `all="yes"` - все порты, включая установленные соединения

### Синхронизация данных

Syscollector синхронизирует инвентарные данные с менеджером Wazuh. Параметр `max_eps` контролирует скорость передачи:

```xml
<wodle name="syscollector">
  <disabled>no</disabled>
  <interval>1h</interval>
  <synchronization>
    <max_eps>10</max_eps>
  </synchronization>
</wodle>
```

Значение `max_eps` (events per second) ограничивает нагрузку на канал связи между агентом и менеджером. Допустимый диапазон: 0 - 1000000.

## Типы собираемых данных

### Оборудование (hardware)

- Модель и производитель процессора
- Количество ядер CPU
- Объем оперативной памяти (общий и свободный)
- Серийный номер системной платы
- Тактовая частота процессора

### Операционная система (os)

- Название и версия ОС
- Версия ядра
- Архитектура (x86_64, ARM)
- Имя хоста
- Время работы (uptime)
- Версия сборки

### Установленные пакеты (packages)

- Имя пакета и версия
- Архитектура пакета
- Поставщик (vendor)
- Описание
- Дата установки
- Менеджер пакетов (apt, yum, pacman, MSI)

На Windows дополнительно собираются данные из реестра об установленных приложениях.

### Сетевые интерфейсы (network)

- Имя интерфейса
- IP-адреса (IPv4 и IPv6)
- MAC-адрес
- Маска подсети
- Шлюз по умолчанию
- MTU
- Состояние интерфейса (up/down)

### Открытые порты (ports)

- Номер порта
- Протокол (TCP/UDP)
- Локальный и удаленный адрес
- Состояние соединения
- PID связанного процесса

### Запущенные процессы (processes)

- PID и PPID
- Имя процесса
- Командная строка
- Пользователь
- Потребление CPU и памяти
- Приоритет (nice)

### Службы (services)

- Имя службы
- Статус (running, stopped)
- Тип запуска (automatic, manual, disabled)
- PID процесса службы

### Пользователи и группы

- Имя пользователя и UID
- Домашняя директория
- Оболочка входа
- Группы пользователя

### Обновления Windows (hotfixes)

- KB-номер обновления
- Дата установки

### Расширения браузеров

- Название расширения
- Версия
- Браузер (Chrome, Firefox, Edge)
- Описание

## Дашборд инвентаризации

Wazuh Dashboard предоставляет интерфейс для просмотра инвентарных данных каждого агента. Данные организованы по вкладкам:

1. **Overview** - сводная информация о системе
2. **Hardware** - характеристики оборудования
3. **Packages** - список установленных пакетов
4. **Processes** - запущенные процессы
5. **Ports** - открытые порты
6. **Network** - сетевые интерфейсы

Для доступа: **Wazuh Dashboard - Agents - (выберите агента) - Inventory data**.

## Инвентаризация и сопоставление уязвимостей

Данные Syscollector являются входными для модуля Vulnerability Detector. Процесс сопоставления:

1. Syscollector собирает список установленных пакетов и их версий
2. Vulnerability Detector загружает базы уязвимостей (NVD, RHEL, Ubuntu, Debian)
3. Каждый пакет сопоставляется с записями CVE
4. При обнаружении уязвимого пакета генерируется алерт с CVSS-оценкой

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

```xml
<wodle name="syscollector">
  <disabled>no</disabled>
  <interval>1h</interval>
  <packages>yes</packages>
  <os>yes</os>
  <hotfixes>yes</hotfixes>
</wodle>
```

## API-запросы к данным инвентаризации

Wazuh REST API предоставляет эндпоинты для программного доступа к инвентарным данным.

### Получение информации об ОС

```bash
TOKEN=$(curl -sk -u wazuh-wui:password \
  -X POST "https://localhost:55000/security/user/authenticate?raw=true")

curl -sk -H "Authorization: Bearer $TOKEN" \
  "https://localhost:55000/syscollector/001/os" | jq '.data.affected_items[0]'
```

### Получение списка пакетов

```bash
curl -sk -H "Authorization: Bearer $TOKEN" \
  "https://localhost:55000/syscollector/001/packages?limit=10" \
  | jq '.data.affected_items[] | {name, version, architecture}'
```

### Получение открытых портов

```bash
curl -sk -H "Authorization: Bearer $TOKEN" \
  "https://localhost:55000/syscollector/001/ports?state=listening" \
  | jq '.data.affected_items[] | {local_port: .local.port, protocol, pid}'
```

### Получение запущенных процессов

```bash
curl -sk -H "Authorization: Bearer $TOKEN" \
  "https://localhost:55000/syscollector/001/processes?limit=20&sort=-resident_size" \
  | jq '.data.affected_items[] | {pid, name, cmd, resident_size}'
```

### Получение сетевых интерфейсов

```bash
curl -sk -H "Authorization: Bearer $TOKEN" \
  "https://localhost:55000/syscollector/001/netiface" \
  | jq '.data.affected_items[] | {name, mac, state, mtu}'
```

### Получение оборудования

```bash
curl -sk -H "Authorization: Bearer $TOKEN" \
  "https://localhost:55000/syscollector/001/hardware" \
  | jq '.data.affected_items[0] | {cpu_name: .cpu.name, cpu_cores: .cpu.cores, ram_total: .ram.total}'
```

## Отчеты IT Hygiene

Wazuh формирует два типа отчетов на основе инвентарных данных:

- **IT Hygiene Report** - комплексный отчет о состоянии инфраструктуры, включающий все типы собранных данных
- **Property-Specific Report** - отчет по конкретному типу данных (например, только пакеты или только порты)

Отчеты доступны через Wazuh Dashboard и могут быть экспортированы в формате CSV.

Подробнее об обнаружении уязвимостей: [Обнаружение уязвимостей](/docs/wazuh/capabilities/wazuh-vulnerability-detection/)

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

### Инвентарные данные не обновляются

- Проверьте, что `<disabled>` установлено в `no`
- Убедитесь, что `<interval>` не слишком велик для ваших требований
- Проверьте `/var/ossec/logs/ossec.log` на наличие ошибок Syscollector
- Убедитесь, что агент подключен к менеджеру: статус `active` в списке агентов

### Пакеты не отображаются

- Проверьте, что `<packages>yes</packages>` включено в конфигурации
- На Linux убедитесь, что менеджер пакетов (dpkg, rpm) доступен
- Дождитесь завершения полного цикла сканирования (проверьте `<interval>`)

### Высокая нагрузка при сканировании

- Увеличьте `<interval>` для снижения частоты сканирования
- Отключите ненужные типы данных (например, `<browser_extensions>no</browser_extensions>`)
- Уменьшите `<max_eps>` в блоке синхронизации
- Установите `<scan_on_start>no</scan_on_start>` для предотвращения нагрузки при запуске

### API возвращает пустые данные

- Убедитесь, что агент выполнил хотя бы одно сканирование
- Проверьте ID агента в запросе
- Убедитесь, что JWT-токен не истек
- Проверьте, что запрашиваемый тип данных включен в конфигурации агента

Подробнее о компонентах: [Компоненты Wazuh](/docs/wazuh/getting-started/wazuh-components/)

Подробнее о сценариях: [Сценарии использования Wazuh](/docs/wazuh/getting-started/wazuh-use-cases/)

