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 Logcollector | Splunk Inputs | Logstash / Filebeat |
|---|---|---|---|
| Файловые логи | localfile с шаблонами | monitor / inputs.conf | file input plugin / filebeat |
| Windows EventLog | eventchannel + XPATH | WinEventLog | winlogbeat |
| macOS ULS | Нативная поддержка | Нет нативной | Нет нативной |
| Удаленный syslog | Встроенный приемник | Встроенный (UDP/TCP) | syslog input plugin |
| JSON-логи | Автоматический разбор | Автоматический разбор | json codec |
| Multi-line | Фиксированный и regex | Настраиваемый | multiline codec |
| Команды | command / full_command | scripted input | exec input |
| Фильтрация на агенте | restrict / ignore | Нет (фильтрация на сервере) | processors / include_lines |
| Стоимость | Бесплатно | Коммерческая | Бесплатно (базовая) |
Конвейер обработки логов
Собранные логи проходят через три этапа обработки на сервере Wazuh:
- Предварительное декодирование - извлечение базовых полей (временная метка, имя хоста, программа)
- Декодирование - структурированный разбор полей с использованием деко деров
- Сопоставление с правилами - генерация алертов на основании правил обнаружения
Все логи (включая не вызвавшие алертов) сохраняются в архив /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