Пополнение данных Wazuh - ESGuardian/LittleBeat GitHub Wiki
Иногда может быть полезно пополнить события от Wazuh (OSSEC) HIDS дополнительными полями. Например, если вы все таки решили использовать OSSEC агент для Windows, полезно для событий Windows Logon учитывать logon type (сетевой, интерактивный, интерактивный удаленно и т.п., их в Windows 14 разных). Стандартный декодер Wazuh не выделяет эту информацию в отдельное поле события, соответственно вы не можете, например, создать визуализацию агрегирующую события логона по типам, или использовать удобную фильтрацию по значению такого поля (в любом случае, вы можете использовать фильтр по тексту, но это менее удобно). Рассмотрим, на этом примере, как можно пополнить событие данными, не затрагивая при этом стандартный декодер и не добавляя новый. Это можно сделать на этапе обработки события в Logstash.
На сервере LittleBeat в /etc/logstash/conf.d/02-wazuh.conf
находится конфиг обработчика событий от Wazuh Addon.
Мы хотим дополнить ее добавлением нового поля logon_type в случае, если оно есть в исходном логе, полученном от источника. Исходный лог целиком содержится в поле full_log
события Wazuh. Естественно его имеет смысл искать, только если это событие пришло от Windows. Этот факт мы можем определить по названию декодера, который обработал событие, это значение поля decoder.name
. Наше дополнение к фильтру будет выглядеть вот так:
#
# 02-wazuh.local.conf
#
filter {
if [type] == "wazuh-alerts" {
if [decoder][name] == "windows" {
grok { match => { "full_log" => ".*Logon Type:\s+%{NUMBER:logon_type}" } }
if [logon_type] {
ruby {
code => "dict = {'0'=>'Системный', '1'=>'Неизвестный', '2'=>'Интерактивный', '3'=>'Сетевой', '4'=>'Пакетный', '5'=>'Как Сервис', '6'=>'Прокси', '7'=>'Снятие блокировки (локально)', '8'=>'Сетевой (открытый текст)', '9'=>'Новая учетная запись', '10'=>'Интерактивный (удаленно)', '11'=>'Интерактивный (из кэша)', '12'=>'Интерактивный (удаленно, из кэша)', '13'=>'Снятие блокировки (из кэша)'}; key = event.get('[logon_type]'); event.set('[logon_type]', dict[key]);"
}
}
}
}
}
Прежде всего, мы проверяем, что это событие Windows. Затем, используя плагин grok ищем в full_log строку вида "Logon Type: NN" и вырезаем это NN в новое поле logon_type
. После чего, если у нас появилось непустое поле logon_type
, мы, используя маленький скрипт на Ruby, заменяем его цифровое значение на приятный нам текст.
Теперь этот фрагмент надо сохранить в файле /etc/logstash/conf.d/02-wazuh.local.conf
и перезапустить Logstash с SSH-консоли LittleBeat (раздел: консоль ELK). Logstash объединяет все конфиги в порядке чтения (алфавитном) из каталога /etc/logstash/conf.d/
, лучше не изменять оригинальные конфиги LittleBeat, а дописывать свои, отдельными файлами
Теперь мы можем использовать это новое поле в сёчах, визуализациях и фильтрах. На экране, это может выглядеть, например, вот так: