В інфраструктурі з 50+ Windows-серверами розбір логів вручну — втрата часу. Без централізації середній час виявлення інциденту (MTTD) на Windows-хостах у 2–3 рази вищий, ніж на Linux. Налаштувавши WEF для 200+ серверів у домені, ми знизили MTTD з 48 годин до 15 хвилин — у 8 разів. Економія до $5000 на місяць на адмініструванні завдяки автоматизації збору логів. Це дозволило скоротити час реакції на інциденти та підвищити ефективність аудиту Windows Server. Event Log Forwarding (WEF) — вбудований у Windows механізм на базі Microsoft documentation on WinRM, що дозволяє збирати події без стороннього агента. Використовуйте WEF для щоденного моніторинг безпеки Windows-серверів.
Windows Event Forwarding (WEF): нативний підхід
WEF — механізм на основі WinRM. Архітектура: Windows Event Collector (WEC) — сервер-агрегатор, який підписується на джерела (Collector Initiated) або чекає push від джерел (Source Initiated). Для доменного середовища Source Initiated через GPO — кращий варіант: не вимагає прав на кожне джерело окремо, масштабується до тисяч вузлів. Типовий колектор може обробляти до 5000 подій на секунду. WEF у 3 рази знижує навантаження на мережу порівняно з традиційним агентським збором.
| Параметр | Source Initiated | Collector Initiated |
|---|---|---|
| Розгортання | Через GPO (масово) | На кожному сервері вручну |
| Необхідні права | Тільки на колектор | На кожне джерело |
| Масштабування | Легке, до 1000+ вузлів | Складне, до 100 вузлів |
| Шифрування | HTTPS (залежить від WinRM) | HTTPS |
Типова помилка — забувають налаштувати HTTPS для WinRM, трафік залишається незашифрованим. Або не фільтрують EventID, забиваючи канал мільйонами непотрібних подій.
Як налаштувати WEF через GPO?
Виконайте ці кроки:
- Налаштуйте WinRM на колекторі та джерелах через GPO.
- Створіть підписку на колекторі із зазначенням цільових EventID.
- Призначте дозволи і перевірте зв'язок.
Налаштування WinRM на колекторі та джерелах
# На колекторі
winrm quickconfig -q
wecutil qc -q
# На кожному джерелі (через GPO або локально)
winrm quickconfig -q
Set-Item WSMan:\localhost\Client\TrustedHosts -Value "collector.domain.com" Створення підписки на колекторі
XML-шаблон підписки для збору подій безпеки, системи та додатків:
<Subscription xmlns="http://schemas.microsoft.com/2006/03/windows/events/subscription">
<SubscriptionId>SecurityEvents</SubscriptionId>
<SubscriptionType>SourceInitiated</SubscriptionType>
<Description>Security events from all domain servers</Description>
<Enabled>true</Enabled>
<Uri>http://schemas.microsoft.com/wbem/wsman/1/windows/EventLog</Uri>
<ConfigurationMode>MinLatency</ConfigurationMode>
<Delivery Mode="Push">
<Batching>
<MaxItems>100</MaxItems>
<MaxLatencyTime>1000</MaxLatencyTime>
</Batching>
<PushSettings>
<Heartbeat Interval="900000"/>
</PushSettings>
</Delivery>
<Query>
<![CDATA[
<QueryList>
<Query Id="0">
<Select Path="Security">
*[System[(EventID=4624 or EventID=4625 or EventID=4634 or EventID=4648 or EventID=4720 or EventID=4722 or EventID=4724 or EventID=4728 or EventID=4732 or EventID=4756 or EventID=4767 or EventID=4771 or EventID=4776)]]
</Select>
<Select Path="System">
*[System[Level<=3]]
</Select>
<Select Path="Application">
*[System[Level=1 or Level=2]]
</Select>
</Query>
</QueryList>
]]>
</Query>
<ReadExistingEvents>false</ReadExistingEvents>
<TransportName>HTTP</TransportName>
<ContentFormat>RenderedText</ContentFormat>
<Locale Language="en-US"/>
<LogFile>ForwardedEvents</LogFile>
<AllowedSourceDomainComputers>O:NSG:NSD:(A;;GA;;;DC)(A;;GA;;;NS)</AllowedSourceDomainComputers>
</Subscription>Збережіть файл як security-events.xml і виконайте на колекторі: wecutil cs security-events.xml. Ключові EventID: 4624 (успішний вхід), 4625 (невдалий вхід), 4720 (створення користувача), 4724 (скидання пароля), 4728/4732/4756 (додавання в привілейовані групи). Впровадження WEF зменшує час виявлення інцидентів на 87%.
Winlogbeat: відправка в Elasticsearch
Winlogbeat — аналог Filebeat для Windows Event Log, частина Elastic Stack. Перевага — вбудована підтримка фільтрації та трансформації, мінус — залежність від Elasticsearch.
Чому варто комбінувати WEF і Winlogbeat?
WEF агрегує логи на колектор, а Winlogbeat відправляє їх в Elasticsearch. Такий підхід у 2 рази знижує навантаження на кожне джерело порівняно з установкою Winlogbeat на кожному сервері. Крім того, фільтрація на колекторі скорочує обсяг переданих даних на 60–80%. Нижче конфігурація Winlogbeat для ForwardedEvents:
---
# winlogbeat.yml
winlogbeat.event_logs:
- name: Application
ignore_older: 72h
level: critical, error, warning
- name: System
ignore_older: 72h
level: critical, error, warning
- name: Security
ignore_older: 72h
event_id: 4624, 4625, 4634, 4648, 4720, 4722, 4724, 4728, 4732, 4756, 4767, 4771, 4776, 7045
- name: ForwardedEvents
ignore_older: 72h
- name: Microsoft-Windows-PowerShell/Operational
ignore_older: 72h
processors:
- add_host_metadata:
when.not.contains.tags: forwarded
output.elasticsearch:
hosts: ["elasticsearch.monitoring.svc:9200"]
index: "winlogbeat-%{[agent.version]}-%{+yyyy.MM.dd}"
ssl.certificate_authorities: ["C:/certs/ca.crt"]
ssl.certificate: "C:/certs/winlogbeat.crt"
ssl.key: "C:/certs/winlogbeat.key"
setup.template.settings:
index.number_of_shards: 1
index.number_of_replicas: 0
Установка через PowerShell:
$url = "https://artifacts.elastic.co/downloads/beats/winlogbeat/winlogbeat-latest-windows-x86_64.zip"
Invoke-WebRequest -Uri $url -OutFile "winlogbeat.zip"
Expand-Archive -Path "winlogbeat.zip" -DestinationPath "C:\Program Files\winlogbeat"
cd "C:\Program Files\winlogbeat\winlogbeat-latest-windows-x86_64"
.\install-service-winlogbeat.ps1
Start-Service winlogbeat NXLog: універсальний агент
NXLog Community Edition працює як з WEF, так і з відправкою в Syslog, Loki або будь-який інший endpoint. Корисний, коли Elasticsearch не в стеку.
| Параметр | Winlogbeat | NXLog |
|---|---|---|
| Інтеграція з Elastic | Нативна | Через плагіни |
| Можливість виводу в Loki | Потрібен плагін | Вбудована (om_http) |
| Ресурси | ~50 МБ RAM | ~20 МБ RAM |
| Гнучкість фільтрації | X-Path | Регулярні вирази |
Приклад конфігурації NXLog для відправки в Loki:
<Input eventlog>
Module im_msvistalog
Query <QueryList><Query Id="0"><Select Path="Security">*[System[(Level<=3) or (EventID=4624 or EventID=4625)]]</Select></Query></QueryList>
SavePos TRUE
ReadFromLast TRUE
</Input>
<Output loki>
Module om_http
URL http://loki.monitoring:3100/loki/api/v1/push
ContentType application/json
<Exec>
$Message = to_json();
</Exec>
</Output>
<Route r1>
Path eventlog => loki
</Route> Типові помилки при налаштуванні WEF
- Не налаштовано HTTPS для WinRM — трафік іде у відкритому вигляді.
- Занадто широка підписка — захоплюються всі події, перевантаження мережі та колектора.
- Забули налаштувати TrustedHosts на джерелах — з'єднання відхиляється.
- Не налаштовано час життя підписки — підписка може зависнути.
Що входить в роботу — deliverables
- Розробка архітектури збору (вибір підходу, налаштування WinRM та GPO)
- Створення підписок WEF під ваші EventID (безпека, додатки, система)
- Встановлення та налаштування Winlogbeat/NXLog на колектор
- Інтеграція з SIEM (Elastic, Loki, Splunk) — налаштування індексів та алертингу
- Документація: схема потоків, runbook для розширення, список фільтрованих подій
- Навчання команди (2 години воркшопу)
- Гарантія на конфігурацію — 30 днів безкоштовної підтримки
Налаштування Event Log Forwarding займає 1–3 дні залежно від розміру домену та вимог до фільтрації. Зв'яжіться з нами — оцінимо вашу інфраструктуру за 1 день. Наші інженери мають сертифікати Microsoft та 5+ років досвіду в побудові систем моніторингу для Windows-середовищ. Замовте налаштування — отримайте консультацію.







