Обнаружение уязвимостей в Wazuh 4.14
Модуль обнаружения уязвимостей в Wazuh выявляет известные CVE (Common Vulnerabilities and Exposures) в программном обеспечении, установленном на контролируемых системах. Модуль работает в два этапа: компонент syscollector на агенте собирает инвентаризацию установленных пакетов, а модуль vulnerability-detector на сервере сопоставляет эти данные с базами уязвимостей.
Принцип работы
Обнаружение уязвимостей в Wazuh основано на корреляции двух источников данных:
- Инвентаризация ПО (Syscollector) - агент собирает список установленных пакетов, их версии и архитектуру
- Базы уязвимостей - сервер загружает и обновляет фиды из NVD, CISA KEV и вендор-специфичных источников
- Корреляция - сервер сопоставляет версии установленных пакетов с записями CPE/CVE и генерирует алерты
Агент (syscollector) -> Инвентаризация пакетов ->
-> Сервер (vulnerability-detector) -> Корреляция с CVE ->
-> Алерт -> Индексатор -> ДашбордПроцесс сопоставления
Модуль vulnerability-detector выполняет следующие операции:
- Получает данные инвентаризации от агента через syscollector
- Загружает обновления фидов уязвимостей по расписанию
- Для каждого пакета проверяет наличие соответствующих CPE (Common Platform Enumeration) записей
- Сопоставляет CPE с записями CVE в базе уязвимостей
- Сравнивает версию установленного пакета с диапазоном уязвимых версий
- Генерирует алерт с деталями уязвимости (CVE ID, CVSS, описание, затронутый пакет)
Конфигурация vulnerability-detector
Конфигурация на сервере
Модуль настраивается в /var/ossec/etc/ossec.conf на сервере Wazuh:
<vulnerability-detection>
<enabled>yes</enabled>
<index-status>yes</index-status>
<feed-update-interval>60m</feed-update-interval>
</vulnerability-detection>Параметры конфигурации
| Параметр | Описание | По умолчанию |
|---|---|---|
enabled | Включение модуля | yes |
index-status | Индексация статуса уязвимостей | yes |
feed-update-interval | Интервал обновления фидов (минимум 60m) | 60m |
Подключение индексатора
Модуль требует настройки подключения к индексатору для хранения результатов:
<indexer>
<enabled>yes</enabled>
<hosts>
<host>https://127.0.0.1:9200</host>
</hosts>
<ssl>
<certificate_authorities>
<ca>/etc/filebeat/certs/root-ca.pem</ca>
</certificate_authorities>
<certificate>/etc/filebeat/certs/filebeat.pem</certificate>
<key>/etc/filebeat/certs/filebeat-key.pem</key>
</ssl>
</indexer>Автономный режим
Для сред без доступа к интернету Wazuh поддерживает автономный режим с локальным репозиторием:
<vulnerability-detection>
<enabled>yes</enabled>
<index-status>yes</index-status>
<feed-update-interval>60m</feed-update-interval>
<offline-url>file:///var/ossec/var/vuln-feed/</offline-url>
</vulnerability-detection>Автономный репозиторий загружается заранее и размещается на сервере Wazuh.
Провайдеры фидов уязвимостей
Wazuh использует платформу Wazuh CTI для получения данных об уязвимостях. Данные агрегируются из нескольких первичных источников.
Источники данных
| Источник | Описание | Покрытие |
|---|---|---|
| NVD (National Vulnerability Database) | Основная база CVE от NIST | Все платформы |
| Canonical | Уязвимости в пакетах Ubuntu | Ubuntu |
| Red Hat | Уязвимости в RHEL и Fedora | RHEL, CentOS, Fedora |
| Debian | Уязвимости в пакетах Debian | Debian |
| ALAS (Amazon Linux Security Advisories) | Уязвимости Amazon Linux | Amazon Linux 1/2/2023 |
| Microsoft | Обновления безопасности Windows | Windows |
| CISA KEV | Известные эксплуатируемые уязвимости | Все платформы |
| Arch Linux | Уязвимости в Arch пакетах | Arch Linux |
Приоритизация
При наличии информации из нескольких источников Wazuh использует вендор-специфичный фид как приоритетный. Например, для пакета на Ubuntu данные Canonical имеют приоритет над NVD, так как содержат информацию о точных версиях исправленных пакетов в репозитории дистрибутива.
Конфигурация Syscollector
Syscollector - модуль агента, отвечающий за сбор данных инвентаризации. Настраивается в /var/ossec/etc/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>Параметры syscollector
| Параметр | Описание | По умолчанию |
|---|---|---|
disabled | Отключение модуля | no |
interval | Интервал сбора данных | 1h |
scan_on_start | Сканирование при запуске агента | yes |
hardware | Информация об аппаратном обеспечении | yes |
os | Информация об ОС | yes |
network | Сетевые интерфейсы | yes |
packages | Установленные пакеты | yes |
ports | Открытые порты | yes |
processes | Запущенные процессы | yes |
hotfixes | Установленные обновления (Windows) | yes |
Собираемые данные о пакетах
Для каждого пакета syscollector собирает:
- Имя пакета
- Версия
- Архитектура
- Источник (менеджер пакетов)
- Описание
- Дата установки
На Linux данные извлекаются из dpkg (Debian/Ubuntu), rpm (RHEL/CentOS), pacman (Arch). На Windows - из реестра (установленные программы) и базы обновлений.
Уровни критичности
Wazuh использует систему CVSS (Common Vulnerability Scoring System) для классификации уязвимостей:
| CVSS Score | Критичность | Уровень алерта Wazuh |
|---|---|---|
| 0.0 | None | - |
| 0.1 - 3.9 | Low | 5 |
| 4.0 - 6.9 | Medium | 7 |
| 7.0 - 8.9 | High | 10 |
| 9.0 - 10.0 | Critical | 13 |
Алерты уровня 12 и выше активируют уведомления по электронной почте (при настроенном email-нотификаторе).
Примеры алертов
Уязвимость с высокой критичностью
{
"timestamp": "2024-11-20T14:30:00.000+0000",
"rule": {
"level": 10,
"description": "CVE-2024-6387 affects openssh-server",
"id": "23505",
"groups": ["vulnerability-detector"]
},
"agent": {
"id": "003",
"name": "web-server-prod"
},
"data": {
"vulnerability": {
"cve": "CVE-2024-6387",
"title": "RegreSSHion: Remote Code Execution in OpenSSH",
"severity": "High",
"cvss": {
"cvss3": {
"base_score": "8.1",
"vector": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H"
}
},
"package": {
"name": "openssh-server",
"version": "1:8.9p1-3ubuntu0.6",
"architecture": "amd64",
"condition": "Package less than 1:8.9p1-3ubuntu0.10"
},
"reference": "https://nvd.nist.gov/vuln/detail/CVE-2024-6387",
"published": "2024-07-01",
"status": "Active"
}
}
}Критическая уязвимость
{
"rule": {
"level": 13,
"description": "CVE-2021-44228 affects log4j2",
"id": "23505"
},
"data": {
"vulnerability": {
"cve": "CVE-2021-44228",
"title": "Apache Log4j2 Remote Code Execution",
"severity": "Critical",
"cvss": {
"cvss3": {
"base_score": "10.0"
}
},
"package": {
"name": "liblog4j2-java",
"version": "2.14.1-1",
"condition": "Package less than 2.17.1"
},
"status": "Active"
}
}
}Уязвимость с доступным исправлением
{
"data": {
"vulnerability": {
"cve": "CVE-2024-1234",
"severity": "Medium",
"package": {
"name": "nginx",
"version": "1.22.0-1",
"condition": "Package less than 1.22.0-3"
},
"status": "Active",
"remediation": "Upgrade nginx to version 1.22.0-3 or later"
}
}
}Расписание сканирования
Настройка интервала обновления фидов
Параметр feed-update-interval определяет частоту обновления баз уязвимостей. Минимальное значение - 60 минут.
<vulnerability-detection>
<feed-update-interval>60m</feed-update-interval> <!-- Каждый час -->
</vulnerability-detection>Допустимые единицы измерения: s (секунды), m (минуты), h (часы), d (дни).
Настройка интервала syscollector
Интервал сбора инвентаризации настраивается независимо на агенте:
<wodle name="syscollector">
<interval>1h</interval> <!-- Каждый час -->
<scan_on_start>yes</scan_on_start>
</wodle>Рекомендуемые значения:
| Среда | Интервал syscollector | Интервал фидов |
|---|---|---|
| Высококритичная | 30m | 60m |
| Стандартная | 1h | 60m |
| Низкоприоритетная | 12h | 24h |
Дашборд уязвимостей
Дашборд Vulnerability Detection в Wazuh Dashboard предоставляет:
- Сводка - общее количество уязвимостей по уровням критичности
- Топ уязвимых агентов - системы с наибольшим количеством уязвимостей
- Топ CVE - наиболее распространенные уязвимости в инфраструктуре
- Распределение по критичности - диаграмма по CVSS score
- Временная шкала - динамика обнаружения уязвимостей
- Детализация по агенту - список уязвимостей для конкретной системы
- Фильтрация - по агенту, CVE ID, критичности, пакету, статусу
Доступ к дашборду: Wazuh Dashboard - Modules - Vulnerability Detection.
Управление ложными срабатываниями
Списки исключений
Для исключения известных ложных срабатываний используйте правила с уровнем 0:
<rule id="100400" level="0">
<if_sid>23505</if_sid>
<field name="data.vulnerability.cve">CVE-2023-12345</field>
<description>False positive: CVE-2023-12345 not applicable in this configuration.</description>
</rule>Исключение по пакету
<rule id="100401" level="0">
<if_sid>23505</if_sid>
<field name="data.vulnerability.package.name">^libexample$</field>
<description>Suppress vulnerability alerts for libexample (internal package).</description>
</rule>Исключение по агенту
<rule id="100402" level="0">
<if_sid>23505</if_sid>
<field name="agent.name">^test-server-</field>
<description>Suppress vulnerability alerts for test servers.</description>
</rule>Рекомендации по управлению ложными срабатываниями
- Не подавляйте алерты для критических CVE без документированного обоснования
- Периодически пересматривайте список исключений (рекомендуется раз в квартал)
- Используйте поле
descriptionдля документирования причины исключения - Рассмотрите применение компенсирующих мер вместо подавления алерта
Сравнение с альтернативными решениями
| Характеристика | Wazuh VD | Qualys VMDR | Tenable Nessus | OpenVAS |
|---|---|---|---|---|
| Метод сканирования | Агентный (инвентаризация) | Агентный + сетевой | Сетевой + агентный | Сетевой |
| Базы уязвимостей | NVD, вендорные | Проприетарная QID | Проприетарная | NVD, OVAL |
| CVSS scoring | Да (v3) | Да (v3 + TruRisk) | Да (v3 + VPR) | Да (v3) |
| Реальное время | Периодический (по расписанию) | Непрерывный | По запросу / расписание | По запросу |
| Интеграция с SIEM | Встроенная | Через API/Syslog | Через API/Syslog | Через API |
| Лицензия | Open Source (GPLv2) | Коммерческая | Коммерческая | Open Source (GPL) |
| Агентная установка | Wazuh Agent | Cloud Agent | Nessus Agent | Нет |
| Поддержка Windows | Да | Да | Да | Ограниченная |
| Web-приложения | Нет | Да (WAS) | Да | Ограниченная |
| Приоритизация | CVSS + CISA KEV | TruRisk | VPR | CVSS |
Wazuh выделяется агентным подходом без необходимости сетевого сканирования, встроенной интеграцией с SIEM и бесплатной лицензией. Ограничением является отсутствие сканирования веб-приложений и зависимость от публичных баз CVE.
Устранение неполадок
Уязвимости не обнаруживаются
- Проверьте, что модуль vulnerability-detection включен на сервере:
<vulnerability-detection>
<enabled>yes</enabled>
</vulnerability-detection>- Убедитесь, что syscollector включен на агенте:
<wodle name="syscollector">
<disabled>no</disabled>
<packages>yes</packages>
</wodle>- Проверьте статус обновления фидов:
grep vulnerability /var/ossec/logs/ossec.log | tail -20- Убедитесь, что данные инвентаризации доступны:
curl -sk -u admin:password \
"https://localhost:9200/wazuh-states-inventory-*/_search?size=1" \
-H "Content-Type: application/json"Фиды не обновляются
- Проверьте сетевое подключение к серверу обновлений:
curl -s https://cti.wazuh.com/api/v1/ping- Проверьте DNS-разрешение:
nslookup cti.wazuh.com- Для автономного режима убедитесь, что файлы фидов доступны:
ls -la /var/ossec/var/vuln-feed/Слишком много алертов об уязвимостях
Создайте правила исключения для известных ложных срабатываний (см. раздел выше)
Настройте приоритизацию - сфокусируйтесь на критических и высоких уязвимостях:
curl -sk -u admin:password \
"https://localhost:9200/wazuh-states-vulnerabilities-*/_search" \
-H "Content-Type: application/json" \
-d '{"size":0,"aggs":{"severity":{"terms":{"field":"vulnerability.severity"}}}}'- Регулярно обновляйте пакеты для устранения уязвимостей.
Syscollector не собирает данные
- Проверьте статус модуля:
/var/ossec/bin/wazuh-control status | grep modulesd- Убедитесь, что менеджер пакетов доступен:
# Debian/Ubuntu
dpkg -l | head -5
# RHEL/CentOS
rpm -qa | head -5- Проверьте логи агента:
grep syscollector /var/ossec/logs/ossec.log | tail -20Высокая нагрузка при сканировании
- Увеличьте интервал syscollector:
<wodle name="syscollector">
<interval>12h</interval>
</wodle>- Отключите ненужные модули сбора:
<wodle name="syscollector">
<hardware>no</hardware>
<processes>no</processes>
<ports>no</ports>
</wodle>- Оставьте только критически необходимые данные:
packagesиhotfixes.
Связанные разделы
- Мониторинг целостности файлов - FIM обнаруживает изменения, vulnerability detection выявляет уязвимости в установленном ПО
- Оценка конфигурации безопасности - SCA проверяет конфигурации, дополняя данные об уязвимостях
- Компоненты Wazuh - роли агента и сервера в процессе обнаружения уязвимостей