Настройка 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-подключений
  • Логи менеджера
  • Статистика и кластер

Кастомные дашборды и визуализации

Создание индексного паттерна

Перед созданием визуализаций необходимо настроить индексный паттерн:

  1. Перейдите в OpenSearch Dashboards - Stack Management - Index Patterns
  2. Нажмите Create index pattern
  3. Введите паттерн: wazuh-alerts-*
  4. Выберите поле времени: timestamp
  5. Нажмите Create index pattern

Создание визуализации

  1. Перейдите в OpenSearch Dashboards - Visualize
  2. Выберите тип визуализации (Area, Bar, Pie, Line, Data Table, Metric, Gauge)
  3. Выберите индексный паттерн wazuh-alerts-*
  4. Настройте агрегации и метрики

Пример конфигурации для круговой диаграммы топ-10 правил:

  • Metric: Count
  • Buckets - Split Slices: Terms, field: rule.description.keyword, size: 10
  • Сохраните визуализацию

Создание дашборда

  1. Перейдите в OpenSearch Dashboards - Dashboard
  2. Нажмите Create new dashboard
  3. Добавьте визуализации через Add panel
  4. Настройте расположение и размер панелей
  5. Сохраните дашборд

Saved Objects

Визуализации и дашборды хранятся как Saved Objects. Для экспорта и импорта:

  1. Перейдите в Stack Management - Saved Objects
  2. Выберите объекты для экспорта
  3. Нажмите Export - будет создан NDJSON-файл
  4. Для импорта используйте кнопку Import и загрузите NDJSON

Экспортированные объекты можно версионировать в Git и развертывать на других инстансах Dashboard.

Отчеты (Reporting)

Генерация PDF/CSV

Wazuh Dashboard поддерживает создание отчетов в формате PDF и CSV:

  1. Откройте нужный модуль (Security Events, Vulnerabilities и др.)
  2. Настройте фильтры и временной диапазон
  3. Нажмите Generate report в правом верхнем углу
  4. Выберите формат: PDF или CSV
  5. Отчет будет доступен в разделе Management - Reporting

Параметры отчетов

Отчеты включают:

  • Заголовок с временным диапазоном и примененными фильтрами
  • Таблицы алертов с ключевыми полями
  • Графики и визуализации из текущего представления
  • Общую статистику по модулю

Автоматические отчеты

Для настройки периодической генерации отчетов используйте Reporting plugin OpenSearch Dashboards:

  1. Перейдите в OpenSearch Dashboards - Reporting
  2. Нажмите Create report definition
  3. Настройте:
    • Report source: Dashboard или Visualization
    • Формат: PDF или CSV
    • Schedule: cron-выражение (например, 0 8 * * 1 - каждый понедельник в 8:00)
  4. Опционально настройте получателей через Notification channels

Мультитенантность

Мультитенантность позволяет изолировать дашборды, визуализации и индексные паттерны для разных команд или подразделений.

Включение мультитенантности

В файле /etc/wazuh-indexer/opensearch-security/config.yml:

config:
  dynamic:
    kibana:
      multitenancy_enabled: true
      server_username: kibanaserver
      index: .kibana

Создание тенантов

Через OpenSearch Dashboards Security plugin:

  1. Перейдите в Security - Tenants
  2. Нажмите Create tenant
  3. Укажите имя и описание

Через 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

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

Пустая страница после входа

Причины и решения:

  1. Некорректный сертификат: проверьте, что server.ssl.certificate и server.ssl.key указывают на действительные файлы
  2. Нет подключения к Indexer: проверьте opensearch.hosts и доступность порта 9200
  3. Поврежденный индекс .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

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

Last updated on