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

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

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

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

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

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

ПараметрПо умолчаниюОписание
disablednoВключение или отключение модуля (yes/no)
interval1hИнтервал между сканированиями (s/m/h/d)
scan_on_startyesВыполнять сканирование при запуске службы (yes/no)
hardwareyesСбор данных об оборудовании (yes/no)
osyesСбор данных об операционной системе (yes/no)
networkyesСбор сетевой конфигурации (yes/no)
packagesyesСбор данных об установленных пакетах (yes/no)
portsyesМониторинг открытых портов (yes/no)
processesyesИнвентаризация процессов (yes/no)
hotfixesyesПроверка установленных обновлений Windows (yes/no)
usersyesСбор информации об учетных записях (yes/no)
groupsyesСбор информации о группах (yes/no)
servicesyesСбор данных о службах (yes/no)
browser_extensionsyesСбор данных о расширениях браузеров (yes/no)

Атрибут ports all

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

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

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

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

<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-оценкой

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

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

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

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

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

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]'

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

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

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

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

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

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}'

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

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

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

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.

Подробнее об обнаружении уязвимостей: Обнаружение уязвимостей

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

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

  • Проверьте, что <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

Подробнее о сценариях: Сценарии использования Wazuh

Last updated on