První kroky v Graylogu
První kroky v Graylogu
Článek popisuje běžnou práci technika s již nasazeným Graylogem: výběr dat, psaní dotazů a kontrolu výsledků. Příklady předpokládají výchozí prefixování polí z Beats inputu.
📌 Pokud se pole v konkrétní instalaci jmenují jinak, vždy použijeme názvy z detailu skutečné zprávy.
Související postupy:
1. K čemu Graylog slouží
Graylog centralizuje události z Windows, serverů, aplikací a síťových prvků. Technik v něm může podle času, zdroje a polí dohledat například:
- chybu na konkrétním serveru
- úspěšná a neúspěšná přihlášení
- PowerShell a Sysmon události
- nezabezpečené LDAP vazby
- výpadky nebo změny na síťových prvcích
Pro každodenní práci jsou nejdůležitější:
- Search: hledání a analýza zpráv
- Streams: předem vymezené skupiny dat
- Dashboards: provozní přehledy
- Alerts / Events: automatická detekce a upozornění
2. Správné pořadí hledání
- Nastavíme časový rozsah.
- Podle potřeby vybereme jeden nebo více streamů.
- Spustíme jednoduchý dotaz.
- Otevřeme detail relevantní zprávy.
- Další dotaz sestavíme z polí této zprávy.
💡 Při aktuálním problému začneme rozsahem Last 15 minutes nebo Last 1 hour. Pro událost se známým časem použijeme Absolute time range. Příliš široký rozsah zpomaluje dotaz a často přidá nerelevantní výsledky.
Pokud nevíme, ve kterém streamu zpráva je, neomezujeme nejprve žádný stream. Výběr streamu je filtr dat, nikoli součást textu dotazu.
3. Základní syntaxe
Hledání textu ve výchozích textových polích:
error
Hledání podle pole:
winlogbeat_winlog_computer_name:SERVER01
Přesná hodnota obsahující mezeru:
winlogbeat_winlog_channel:"Directory Service"
Kombinace podmínek:
winlogbeat_winlog_computer_name:SERVER01 AND winlogbeat_event_code:4625
Více hodnot stejného pole:
winlogbeat_event_code:(4624 OR 4625)
Vyloučení:
winlogbeat_winlog_channel:"Security" AND NOT winlogbeat_winlog_computer_name:TESTPC01
Existence pole:
_exists_:winlogbeat_winlog_computer_name
📌 Operátory AND, OR a NOT píšeme velkými písmeny a složitější části uzavíráme do závorek.
❌ Samotné * ani wildcard začínající * nebo ? tento parser nepřijme; pro ověření pole použijeme _exists_:nazev_pole. Názvy polí kopírujeme z detailu zprávy, protože jsou citlivé na přesný zápis.
4. Praktické dotazy
Zprávy z konkrétního počítače
winlogbeat_winlog_computer_name:SERVER01
Hodnotu SERVER01 nahradíme přesnou hodnotou z události. Winlogbeat může posílat krátké jméno nebo FQDN.
Neúspěšná přihlášení
winlogbeat_winlog_channel:"Security" AND winlogbeat_event_code:4625
Úspěšná a neúspěšná přihlášení
winlogbeat_winlog_channel:"Security" AND winlogbeat_event_code:(4624 OR 4625)
📌 Událost 4624 neznamená automaticky přihlášení člověka k ploše. Zahrnuje různé typy přihlášení včetně síťových a servisních. Dotaz na interaktivní uživatele je uveden v článku o praktických dashboardech.
PowerShell Script Block Logging
winlogbeat_winlog_channel:"Microsoft-Windows-PowerShell/Operational" AND winlogbeat_event_code:4104
📌 Události vznikají pouze tehdy, když je zapnutý odpovídající PowerShell logging.
Sysmon Process Create
winlogbeat_winlog_channel:"Microsoft-Windows-Sysmon/Operational" AND winlogbeat_event_code:1
📌 Dotaz funguje pouze na počítačích s nainstalovaným a správně nakonfigurovaným Sysmonem.
Nezabezpečené LDAP vazby
winlogbeat_winlog_channel:"Directory Service" AND winlogbeat_event_code:2889
Událost 2889 vzniká na doménovém řadiči po zapnutí diagnostiky 16 LDAP Interface Events na úroveň 2. Neznamená každý provoz na portu 389, ale nezabezpečené LDAP vazby popsané v samostatném článku.
Události Microsoft DHCP
winlogbeat_winlog_computer_name:DHCP01 AND (winlogbeat_winlog_channel:"Microsoft-Windows-DHCP Server Events/Admin" OR winlogbeat_winlog_channel:"Microsoft-Windows-DHCP Server Events/Operational")
Kanály musí být přidané v konfiguraci Winlogbeatu na DHCP serveru.
5. Jak číst jednu zprávu
V detailu zprávy kontrolujeme:
timestamp- zdroj nebo
winlogbeat_winlog_computer_name winlogbeat_winlog_channelwinlogbeat_event_codemessage- pole v
winlogbeat_winlog_event_data_*
💡 Z názvu pole lze v Search vytvořit další podmínku. Hodnotu ale interpretujeme podle dokumentace daného poskytovatele události. Stejné event ID může mít význam pouze v kombinaci s konkrétním kanálem nebo providerem.
6. Když hledání nefunguje
Query parsing error
❌ Zkontrolujeme závorky, uvozovky, operátory a wildcard. Pro všechny zprávy s určitým polem nepoužijeme field:*, ale:
_exists_:field
Unknown field
⚠️ Pole není známé v aktuálně prohledávaných indexech. Postup:
- rozšíříme časový rozsah
- zrušíme omezení na stream
- najdeme jednu očekávanou zprávu podle textu nebo
source - z detailu zkopírujeme skutečný název pole
❌ Nepoužíváme názvy jako winlogbeat_source, pokud je reálná zpráva neobsahuje.
Dotaz je validní, ale nic nevrací
Ověříme:
- zda událost ve Windows skutečně vznikla
- zda Winlogbeat daný kanál čte
- zda Beats input přijímá data
- zda stream událost nezpřístupňuje jen jiné skupině uživatelů
- zda timestamp leží ve vybraném rozsahu
7. Uložené hledání a dashboard
Opakovaný dotaz uložíme v Search přes Save. Saved search uchová dotaz, čas, streamy a filtry a hodí se pro další šetření.
Pro průběžný přehled vytvoříme widget přes Create + nebo hledání exportujeme do dashboardu. Každý widget má vlastní dotaz a časový rozsah; podrobný postup je v článku Praktické dashboardy a uložená hledání v Graylogu.
Shrnutí
✅ Nejdřív nastavíme časové okno, potom stream a až poté zpřesňujeme dotaz.
✅ Názvy polí kopírujeme z detailu skutečné zprávy.
✅ Pro ověření existence pole používáme _exists_:nazev_pole.
✅ Opakované dotazy ukládáme jako saved searches a provozní přehledy jako widgety dashboardu.
⚠️ Význam události vždy posuzujeme společně s kanálem, providerem a obsahem zprávy.