Wazuh и Ollama: Часть 3. Создание интеграции вашего кластера Wazuh с Ollama
Wazuh предоставляет огромные и почти бесконечные возможноности по интеграции с различными система, даже если какого-то функционала не хватает вы всегда можете написать свой.
Интеграции с внешними системами могут быть двух видов:
- External API integrations: Этот метод позволяет взаимодействовать с внешними системами через API для автоматизации задач. Полученные данные могут использоваться для создания событий в Wazuh или выполнения других автоматизированных действий, повышая эффективность мониторинга и реагирования на угрозы.
- Command: Этот метод позволяет запускать команды или скрипты по расписанию для автоматического создания событий в Wazuh. Я часто использую этот подход, когда необходимо получать данные из источников, которые не поддерживаются по умолчанию. Это помогает расширить возможности мониторинга и интеграции с нестандартными системами.
Для интеграции с Ollama мы используем метод External API integrations. Мы разработаем интегратор, который будет взаимодействовать с Ollama через API, автоматизируя обработку данных. Полученная информация позволит создавать события в Wazuh и выполнять другие автоматизированные действия.
External API integrations
В Wazuh предусмотрен удобный механизм для интеграции с внешними API.
Процесс настройки включает несколько простых шагов:
- Создаём скрипт в
/var/ossec/integrations/
. - Имя скрипта должно начинаться с
custom-
. - Добавляем новую интеграцию в
ossec.conf
. - Настраиваем правила и декодеры для обработки данных.
- Перезапускаем Wazuh для применения изменений.
Этот процесс позволяет легко расширять функциональность Wazuh, подключая его к сторонним сервисам для автоматизированного мониторинга и анализа событий.
Разработка интеграции между Ollama и Wazuh
Чтобы упростить процесс разработки, я буду использовать Python — гибкий и удобный язык, идеально подходящий для работы с API и автоматизации процессов в Wazuh.
1. Работа с API Ollama
Для работы с Ollama мы будем использовать официальную библиотеку ollama. Перед началом убедитесь, что у вас установлены Python и pip, затем установите библиотеку с помощью команды:
pip install ollama
Библиотека Ollama очень проста в использовании. Давайте начнем с создания базовой функции, которая будет взаимодействовать с Ollama и отправлять запросы:
from ollama import chat
response = chat(model='llama3.2', messages=[
{
'role': 'user',
'content': 'what is it Wazuh"?',
},
])
print(response['message']['content'])
model='llama3.2'
- имя модели для использования.messages
- список сообщений, которые будут отправлены в Ollama.response
- результат выполнения запроса.response['message']['content']
- содержимое ответа.
В данном примере мы отправляем запрос к модели llama3.2, которая является одной из наиболее популярных моделей для работы с текстом. В качестве контента мы передаем строку “what is it Wazuh”?.
После выполнения запроса, мы получаем ответ, который содержит информацию о Wazuh.
По-умолчанию библиотека отправляет запросы использую в качестве host localhost
и порт 11434
.
Однако, если ваш сервер Ollama находится на другом хосте или порту, вам нужно указать соответствующие значения в параметре host
и port
.
Для этого необходимо использовать Client
например:
from ollama import Client
client = Client(
host='http://123.123.123.1:11434',
)
response = client.chat(model='llama3.2', messages=[
{
'role': 'user',
'content': 'what is it Wazuh"?',
},
],)
print(response['message']['content'])
2. Как можно работать с Wazuh в Python?
Для интеграции с Wazuh через Python существует несколько эффективных подходов, и одним из самых простых и быстрых является использование прямого взаимодействия через unix-socket. Этот метод позволяет подключаться к Wazuh без сложной настройки сетевых соединений, что ускоряет процесс и делает его более стабильным.
Для упрощения процесса интеграции с Wazuh и автоматизации задач, мы будем использовать встроенный Python-интерпретатор, который поставляется с Wazuh. Это исключает необходимость в установке внешних библиотек или создании дополнительной среды, позволяя быстро и эффективно настроить систему для обработки событий и автоматизации процессов в Wazuh.
Получаем путь до Wazuh:
wazuh_path = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
Тогда unix-socker будет находиться по пути:
socket_addr = "{0}/queue/sockets/queue".format(wazuh_path)
Теперь мы можем попробовать создать функцию по отправки событий в unix-socket:
def send_event(msg):
string = "1:somename:{0}".format(json.dumps(msg))
sock = socket(AF_UNIX, SOCK_DGRAM)
sock.connect(socket_addr)
sock.send(string.encode())
sock.close()
Структура string такова:
- 1: - Это идентификатор и соответствует Wazuh manager
- somename: - уникальное имя
- {0}: - JSON-строка с сообщением
Когда в Wazuh создается событие согласно заданным правилам, оно передается через Unix-сокет для дальнейшей обработки. Этот процесс начинается с того, что Wazuh manager вызывает функцию send_event
и передает ей JSON-строку.
Строка, содержащая данные события, затем отправляется в Unix-сокет, что позволяет взаимодействовать с другими сервисами или интеграциями, такими как Ollama.
Как работает процесс создания и отправки события
Создание события: Когда срабатывает правило в Wazuh, создается событие в формате JSON. Это событие включает важные данные, такие как тип инцидента, источник, описание и дополнительные параметры.
Вызов функции send_event: В ответ на сработавшее правило, Wazuh manager вызывает функцию send_event, в которой передается сформированная JSON-строка.
Передача через Unix-сокет: Эта JSON-строка затем отправляется через Unix-сокет.
Продолжение интеграции будет представлено в следующих постах. Следите за обновлениями!
Смотрите также
- Применение RAG для работы с документацией Wazuh: Пошаговое руководство (Часть 2)
- Применение RAG для работы с документацией Wazuh: Пошаговое руководство (Часть 1)
- Усиление Wazuh с помощью Ollama: Повышение кибербезопасности (Часть 4)
- Усиление Wazuh с помощью Ollama: Повышение кибербезопасности (Часть 2)
- Усиление Wazuh с помощью Ollama: Повышение кибербезопасности (Часть 1)