Nastavení Winlogbeat pro odesílání Windows Event Logů do Graylogu
Nastavení Winlogbeat pro odesílání Windows Event Logů do Graylogu
Winlogbeat bude číst Windows Event Logy a přes output.logstash je odesílat do Beats inputu v Graylogu. Příklad navazuje na dvouserverovou instalaci, ve které Graylog běží na graylog01 a Data Node na graylog02.
📌 Pro Graylog používáme output.logstash. output.elasticsearch ponecháme vypnutý a příkaz winlogbeat setup nespouštíme.
1. Vytvoření Beats inputu
V Graylogu otevřeme:
System / Inputs
- V poli Select input vybereme
Beats. - Klikneme na Launch new input.
- Nastavíme:
- Title:
Winlogbeat - Bind address: IP adresu Graylogu, případně
0.0.0.0 - Port:
5044 - Global: zapneme jen tehdy, když má input poslouchat na všech Graylog serverech
- Title:
- Klikneme na Launch input.
- Dokončíme Input Setup Wizard. V Graylogu 7.1 input do dokončení průvodce neběží.
📌 V edici Graylog Open obvykle zvolíme Skip Illuminate a data nasměrujeme do streamu používajícího Default index set. Delší retenci serverových logů nastavíme samostatným streamem podle článku Základní nastavení Graylogu po instalaci.
Na firewallu graylog01 povolíme TCP/5044 jen z adres spravovaných Windows zařízení. Z klienta ověříme dostupnost:
Test-NetConnection graylog01 -Port 5044
2. Instalace Winlogbeatu z MSI
📌 Příklad používá MSI instalaci Winlogbeatu 9.3.0 v cestě:
C:\Program Files\Elastic\Beats\9.3.0\winlogbeat
Po instalaci ověříme službu i příkaz, kterým byla zaregistrována:
Get-Service winlogbeat
Get-CimInstance Win32_Service -Filter "Name='winlogbeat'" |
Select-Object Name, State, StartMode, PathName
💡 PathName je důležité při řešení problémů: ukazuje skutečný konfigurační soubor i případné parametry path.home, path.data a path.logs. Při upgradu se může cesta s číslem verze změnit.
3. Základní konfigurace stanice nebo serveru
Upravíme soubor:
C:\Program Files\Elastic\Beats\9.3.0\winlogbeat\winlogbeat.yml
Základní konfigurace:
winlogbeat.event_logs:
- name: Application
ignore_older: 72h
- name: System
ignore_older: 72h
- name: Security
ignore_older: 72h
- name: Windows PowerShell
event_id: 400, 403, 600, 800
ignore_older: 72h
- name: Microsoft-Windows-PowerShell/Operational
event_id: 4103, 4104, 4105, 4106
ignore_older: 72h
output.logstash:
hosts: ["graylog01:5044"]
📌 ignore_older: 72h omezuje první načtení starých událostí. Pokud potřebujeme při prvním nasazení poslat i starší záznamy, hodnotu zvětšíme nebo dočasně vynecháme.
⚠️ V konfiguraci ponecháme aktivní právě jeden output. Zakomentujeme zejména případné bloky output.elasticsearch, output.console a output.file. Pro Graylog také nespouštíme winlogbeat setup, protože ten připravuje objekty pro Elastic Stack.
4. Volitelné logy podle role počítače
Do winlogbeat.event_logs přidáme jen kanály, které na konkrétním počítači existují. Jejich přesné názvy ověříme příkazem:
Get-WinEvent -ListLog * | Where-Object IsEnabled | Select-Object -ExpandProperty LogName
4.1 Sysmon
Pokud je Sysmon nainstalovaný:
- name: Microsoft-Windows-Sysmon/Operational
ignore_older: 72h
4.2 Doménový řadič a LDAP události
Pouze na doménové řadiče přidáme:
- name: Directory Service
event_id: 2886, 2887, 2888, 2889
ignore_older: 72h
📌 Událost 2889, která identifikuje klienta a typ nezabezpečené LDAP vazby, vyžaduje diagnostické logování kategorie 16 LDAP Interface Events na úrovni 2. Postup je v článku Detekce nezabezpečených LDAP vazeb v prostředí Active Directory. Události 2886 až 2888 mají jiný účel a zapnutí této diagnostiky pro ně není podmínkou.
4.3 Microsoft DHCP Server
Pouze na DHCP server přidáme:
- name: Microsoft-Windows-DHCP Server Events/Admin
ignore_older: 72h
- name: Microsoft-Windows-DHCP Server Events/Operational
ignore_older: 72h
4.4 Hyper-V
Pouze na Hyper-V hosty přidáme alespoň administrační kanály správy virtuálních počítačů a worker procesů:
- name: Microsoft-Windows-Hyper-V-VMMS/Admin
ignore_older: 72h
- name: Microsoft-Windows-Hyper-V-Worker/Admin
ignore_older: 72h
Další Hyper-V kanály přidáváme až podle konkrétní potřeby a po ověření jejich názvu pomocí Get-WinEvent -ListLog *Hyper-V*.
5. Kontrola konfigurace a spojení
PowerShell spustíme jako správce:
Set-Location 'C:\Program Files\Elastic\Beats\9.3.0\winlogbeat'
.\winlogbeat.exe test config -c .\winlogbeat.yml -e
.\winlogbeat.exe test output -c .\winlogbeat.yml -e
První příkaz kontroluje syntaxi, druhý připojení k Beats inputu. Potom službu restartujeme:
Restart-Service winlogbeat
Get-Service winlogbeat
Pokud služba dosud neběžela, použijeme místo restartu Start-Service winlogbeat.
✅ Než službu spustíme, musí projít jak test config, tak test output.
V Graylogu otevřeme System / Inputs, u inputu vybereme Input Diagnosis a ověříme příchozí zprávy. V Search lze při výchozím prefixování Beats polí použít například:
_exists_:winlogbeat_winlog_computer_name
Na reálné zprávě ověříme zejména pole:
winlogbeat_winlog_computer_namewinlogbeat_winlog_channelwinlogbeat_event_code
📌 Prefix závisí na nastavení inputu. Pokud se pole jmenují jinak, další dotazy přizpůsobíme skutečné zprávě, ne pouze příkladům v článku.
6. Zapnutí TLS
⚠️ Bez TLS jsou události na síti nešifrované. Pro produkční provoz na Beats inputu nastavíme serverový certifikát a privátní klíč a ve Winlogbeatu důvěryhodnou CA:
output.logstash:
hosts: ["graylog01.example.cz:5044"]
ssl.certificate_authorities:
- "C:/Program Files/Elastic/Beats/9.3.0/winlogbeat/certs/ca.pem"
ssl.verification_mode: full
📌 DNS jméno v hosts musí být v Subject Alternative Name serverového certifikátu a certifikát nesmí být expirovaný. ssl.verification_mode: none nepoužíváme jako trvalé řešení. Pokud na inputu zapneme povinné klientské certifikáty, musíme ve Winlogbeatu doplnit také ssl.certificate a ssl.key.
Po zapnutí TLS znovu provedeme test output.
7. Řešení problémů
Pokud zprávy nepřicházejí, zkontrolujeme v tomto pořadí:
Test-NetConnection graylog01 -Port 5044.- Stav a Input Diagnosis v
System / Inputs. - Výstup
winlogbeat.exe test configatest output. - Skutečný příkaz služby v
Win32_Service.PathName. - Logy v adresáři určeném parametrem
path.logs. - Existenci nakonfigurovaných Event Log kanálů.
- Oprávnění služby číst chráněné kanály, zejména
Security.
Nejčastější příčiny jsou firewall, chybné DNS jméno, nedůvěryhodný TLS certifikát, souběžně zapnutý jiný output nebo nakonfigurovaný kanál, který na daném počítači neexistuje.
Shrnutí
✅ Graylog musí mít dokončený a spuštěný Beats input na TCP/5044.
✅ Winlogbeat používá output.logstash a v konfiguraci zůstává aktivní jediný output.
✅ Kanály přidáváme podle role počítače a ověřujeme jejich skutečný název.
✅ Před restartem služby spustíme test config i test output.
✅ V produkčním provozu zabezpečíme spojení mezi Winlogbeatem a Graylogem pomocí TLS.