Мой блог
Как подключить LLM-ассистента к Wazuh: пошаговое руководство
Подробности изложены в материале первоисточника. Полноценный сбор событий безопасности с помощью SIEM-системы Wazuh — это лишь половина дела, ведь для извлечения ценных данных оттуда требуются глубокие познания в синтаксисе запросов и структуре сотен индексных полей. Понимать внутреннее устройство платформы способен далеко не каждый рядовой сотрудник. Именно поэтому интеграция искусственного интеллекта в лице LLM-ассистента позволяет кардинально упростить взаимодействие с дашбордом, переводя привычные языковые запросы в машинные команды.
Руководитель направления безопасности облака в Selectel делится проверенной инструкцией по внедрению языковой модели в связку с Wazuh на базе OpenSearch. В ходе настройки мы пошагово разберем установку необходимых плагинов, подключение внешней модели через OpenAI-совместимый API и интеграцию удобных интерфейсных элементов прямо в рабочую панель мониторинга.





Как работает интеллектуальный помощник
Вопрос аналитика проходит следующий путь: плагины дашборда принимают текстовые запросы пользователя через интерфейс чата, поисковую строку или отдельную кнопку, после чего перенаправляют их в индексатор без выполнения локальных вычислений. Всю основную логику обрабатывает модуль ml-commons, который удерживает конфигурации агентов и правила генерации сценариев взаимодействия с моделью.
Главную роль в этой архитектуре играет инструмент PPLTool: он заставляет модель формировать валидный запрос на языке Piped Processing Language (PPL), а затем самостоятельно исполняет его внутри базы данных. Сама языковая модель функционирует изолированно, принимая защищенные HTTPS-запросы через специальный коннектор. Настройка компонентов выполняется последовательно: сначала внедряются плагины, подключается модель и настраиваются агенты, а в самом конце добавляется визуальная кнопка интерфейса.

Системные требования и подготовка
Описанная процедура успешно протестирована на программном стеке Wazuh версии 4.14.7, функционирующем внутри Docker-контейнера в конфигурации single-node, что соответствует встроенному движку OpenSearch 2.19.5. В роли внешней языковой модели выступает qwen3-next-80b, развернутая за интерфейсом OpenWebUI, однако подойдет любое решение с поддержкой стандартного API.
Для успешного выполнения всех этапов настройки подготовьте:
- действующий адрес API-эндпоинта, уникальное имя модели и токен авторизации;
- root-права на сервере, где запущены основные службы индексатора и дашборда;
- изолированную машину с Linux, Docker, 8 ГБ оперативной памяти и доступом к репозиториям GitHub и npm для компиляции интерфейсной кнопки.
Перед началом работ обязательно уточните версию платформы в консоли разработчика с помощью запроса GET / и параметра version.number. Вся дальнейшая работа с API выполняется через Dev Tools в панели управления индексатором.
Шаг 1. Установка плагинов
Для корректной работы ассистента потребуются специальные компоненты индексатора (opensearch-skills и opensearch-flow-framework), а также набор графических элементов дашборда (assistantDashboards, mlCommonsDashboards и observabilityDashboards). Загрузите официальные архивные сборки нужной версии и извлеките необходимые директории на целевом сервере.
Если вы используете развертывание в Docker, обязательно установите корректного владельца файлов с UID 1000, соответствующим системным процессам контейнеров, после чего пропишите новые тома в конфигурационном файле docker-compose.yml. При пакетной инсталляции файлы копируются напрямую в системные каталоги служб с последующим перезапуском демонов. Убедитесь в успешной загрузке плагинов, выполнив проверку через системный инструмент проверки компонентов индексатора.
Шаг 2. Включение ассистента
На втором этапе активируется инфраструктура агентов в модуле ml-commons и разрешается отправка запросов к внешнему хосту модели. Для этого отправьте соответствующий PUT-запрос в настройки кластера, не забыв указать корректное регулярное выражение в параметре trusted_connector_endpoints_regex, где точки в доменном имени экранируются двойным обратным слэшем.
Затем отредактируйте конфигурационный файл дашборда, добавив параметры включения чата, инлайн-подсказок и инструмента Query Assist. После перезапуска службы в верхней панели интерфейса появится строка ввода вопросов, однако для полноценного ответа потребуется завершить процедуру подключения языковой модели.

Шаг 3. Подключение модели
Поскольку индексатор не запускает нейросеть локально, взаимодействие строится через удаленный API-коннектор. Создайте объект коннектора с помощью POST-запроса, указав параметры эндпоинта, ключа доступа и токена, а также добавив функцию постобработки ответа, которая очищает выдачу от служебных тегов мышления и markdown-оберток.
Зарегистрируйте и разверните модель в системе, передав полученный идентификатор коннектора. Проверьте работоспособность соединения с помощью тестового запроса предсказания — в случае успешного выполнения система вернет короткий ответ от модели в структуре dataAsMap.response.
Шаг 4. Настройка агента чата
Интерфейс чата взаимодействует не напрямую с моделью, а через специализированного агента, который управляет вызовами инструментов и контролирует формат ответов. Для корректной работы агента задаются системный промпт, правила трансформации вопросов в синтаксис PPL и четкие требования к оформлению результатов в формате Markdown с обязательным указанием исходного кода запроса.

Соберите актуальный список групп правил вашего кластера с помощью поискового запроса по индексу алертов, исключив стандартные регуляторные метки. Зарегистрируйте агента в системе, передав собранные параметры, и привяжите его к системному индексу .plugins-ml-config по ключу os_chat с использованием административных сертификатов безопасности.
Шаг 5. Интеграция Query Assist в Discover
Инструмент Query Assist позволяет преобразовывать обычные текстовые вопросы аналитика в точные PPL-запросы прямо в поисковой строке вкладки Discover. Для его активации регистрируется отдельный легковесный агент без истории диалогов, использующий тот же инструмент трансляции запросов.
Готовый агент закрепляется в системе под системным ключом os_query_assist_ppl. После этого в панели Discover можно переключить язык запросов на PPL и вводить поисковые фразы на естественном языке, получая автоматически сгенерированные и готовые к выполнению конструкции.
Шаг 6. Добавление кнопки Explain Document
Наиболее стабильным инструментом в повседневной работе SOC является кнопка объяснения документов, поскольку модель не занимается самостоятельным составлением поисковых запросов, а анализирует уже готовый структурированный JSON-документ. Зарегистрируйте агента суммирования и привяжите его к ключу os_summary.
Для вывода кнопки в интерфейс потребуется модифицировать исходный код плагина Wazuh Dashboards, добавив компонент реакции на просмотр документов, скорректировав зависимости и выполнив процедуру сборки внутри изолированного контейнера Node.js. После завершения компиляции обновите файлы интерфейса и перезапустите службу дашборда.
Рекомендации по устранению неполадок
В процессе интеграции могут возникать типичные ошибки, связанные с некорректной валидацией регулярных выражений, ограничениями прав доступа к системным индексам или переполнением контекста диалога. Тщательно проверяйте параметры коннекторов, наличие функций постобработки и корректность указания версий библиотек при ручной сборке компонентов.

Помните об ограничениях: языковая модель потенциально может допускать неточности при генерации сложных поисковых конструкций, поэтому критически важные показатели всегда стоит перепроверять по сырым логам. При соблюдении всех шагов инструкции стандартная SIEM-система превращается в удобный инструмент с поддержкой искусственного интеллекта.
