Wazuh и Ollama: Часть 2. Разворачивание кластера Wazuh
В первой части мы установили и настроили Ollama для локального запуска больших языковых моделей. Теперь пришло время настроить Wazuh, который мы будем интегрировать с Ollama.
Wazuh в режиме multi-node представляет собой полноценный кластер, состоящий из нескольких ключевых компонентов: менеджер Wazuh (отвечает за обработку событий безопасности и управление агентами), индексатор Wazuh (обеспечивает хранение и индексацию данных на базе OpenSearch) и дашборд Wazuh (предоставляет веб-интерфейс для визуализации и анализа событий). Такая архитектура обеспечивает горизонтальную масштабируемость и отказоустойчивость, что критически важно для production-среды.
Самый быстрый и удобный способ развернуть кластер Wazuh – это использовать Docker Compose. Данный метод позволяет описать всю инфраструктуру в едином конфигурационном файле, что значительно упрощает процесс развертывания, обновления и воспроизведения среды на различных серверах.
Предварительные требования
Перед началом развертывания убедитесь, что ваша система соответствует следующим требованиям:
- Docker Engine версии 20.10 или выше
- Docker Compose версии 2.0 или выше
- Минимум 4 ГБ оперативной памяти для комфортной работы кластера (рекомендуется 8 ГБ и более)
- Минимум 20 ГБ свободного дискового пространства для хранения данных индексатора и логов
- Параметр
vm.max_map_countдолжен быть установлен не менее 262144 (требование OpenSearch)
Для установки параметра vm.max_map_count выполните следующую команду:
sudo sysctl -w vm.max_map_count=262144
Для сохранения данной настройки после перезагрузки добавьте строку vm.max_map_count=262144 в файл /etc/sysctl.conf.
Клонирование репозитория
Для начала клонируйте официальный репозиторий wazuh-docker:
git clone -b v4.11.0 https://github.com/wazuh/wazuh-docker && cd wazuh-docker/multi-node
Следующим шагом будет создание сертификатов для конфигурации. Сертификаты необходимы для обеспечения защищенного взаимодействия между компонентами кластера – менеджером, индексатором и дашбордом. Все коммуникации между компонентами осуществляются по протоколу TLS, что исключает возможность перехвата данных.
docker compose -f generate-indexer-certs.yml run --rm generator
Данная команда запускает контейнер-генератор, который создает необходимые сертификаты TLS и сохраняет их в соответствующих директориях. После завершения генерации контейнер автоматически удаляется благодаря флагу --rm.
После того как сертификаты будут сгенерированы, можно запустить Wazuh кластер.
Но прежде чем это сделать, давайте добавим агента.
Добавление агента Wazuh
Агент Wazuh – это легковесный компонент, который устанавливается на отслеживаемые системы и отвечает за сбор логов, мониторинг целостности файлов, обнаружение вторжений и проверку соответствия политикам безопасности. Агент передает собранные данные менеджеру Wazuh для анализа и корреляции событий.
В данном примере мы используем контейнеризированную версию агента, что позволяет быстро развернуть его в рамках общего Docker Compose стека. Для этого откройте файл docker-compose.yml и добавьте следующие строки:
wazuh-agent:
image: opennix/wazuh-agent:4.7.2
hostname: wazuh-agent
restart: always
environment:
- JOIN_MANAGER_MASTER_HOST=wazuh.manager
- JOIN_MANAGER_WORKER_HOST=wazuh.manager
- JOIN_MANAGER_USER=wazuh-wui
- JOIN_MANAGER_PASSWORD=MyS3cr37P450r.*-
depends_on:
wazuh.manager:
condition: service_healthy
Развертывание и запуск кластера
Теперь приступим к развертыванию и запуску Wazuh кластера:
docker compose up -d
Разворачивание кластера займет какое-то время, в зависимости от мощности вашего сервера/компьютера. Как правило, первый запуск занимает от 3 до 10 минут, поскольку Docker загружает образы и инициализирует все компоненты.
После завершения процесса, вы можете проверить статус всех контейнеров:
docker compose ps
Если при развертывании возникла ошибка, рекомендуется проверить логи для диагностики проблемы.
docker compose logs
Убедитесь, что все контейнеры находятся в состоянии healthy или running. Если какой-либо из контейнеров не запустился, проверьте наличие свободных ресурсов на хост-системе и убедитесь, что необходимые порты не заняты другими процессами.
Теперь, когда кластер Wazuh развернут с использованием Docker Compose, вы готовы начать интеграцию с Ollama и продолжить разработку вашего проекта.
Добавление Ollama в кластер
Следующий шаг – интеграция Ollama непосредственно в Docker Compose стек Wazuh. Размещение Ollama в одной Docker-сети с компонентами Wazuh обеспечивает быстрое и безопасное сетевое взаимодействие между сервисами без необходимости открывать дополнительные порты наружу.
Для этого необходимо внести изменения в файл docker-compose.yml и добавить сервис ollama:
ollama:
image: ollama/ollama:latest
ports:
- "127.0.0.1:11434:11434"
volumes:
- ./ollama:/root/.ollama
restart: always
environment:
- OLLAMA_KEEP_ALIVE=24h
- OLLAMA_HOST=0.0.0.0
Обратите внимание на следующие параметры конфигурации:
- Привязка порта к localhost (
127.0.0.1:11434:11434) – ограничивает доступ к API Ollama только локальными подключениями, что повышает безопасность развертывания. - Переменная
OLLAMA_KEEP_ALIVE=24h– поддерживает загруженную модель в памяти на протяжении 24 часов, что исключает задержки при повторных запросах и обеспечивает стабильное время отклика. - Переменная
OLLAMA_HOST=0.0.0.0– позволяет Ollama принимать соединения от других контейнеров в Docker-сети. - Persistent volume (
./ollama:/root/.ollama) – сохраняет загруженные модели между перезапусками контейнера, исключая необходимость повторной загрузки.
Теперь запускаем все компоненты вместе:
docker compose up -d
Для полноценного использования Ollama необходимо загрузить модель с помощью команды:
docker compose exec -it ollama bash -c "ollama pull llama3.2"
Проверка работоспособности
Проверяем работу Ollama REST API:
curl http://localhost:11434/api/chat -d '{
"model": "llama3.2",
"messages": [
{
"role": "user",
"content": "What is it Wazuh?"
}
],
"stream": false
}'
Пример ответа:
{
"model":"llama3.2",
"created_at":"2025-02-28T09:10:16.97228853Z",
"message":{
"role":"assistant",
"content":"Wazuh is an open-source security information and event management (SIEM) system. It's designed to collect, monitor, and analyze security-related data from various sources, such as logs, network devices, and applications.\n\nThe name \"Wazuh\" comes from the Latin word \"wazh,\" which means \"to be vigilant.\" This reflects the platform's focus on monitoring and analyzing security events to help organizations stay alert and responsive to potential threats.\n\nSome key features of Wazuh include:\n\n1. Log collection and management: Wazuh can collect logs from various sources, such as Linux systems, network devices, and applications.\n2. Event processing and correlation: The platform analyzes collected data to identify suspicious patterns and anomalies.\n3. Alerting and notification: Wazuh can send alerts to administrators or security teams when suspicious activity is detected.\n4. Compliance monitoring: The platform can help organizations monitor compliance with industry standards and regulations.\n\nWazuh is often used in conjunction with other security tools, such as intrusion detection systems (IDS) and antivirus software, to provide a comprehensive security posture for an organization.\n\nIn summary, Wazuh is a powerful SIEM system that helps organizations monitor and analyze security-related data to stay ahead of potential threats."
},
"done_reason":"stop",
"done":true,
"total_duration":14073914247,
"load_duration":22507825,
"prompt_eval_count":32,
"prompt_eval_duration":241000000,
"eval_count":254,
"eval_duration":13808000000
}
Если ответ получен успешно и содержит информацию о Wazuh, значит Ollama работает корректно и готова к интеграции. Обратите внимание на поля total_duration и eval_count в ответе – они позволяют оценить производительность модели и время генерации ответа.
Решение типичных проблем
При развертывании кластера могут возникнуть следующие проблемы:
- Контейнер индексатора не запускается – как правило, это связано с недостаточным значением
vm.max_map_count. Убедитесь, что параметр установлен корректно. - Агент не подключается к менеджеру – проверьте, что менеджер полностью инициализирован (статус
healthy) перед запуском агента. Параметрdepends_onс условиемservice_healthyв конфигурации Docker Compose обеспечивает правильный порядок запуска. - Ollama возвращает ошибку при запросе – убедитесь, что модель успешно загружена. Вы можете проверить список доступных моделей командой
docker compose exec ollama ollama list. - Высокое потребление памяти – модели LLM требуют значительного объема оперативной памяти. Модель llama3.2 (3B параметров) занимает около 2 ГБ. При необходимости можно использовать модели меньшего размера.
Продолжение интеграции будет представлено в следующих постах. В третьей части мы создадим непосредственно скрипт интеграции между Wazuh и Ollama. Следите за обновлениями!
Связанные материалы
- Интеграция Wazuh с Ollama: Часть 1 - Введение и настройка Ollama
- Интеграция Wazuh с Ollama: Часть 3 - Создание интеграции
Навигация по серии:
- Часть 1: Введение в интеграцию
- Часть 2: Развертывание Wazuh (вы здесь)
- Часть 3: Создание интеграции
- Часть 4: Настройка и внедрение
- Часть 5: Локальная Ollama в дашборде Wazuh