Wazuh Log Data Collection - сбор журналов событий

Модуль Logcollector в Wazuh собирает и консолидирует журналы событий из различных источников - файлов на локальной системе, Windows Event Log, macOS Unified Logging System, удаленных устройств через syslog и выходных данных команд. Собранные данные передаются на сервер Wazuh, где модуль Analysisd выполняет декодирование, сопоставление с правилами и генерацию алертов. Правильная настройка сбора логов является основой всей системы мониторинга безопасности.

Обзор источников логов

Wazuh поддерживает сбор данных из следующих типов источников:

  • Файловые логи - syslog, JSON, Apache, Nginx, PostgreSQL, MySQL и другие форматы
  • Windows Event Log - через механизм EventChannel с поддержкой XPATH-фильтрации
  • macOS Unified Logging System - нативная интеграция с ULS через предикатные фильтры
  • Журнал systemd - сбор из journald на Linux-системах
  • Удаленный syslog - прием сообщений от сетевых устройств и приложений
  • Вывод команд - периодическое выполнение команд и анализ их вывода

Конфигурация localfile

Основным элементом конфигурации является блок <localfile> в файле ossec.conf на агенте. Каждый блок определяет один источник данных.

Сбор файловых логов

<localfile>
  <log_format>syslog</log_format>
  <location>/var/log/syslog</location>
</localfile>

<localfile>
  <log_format>syslog</log_format>
  <location>/var/log/auth.log</location>
</localfile>
ПараметрОписание
locationПуть к файлу лога, каналу событий, macos или journald
log_formatФормат лога (определяет метод разбора)
only-future-eventsЧитать только новые записи после старта (yes/no, по умолчанию yes)
ignore_binariesПропускать бинарные файлы (yes/no)
ageОбрабатывать только недавно измененные файлы (например, 1d)
excludeШаблон для исключения файлов

Поддержка шаблонов в пути

Wazuh поддерживает подстановочные знаки и шаблоны дат в параметре location:

<!-- Подстановочный знак -->
<localfile>
  <log_format>syslog</log_format>
  <location>/var/log/*.log</location>
</localfile>

<!-- Шаблон даты -->
<localfile>
  <log_format>syslog</log_format>
  <location>/var/log/app-%Y-%m-%d.log</location>
</localfile>

Форматы логов (log_format)

syslog

Стандартный формат сообщений syslog. Используется для большинства системных журналов на Linux и Unix.

<localfile>
  <log_format>syslog</log_format>
  <location>/var/log/messages</location>
</localfile>

json

JSON-структурированные логи. Wazuh автоматически разбирает поля JSON-объекта и делает их доступными для правил обнаружения.

<localfile>
  <log_format>json</log_format>
  <location>/var/log/app/events.json</location>
  <label key="@source">application</label>
</localfile>

multi-line

Логи, в которых одно событие занимает несколько строк. Параметр определяет фиксированное количество строк на событие.

<localfile>
  <log_format>multi-line:3</log_format>
  <location>/var/log/multiline-app.log</location>
</localfile>

Число после двоеточия указывает количество строк, объединяемых в одно событие.

multi-line-regex

Для логов с переменным количеством строк на событие используется регулярное выражение для определения начала или конца записи:

<localfile>
  <log_format>multi-line-regex</log_format>
  <location>/var/log/java-app.log</location>
  <multiline_regex>^\d{4}-\d{2}-\d{2}</multiline_regex>
</localfile>

В этом примере каждое новое событие начинается с даты в формате YYYY-MM-DD.

eventchannel

Сбор событий Windows через Event Channel API. Поддерживает XPATH-фильтрацию для отбора нужных событий.

<localfile>
  <location>Security</location>
  <log_format>eventchannel</log_format>
  <query>Event/System[EventID != 5145 and EventID != 5156]</query>
</localfile>

macos

Сбор логов macOS через Unified Logging System (ULS). Поддерживает предикатные фильтры для уточнения выборки.

<localfile>
  <location>macos</location>
  <log_format>macos</log_format>
  <query type="log,trace" level="info">process == "sshd" OR process == "sudo"</query>
</localfile>

journald

Сбор из журнала systemd:

<localfile>
  <location>journald</location>
  <log_format>journald</log_format>
  <filter field="_SYSTEMD_UNIT">sshd.service</filter>
</localfile>

command и full_command

Выполнение команд и анализ вывода. command обрабатывает каждую строку отдельно, full_command - весь вывод как одно событие.

<localfile>
  <log_format>command</log_format>
  <command>df -P</command>
  <frequency>360</frequency>
</localfile>

<localfile>
  <log_format>full_command</log_format>
  <command>netstat -tulnp</command>
  <frequency>120</frequency>
  <alias>netstat-listening</alias>
</localfile>

audit

Формат для чтения журнала Linux Audit (auditd):

<localfile>
  <log_format>audit</log_format>
  <location>/var/log/audit/audit.log</location>
</localfile>

Удаленный syslog

Для приема syslog-сообщений от устройств, не поддерживающих установку агента (маршрутизаторы, коммутаторы, межсетевые экраны), на сервере Wazuh настраивается блок <remote>:

<remote>
  <connection>syslog</connection>
  <port>514</port>
  <protocol>udp</protocol>
  <allowed-ips>10.0.0.0/8</allowed-ips>
</remote>
ПараметрОписание
connectionТип подключения: syslog или secure (для агентов)
portПорт прослушивания (по умолчанию 514)
protocolТранспортный протокол: udp или tcp
allowed-ipsРазрешенные IP-адреса и подсети
local_ipЛокальный IP-адрес для прослушивания
ipv6Включение поддержки IPv6 (yes/no)

Для TCP-подключений:

<remote>
  <connection>syslog</connection>
  <port>514</port>
  <protocol>tcp</protocol>
  <allowed-ips>192.168.1.0/24</allowed-ips>
</remote>

Windows EventChannel

Мониторинг журналов событий Windows настраивается через формат eventchannel. Поддерживаются все стандартные каналы (Security, System, Application) и пользовательские каналы приложений.

Основные каналы

<localfile>
  <location>Security</location>
  <log_format>eventchannel</log_format>
</localfile>

<localfile>
  <location>System</location>
  <log_format>eventchannel</log_format>
</localfile>

<localfile>
  <location>Application</location>
  <log_format>eventchannel</log_format>
</localfile>

Фильтрация через XPATH

XPATH-запросы позволяют отбирать конкретные события:

<!-- Только события входа в систему -->
<localfile>
  <location>Security</location>
  <log_format>eventchannel</log_format>
  <query>Event/System[EventID=4624 or EventID=4625]</query>
</localfile>

<!-- Исключение шумных событий -->
<localfile>
  <location>Security</location>
  <log_format>eventchannel</log_format>
  <query>Event/System[EventID != 5145 and EventID != 5156 and EventID != 4658]</query>
</localfile>

Каналы Sysmon

<localfile>
  <location>Microsoft-Windows-Sysmon/Operational</location>
  <log_format>eventchannel</log_format>
</localfile>

Каналы PowerShell

<localfile>
  <location>Microsoft-Windows-PowerShell/Operational</location>
  <log_format>eventchannel</log_format>
</localfile>

macOS Unified Logging System

На macOS агент Wazuh использует Unified Logging System для сбора системных и прикладных логов. Фильтрация выполняется через предикатные выражения.

<localfile>
  <location>macos</location>
  <log_format>macos</log_format>
  <query type="log,trace" level="info">
    process == "sshd" OR process == "sudo" OR process == "login"
  </query>
</localfile>
Атрибут queryОписание
typeТипы записей: log, trace, activity
levelМинимальный уровень: default, info, debug

Примеры предикатных фильтров:

<!-- Мониторинг авторизации -->
<localfile>
  <location>macos</location>
  <log_format>macos</log_format>
  <query type="log" level="info">subsystem == "com.apple.Authorization"</query>
</localfile>

<!-- Мониторинг сетевых подключений -->
<localfile>
  <location>macos</location>
  <log_format>macos</log_format>
  <query type="log" level="default">category == "connection"</query>
</localfile>

Метки и теги (labels)

Метки позволяют добавлять произвольные поля к событиям, упрощая категоризацию и поиск:

<localfile>
  <log_format>json</log_format>
  <location>/var/log/webapp/access.json</location>
  <label key="@source">webapp-frontend</label>
  <label key="@environment">production</label>
</localfile>

Метки добавляются в JSON-вывод алерта и доступны для фильтрации в дашборде Wazuh.

Обработка ротации логов

Wazuh автоматически отслеживает ротацию лог-файлов. Модуль Logcollector обнаруживает, когда файл был пересоздан или обрезан, и начинает чтение с начала нового файла. Для файлов с датой в имени используйте шаблоны:

<localfile>
  <log_format>syslog</log_format>
  <location>/var/log/app/app-%Y-%m-%d.log</location>
</localfile>

Параметр age ограничивает обработку только недавними файлами:

<localfile>
  <log_format>syslog</log_format>
  <location>/var/log/archive/*.log</location>
  <age>7d</age>
</localfile>

В этом примере обрабатываются только файлы, измененные за последние 7 дней.

Перенаправление вывода (target и out_format)

Wazuh позволяет перенаправлять логи на дополнительные сокеты и форматировать вывод:

<localfile>
  <log_format>syslog</log_format>
  <location>/var/log/secure</location>
  <target>agent,custom_socket</target>
  <out_format target="custom_socket">
    %(hostname)s: %(log)s
  </out_format>
</localfile>

Параметры restrict и ignore

Фильтрация строк по регулярным выражениям:

<!-- Обрабатывать только строки с ошибками -->
<localfile>
  <log_format>syslog</log_format>
  <location>/var/log/application.log</location>
  <restrict>ERROR|CRITICAL|FATAL</restrict>
</localfile>

<!-- Пропускать строки с отладочной информацией -->
<localfile>
  <log_format>syslog</log_format>
  <location>/var/log/application.log</location>
  <ignore>DEBUG|TRACE</ignore>
</localfile>

Сравнение с другими платформами

ВозможностьWazuh LogcollectorSplunk InputsLogstash / Filebeat
Файловые логиlocalfile с шаблонамиmonitor / inputs.conffile input plugin / filebeat
Windows EventLogeventchannel + XPATHWinEventLogwinlogbeat
macOS ULSНативная поддержкаНет нативнойНет нативной
Удаленный syslogВстроенный приемникВстроенный (UDP/TCP)syslog input plugin
JSON-логиАвтоматический разборАвтоматический разборjson codec
Multi-lineФиксированный и regexНастраиваемыйmultiline codec
Командыcommand / full_commandscripted inputexec input
Фильтрация на агентеrestrict / ignoreНет (фильтрация на сервере)processors / include_lines
СтоимостьБесплатноКоммерческаяБесплатно (базовая)

Конвейер обработки логов

Собранные логи проходят через три этапа обработки на сервере Wazuh:

  1. Предварительное декодирование - извлечение базовых полей (временная метка, имя хоста, программа)
  2. Декодирование - структурированный разбор полей с использованием деко деров
  3. Сопоставление с правилами - генерация алертов на основании правил обнаружения

Все логи (включая не вызвавшие алертов) сохраняются в архив /var/ossec/logs/archives/ для ретроспективного анализа, если архивирование включено.

Подробнее о деко дерах: Архитектура Wazuh

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

Логи не собираются

  • Проверьте, что путь в <location> существует и доступен для чтения пользователю wazuh
  • Убедитесь, что <log_format> соответствует реальному формату лога
  • Проверьте /var/ossec/logs/ossec.log на наличие ошибок Logcollector
  • Для подстановочных шаблонов убедитесь, что файлы соответствуют указанному шаблону

Windows EventChannel не работает

  • Проверьте точное имя канала событий (с учетом регистра)
  • Валидируйте XPATH-запрос в <query> через Windows Event Viewer
  • Убедитесь, что параметр <reconnect_time> установлен (по умолчанию 5s)
  • Проверьте, что агент запущен с правами администратора

macOS ULS не возвращает события

  • Проверьте синтаксис предикатного выражения в <query>
  • Убедитесь, что уровень (level) не слишком высокий для искомых событий
  • Протестируйте предикат через команду log stream --predicate в терминале

Высокое потребление ресурсов

  • Используйте <restrict> и <ignore> для фильтрации ненужных строк
  • Увеличьте <frequency> для команд с частым выводом
  • Ограничьте <age> для директорий с большим количеством файлов
  • Используйте XPATH-фильтрацию для EventChannel, чтобы исключить шумные события

Подробнее об установке агентов: Установка агента Wazuh

Подробнее о сценариях использования: Сценарии использования Wazuh

Last updated on