Настройка Wazuh Dashboard - конфигурация и модули
Wazuh Dashboard - веб-интерфейс платформы, построенный на базе OpenSearch Dashboards. Через него аналитики работают с алертами безопасности, просматривают уязвимости, отслеживают состояние агентов и формируют отчеты. Правильная настройка Dashboard определяет удобство повседневной работы с SIEM - от скорости загрузки страниц до доступности нужных модулей и корректной работы SSO. В этом руководстве рассмотрены ключевые конфигурационные файлы, встроенные модули, создание кастомных визуализаций и решение типовых проблем.
Конфигурация opensearch_dashboards.yml
Основной файл конфигурации OpenSearch Dashboards расположен по пути /etc/wazuh-dashboard/opensearch_dashboards.yml. Он определяет сетевые настройки, подключение к Indexer и параметры TLS.
Ключевые параметры
# Сетевой интерфейс для прослушивания
# 0.0.0.0 - все интерфейсы, 127.0.0.1 - только localhost
server.host: 0.0.0.0
# Порт веб-интерфейса (по умолчанию 443)
server.port: 443
# Адреса узлов Wazuh Indexer
opensearch.hosts:
- https://192.168.1.10:9200
- https://192.168.1.11:9200
# Учетные данные для подключения к Indexer
opensearch.username: kibanaserver
opensearch.password: <KIBANASERVER_PASSWORD>
# TLS-сертификаты для Dashboard
server.ssl.enabled: true
server.ssl.certificate: /etc/wazuh-dashboard/certs/dashboard.pem
server.ssl.key: /etc/wazuh-dashboard/certs/dashboard-key.pem
# Корневой сертификат CA для проверки Indexer
opensearch.ssl.certificateAuthorities:
- /etc/wazuh-dashboard/certs/root-ca.pem
# Проверка сертификата Indexer
opensearch.ssl.verificationMode: full
# Базовый путь (при использовании reverse proxy)
# server.basePath: "/wazuh"
# server.rewriteBasePath: true
# Логирование
logging.dest: /var/log/wazuh-dashboard/opensearch-dashboards.log
logging.verbose: falseНастройка для кластера Indexer
При наличии нескольких узлов Indexer укажите все адреса в opensearch.hosts. Dashboard будет автоматически распределять запросы между узлами:
opensearch.hosts:
- https://indexer-node1:9200
- https://indexer-node2:9200
- https://indexer-node3:9200Таймауты подключения
# Таймаут подключения к Indexer (мс)
opensearch.requestTimeout: 30000
# Таймаут пинга для проверки доступности
opensearch.pingTimeout: 30000
# Интервал проверки состояния кластера
opensearch.healthCheck.delay: 2500Конфигурация Wazuh Plugin (wazuh.yml)
Файл /usr/share/wazuh-dashboard/data/wazuh/config/wazuh.yml содержит настройки плагина Wazuh для Dashboard.
Подключение к Wazuh API
hosts:
- production:
url: https://192.168.1.5
port: 55000
username: wazuh-wui
password: <WUI_PASSWORD>
run_as: false
- staging:
url: https://10.0.0.5
port: 55000
username: wazuh-wui
password: <WUI_PASSWORD>
run_as: falseПри настройке нескольких хостов API пользователь может переключаться между ними в интерфейсе Dashboard через меню Management - API Configuration.
Параметры мониторинга
# Мониторинг статусов агентов
wazuh.monitoring.enabled: true
wazuh.monitoring.frequency: 900
wazuh.monitoring.pattern: wazuh-monitoring-*
wazuh.monitoring.creation: w
# Проверка состояния при загрузке
checks.pattern: true
checks.template: true
checks.api: true
checks.setup: true
checks.fields: trueПараметры индексных паттернов
# Паттерн алертов по умолчанию
pattern: wazuh-alerts-*
# Индекс по умолчанию для Wazuh
# Используется при создании визуализаций
ip.selector: true
ip.ignore:
- wazuh-monitoring-*
- wazuh-statistics-*Модули Dashboard
Wazuh Dashboard включает специализированные модули для различных аспектов мониторинга безопасности.
Security Events
Центральный модуль для работы с алертами. Предоставляет:
- Временная шкала алертов с фильтрацией по уровню, группе, агенту
- Детальный просмотр каждого алерта с декодированными полями
- Экспорт в CSV для внешнего анализа
- Поиск с использованием WQL (Wazuh Query Language)
Фильтрация WQL поддерживает следующий синтаксис:
rule.level > 10 AND agent.name = "web-server-01"
rule.groups : "authentication" AND NOT rule.level < 5
data.srcip : "192.168.*"Integrity Monitoring (FIM)
Отслеживание изменений файловой системы:
- Добавленные, измененные и удаленные файлы
- Изменения разрешений и владельцев
- Diff - сравнение содержимого до и после изменения
- Фильтрация по агенту, пути, типу события
Vulnerabilities
Управление уязвимостями на конечных точках:
- Список обнаруженных CVE с указанием критичности (CVSS)
- Фильтрация по агенту, пакету, критичности
- Связь с базами NVD и vendor-specific advisory
- Статистика по количеству уязвимостей на агент
Regulatory Compliance
Маппинг алертов на требования стандартов:
- PCI DSS - требования стандарта индустрии платежных карт
- HIPAA - стандарт защиты медицинских данных
- NIST 800-53 - каталог контролей безопасности
- GDPR - европейский регламент защиты персональных данных
- TSC (SOC 2) - критерии Trust Services
Каждый стандарт имеет отдельные дашборды с маппингом алертов на конкретные контроли.
Security Configuration Assessment (SCA)
Аудит конфигурации систем:
- Результаты проверок по CIS Benchmarks
- Статус каждой проверки: passed, failed, not applicable
- Процент соответствия по каждому профилю
- Подробное описание каждого контроля с рекомендациями
Agents
Управление и мониторинг агентов:
- Список агентов со статусами (Active, Disconnected, Never connected, Pending)
- Детальная информация по каждому агенту: ОС, версия, группы, IP
- Инвентаризация: пакеты, процессы, порты, сетевые интерфейсы
- История подключений
Management
Административные функции:
- Управление правилами и декодерами
- Управление группами агентов
- Конфигурация CDB-списков
- Настройка API-подключений
- Логи менеджера
- Статистика и кластер
Кастомные дашборды и визуализации
Создание индексного паттерна
Перед созданием визуализаций необходимо настроить индексный паттерн:
- Перейдите в OpenSearch Dashboards - Stack Management - Index Patterns
- Нажмите Create index pattern
- Введите паттерн:
wazuh-alerts-* - Выберите поле времени:
timestamp - Нажмите Create index pattern
Создание визуализации
- Перейдите в OpenSearch Dashboards - Visualize
- Выберите тип визуализации (Area, Bar, Pie, Line, Data Table, Metric, Gauge)
- Выберите индексный паттерн
wazuh-alerts-* - Настройте агрегации и метрики
Пример конфигурации для круговой диаграммы топ-10 правил:
- Metric: Count
- Buckets - Split Slices: Terms, field:
rule.description.keyword, size: 10 - Сохраните визуализацию
Создание дашборда
- Перейдите в OpenSearch Dashboards - Dashboard
- Нажмите Create new dashboard
- Добавьте визуализации через Add panel
- Настройте расположение и размер панелей
- Сохраните дашборд
Saved Objects
Визуализации и дашборды хранятся как Saved Objects. Для экспорта и импорта:
- Перейдите в Stack Management - Saved Objects
- Выберите объекты для экспорта
- Нажмите Export - будет создан NDJSON-файл
- Для импорта используйте кнопку Import и загрузите NDJSON
Экспортированные объекты можно версионировать в Git и развертывать на других инстансах Dashboard.
Отчеты (Reporting)
Генерация PDF/CSV
Wazuh Dashboard поддерживает создание отчетов в формате PDF и CSV:
- Откройте нужный модуль (Security Events, Vulnerabilities и др.)
- Настройте фильтры и временной диапазон
- Нажмите Generate report в правом верхнем углу
- Выберите формат: PDF или CSV
- Отчет будет доступен в разделе Management - Reporting
Параметры отчетов
Отчеты включают:
- Заголовок с временным диапазоном и примененными фильтрами
- Таблицы алертов с ключевыми полями
- Графики и визуализации из текущего представления
- Общую статистику по модулю
Автоматические отчеты
Для настройки периодической генерации отчетов используйте Reporting plugin OpenSearch Dashboards:
- Перейдите в OpenSearch Dashboards - Reporting
- Нажмите Create report definition
- Настройте:
- Report source: Dashboard или Visualization
- Формат: PDF или CSV
- Schedule: cron-выражение (например,
0 8 * * 1- каждый понедельник в 8:00)
- Опционально настройте получателей через Notification channels
Мультитенантность
Мультитенантность позволяет изолировать дашборды, визуализации и индексные паттерны для разных команд или подразделений.
Включение мультитенантности
В файле /etc/wazuh-indexer/opensearch-security/config.yml:
config:
dynamic:
kibana:
multitenancy_enabled: true
server_username: kibanaserver
index: .kibanaСоздание тенантов
Через OpenSearch Dashboards Security plugin:
- Перейдите в Security - Tenants
- Нажмите Create tenant
- Укажите имя и описание
Через API:
curl -sk -u admin:$PASSWORD \
-XPUT "https://localhost:9200/_plugins/_security/api/tenants/soc-team" \
-H "Content-Type: application/json" \
-d '{ "description": "SOC team workspace" }'Назначение тенантов ролям
curl -sk -u admin:$PASSWORD \
-XPUT "https://localhost:9200/_plugins/_security/api/rolesmapping/soc_analyst" \
-H "Content-Type: application/json" \
-d '{
"backend_roles": ["soc-analysts"],
"hosts": [],
"users": ["analyst1", "analyst2"],
"and_backend_roles": []
}'Переключение между тенантами
Пользователь может переключать тенант через меню пользователя в правом верхнем углу Dashboard - Switch Tenants. Каждый тенант содержит свой набор дашбордов и визуализаций.
Кастомный брендинг
Логотип и заголовок
В файле opensearch_dashboards.yml:
# Логотип на странице входа
opensearch_dashboards.branding.logo.defaultUrl: "/ui/custom-logo.svg"
# Логотип в боковой панели
opensearch_dashboards.branding.mark.defaultUrl: "/ui/custom-mark.svg"
# Заголовок приложения
opensearch_dashboards.branding.applicationTitle: "Security Operations Center"
# Экран загрузки
opensearch_dashboards.branding.loadingLogo.defaultUrl: "/ui/custom-loading.svg"
# Иконка favicon
opensearch_dashboards.branding.faviconUrl: "/ui/custom-favicon.ico"Размещение файлов
Файлы логотипов размещаются в директории /usr/share/wazuh-dashboard/plugins/wazuh/public/assets/ или указываются как URL внешнего ресурса.
Кастомный футер
Для добавления кастомного текста в подвал страницы отредактируйте шаблон Dashboard или используйте CSS-инъекцию через opensearch_dashboards.yml:
opensearch_dashboards.branding.useExpandedHeader: falseИнтеграция SSO (SAML/OIDC)
SAML-аутентификация
Конфигурация в /etc/wazuh-indexer/opensearch-security/config.yml:
config:
dynamic:
authc:
saml_auth_domain:
http_enabled: true
transport_enabled: false
order: 1
http_authenticator:
type: saml
challenge: true
config:
idp:
metadata_url: "https://idp.example.com/metadata"
entity_id: "urn:example:idp"
sp:
entity_id: "https://wazuh-dashboard.example.com"
kibana_url: "https://wazuh-dashboard.example.com"
subject_key: "NameID"
roles_key: "Role"
exchange_key: "<32_CHAR_SECRET>"
authentication_backend:
type: noopВ opensearch_dashboards.yml добавьте:
opensearch_security.auth.type: "saml"
server.xsrf.allowlist:
- "/_opendistro/_security/saml/acs"
- "/_opendistro/_security/saml/acs/idpinitiated"
- "/_opendistro/_security/saml/logout"OIDC-аутентификация
config:
dynamic:
authc:
oidc_auth_domain:
http_enabled: true
transport_enabled: false
order: 1
http_authenticator:
type: openid
challenge: false
config:
openid_connect_url: "https://idp.example.com/.well-known/openid-configuration"
subject_key: "preferred_username"
roles_key: "roles"
authentication_backend:
type: noopВ opensearch_dashboards.yml:
opensearch_security.auth.type: "openid"
opensearch_security.openid.connect_url: "https://idp.example.com/.well-known/openid-configuration"
opensearch_security.openid.client_id: "wazuh-dashboard"
opensearch_security.openid.client_secret: "<CLIENT_SECRET>"Применение конфигурации SSO
После изменения config.yml необходимо применить настройки:
cd /usr/share/wazuh-indexer/plugins/opensearch-security/tools/
./securityadmin.sh \
-f /etc/wazuh-indexer/opensearch-security/config.yml \
-icl -nhnv \
-cacert /etc/wazuh-indexer/certs/root-ca.pem \
-cert /etc/wazuh-indexer/certs/admin.pem \
-key /etc/wazuh-indexer/certs/admin-key.pem \
-h localhostУстранение неполадок
Пустая страница после входа
Причины и решения:
- Некорректный сертификат: проверьте, что
server.ssl.certificateиserver.ssl.keyуказывают на действительные файлы - Нет подключения к Indexer: проверьте
opensearch.hostsи доступность порта 9200 - Поврежденный индекс .kibana: удалите и позвольте Dashboard пересоздать его
# Проверка состояния Dashboard
systemctl status wazuh-dashboard
# Просмотр логов
tail -100 /var/log/wazuh-dashboard/opensearch-dashboards.log
# Проверка подключения к Indexer
curl -sk -u kibanaserver:$PASSWORD "https://localhost:9200/_cluster/health"Wazuh API not reachable
Симптом: ошибка “Wazuh API not reachable” в модулях Dashboard.
Диагностика:
# Проверка доступности API
curl -sk -u wazuh-wui:$PASSWORD \
-X POST "https://localhost:55000/security/user/authenticate?raw=true"
# Проверка конфигурации wazuh.yml
cat /usr/share/wazuh-dashboard/data/wazuh/config/wazuh.ymlРешения:
- Убедитесь, что IP и порт в
wazuh.ymlсоответствуют реальному адресу Wazuh Manager - Проверьте учетные данные
wazuh-wui - Убедитесь, что порт 55000 открыт между Dashboard и Manager
- При использовании HTTPS проверьте сертификаты
Ошибки плагина Wazuh
Симптом: модули Wazuh не отображаются или показывают ошибки.
# Проверка установленных плагинов
/usr/share/wazuh-dashboard/bin/opensearch-dashboards-plugin list
# Переустановка плагина Wazuh
/usr/share/wazuh-dashboard/bin/opensearch-dashboards-plugin remove wazuh
/usr/share/wazuh-dashboard/bin/opensearch-dashboards-plugin install \
https://packages.wazuh.com/4.x/ui/dashboard/wazuh-4.14.4-1.zip
# Перезапуск Dashboard
systemctl restart wazuh-dashboardПроблемы с производительностью
- Увеличьте
node.optionsпамять:--max-old-space-size=2048в/etc/wazuh-dashboard/node.options - Уменьшите частоту мониторинга в
wazuh.yml:wazuh.monitoring.frequency: 3600 - Отключите ненужные проверки при загрузке
Сброс пароля администратора
# Генерация хеша нового пароля
/usr/share/wazuh-indexer/plugins/opensearch-security/tools/hash.sh
# Обновление internal_users.yml
# Применение изменений
cd /usr/share/wazuh-indexer/plugins/opensearch-security/tools/
./securityadmin.sh \
-f /etc/wazuh-indexer/opensearch-security/internal_users.yml \
-icl -nhnv \
-cacert /etc/wazuh-indexer/certs/root-ca.pem \
-cert /etc/wazuh-indexer/certs/admin.pem \
-key /etc/wazuh-indexer/certs/admin-key.pem \
-h localhostДополнительные материалы
- Установка Wazuh Dashboard - развертывание Dashboard
- Wazuh Indexer API - работа с данными через API
- Управление агентами - регистрация и конфигурация агентов
- Архитектура Wazuh - обзор компонентов платформы