Windows Event Log в Graylog
Общая последовательность действий настройки Graylog для мониторинга событий Windows следующая.
1. На сервере Graylog конфигурируем Input, чтобы сервер мог принимать подключения по TCP на нужном нам порту.
2. В разделе System/Sidecars создаем новый Log Collector. Коллектор логов будет содержать шаблон для наших конфигураций. В плане структуры конфигурации можно ориентироваться на стандартный шаблон для Windows с именем winlogbeat, содержащий по умолчанию полезную директиву, предотвращающую обработку логов старше 96 часов: ignore_older: 96h.
Если нам требуется мониторить какие-либо расширенные или просто более конкретные разделы логов - необходимо получить их имена. Имена для всех логов конкретной ОС Windows легко можно получить с помощью PS-команды:
Get-WinEvent -ListLog * | Format-List -Property LogName
Если нам необходимо нечто более специфическое, можно воспользоваться средтвами фильтрации PowerShell. Получим, к примеру, все логи, содержащие “Exchange” в своем названии:
Get-WinEvent -ListLog * | Where-Object logname -like "*exchang*" | format-list -Property logname
Пример конфига коллектора для сбора стандартных логов application, security, system + всех разделов логов Microsoft Exchange:
# Needed for Graylog fields_under_root: true fields.collector_node_id: ${sidecar.nodeName} fields.gl2_source_collector: ${sidecar.nodeId} output.logstash: hosts: ["${user.graylog_host}:5044"] path: data: ${sidecar.spoolDir!"C:\\Program Files\\Graylog\\sidecar\\cache\\winlogbeat"}\data logs: ${sidecar.spoolDir!"C:\\Program Files\\Graylog\\sidecar"}\logs tags: - windows winlogbeat: event_logs: - name: Application level: critical, error ignore_older: 96h - name: System level: critical, error ignore_older: 96h - name: Security level: critical, error ignore_older: 96h - name: MSExchange Management level: critical, error ignore_older: 96h - name: Microsoft-Exchange-ActiveMonitoring/MaintenanceDefinition level: critical, error ignore_older: 96h - name: Microsoft-Exchange-ActiveMonitoring/MaintenanceResult level: critical, error ignore_older: 96h - name: Microsoft-Exchange-ActiveMonitoring/MonitorDefinition level: critical, error ignore_older: 96h - name: Microsoft-Exchange-ActiveMonitoring/MonitorResult level: critical, error ignore_older: 96h - name: Microsoft-Exchange-ActiveMonitoring/ProbeDefinition level: critical, error ignore_older: 96h - name: Microsoft-Exchange-ActiveMonitoring/ProbeResult level: critical, error ignore_older: 96h - name: Microsoft-Exchange-ActiveMonitoring/ResponderDefinition level: critical, error ignore_older: 96h - name: Microsoft-Exchange-ActiveMonitoring/ResponderResult level: critical, error ignore_older: 96h - name: Microsoft-Exchange-DxStoreHA/Execution level: critical, error ignore_older: 96h - name: Microsoft-Exchange-DxStoreHA/General level: critical, error ignore_older: 96h - name: Microsoft-Exchange-DxStoreHA/Performance level: critical, error ignore_older: 96h - name: Microsoft-Exchange-DxStoreHA/Server level: critical, error ignore_older: 96h - name: Microsoft-Exchange-DxStoreHA/Validation level: critical, error ignore_older: 96h - name: Microsoft-Exchange-ESE/Operational level: critical, error ignore_older: 96h - name: Microsoft-Exchange-HighAvailability/AppLogMirror level: critical, error ignore_older: 96h - name: Microsoft-Exchange-HighAvailability/BlockReplication level: critical, error ignore_older: 96h - name: Microsoft-Exchange-HighAvailability/Debug level: critical, error ignore_older: 96h - name: Microsoft-Exchange-HighAvailability/Monitoring level: critical, error ignore_older: 96h - name: Microsoft-Exchange-HighAvailability/Network level: critical, error ignore_older: 96h - name: Microsoft-Exchange-HighAvailability/Operational level: critical, error ignore_older: 96h - name: Microsoft-Exchange-HighAvailability/Seeding level: critical, error ignore_older: 96h - name: Microsoft-Exchange-HighAvailability/TruncationDebug level: critical, error ignore_older: 96h - name: Microsoft-Exchange-MailboxAssistants/Debug level: critical, error ignore_older: 96h - name: Microsoft-Exchange-MailboxAssistants/Exception level: critical, error ignore_older: 96h - name: Microsoft-Exchange-MailboxAssistants/Operational level: critical, error ignore_older: 96h - name: Microsoft-Exchange-MailboxDatabaseFailureItems/Debug level: critical, error ignore_older: 96h - name: Microsoft-Exchange-MailboxDatabaseFailureItems/Operational level: critical, error ignore_older: 96h - name: Microsoft-Exchange-ManagedAvailability/InvokeNowRequest level: critical, error ignore_older: 96h - name: Microsoft-Exchange-ManagedAvailability/InvokeNowResult level: critical, error ignore_older: 96h - name: Microsoft-Exchange-ManagedAvailability/Monitoring level: critical, error ignore_older: 96h - name: Microsoft-Exchange-ManagedAvailability/RecoveryActionLogs level: critical, error ignore_older: 96h - name: Microsoft-Exchange-ManagedAvailability/RecoveryActionResults level: critical, error ignore_older: 96h - name: Microsoft-Exchange-ManagedAvailability/RemoteActionLogs level: critical, error ignore_older: 96h - name: Microsoft-Exchange-ManagedAvailability/StartupNotification level: critical, error ignore_older: 96h - name: Microsoft-Exchange-ManagedAvailability/ThrottlingConfig level: critical, error ignore_older: 96h - name: Microsoft-Exchange-PushNotifications/Analytics level: critical, error ignore_older: 96h - name: Microsoft-Exchange-PushNotifications/Client level: critical, error ignore_older: 96h - name: Microsoft-Exchange-PushNotifications/Debug level: critical, error ignore_older: 96h - name: Microsoft-Exchange-PushNotifications/Operational level: critical, error ignore_older: 96h - name: Microsoft-Exchange-Troubleshooters/Operational level: critical, error ignore_older: 96h - name: Microsoft-Windows-Security-ExchangeActiveSyncProvisioning/Operational level: critical, error ignore_older: 96h
Ознакомиться подробнее с принципами конфигурирования winlogbeat можно по следующей ссылке:
https://www.elastic.co/guide/en/beats/winlogbeat/current/configuration-winlogbeat-options.html
3. После создания коллектора логов, содержащего шаблон, можно создать конфигурацию из данного коллектора. Именно конкретная конфигурация присваивается определенному клиенту (sidecar).
Общая схема настроек на скриншоте.
4. Теперь нам необходимо завести клиента (и его токен), который будет заниматься сбором логов как показано ниже.
В token name пропишем имя нашего клиента и далее нажмём create token. Запишем сгенерированный токен - он потребуется нам во время установки sidecar на клиентской системе.
5. Теперь мы можем устанавливать клиента. Качаем клиента отсюда: https://github.com/Graylog2/collector-sidecar/releases
При установке нам необходимо указать URL API Graylog, его имя (как в token name), а также, собственно, сам токен. Пример:
6. Устанавливаем связь между созданной нами конфигурации и заведенным клиентом через раздел Administration в System/Sidecars, подтверждая назначение конфигурации.
7. Перейдя в раздел overview - можем убедиться в статусе нашего клиента.
8. Если на наших созданных клиентах много релевантных логов и с передачей всё хорошо - скорее всего увидим изменения в счётчике логов в правой верхней области Graylog.
9. Чтобы искать какие-либо события - воспользуемся поиском в разделе Search, установив какой-нибудь временной интервал, или написав запрос. К примеру:
source:server_name