Predikáty¶
predikát je filtr složený z podmínek vytvořených pomocí SP-Lang výrazů.
Jak psát predikáty¶
Než můžete vytvořit filtr, musíte znát možné pole a hodnoty logů, které hledáte. Abyste zjistili, jaká pole a hodnoty mají vaše logy, přejděte do Průzkumníka ve webové aplikaci TeskaLabs LogMan.io.
SP-Lang výrazy¶
Sestavte podmínky pro filtr pomocí SP-Lang výrazů. Filtr kontroluje příchozí log, aby zjistil, zda log splňuje podmínky tím, že činí výrazy "pravdivými".
Kompletní dokumentaci k SP-Lang najdete zde.
Běžné SP-Lang výrazy:
| Výraz | Význam |
|---|---|
!AND |
VŠECHNY kritéria vnořená pod !AND musí být splněna, aby byl !AND pravdivý |
!OR |
Alespoň JEDNO ze kritérií vnořených pod !OR musí být splněno, aby bylo !OR pravdivé |
!EQ |
"Rovná se". Musí se rovnat nebo odpovídat hodnotě, aby bylo pravdivé |
!NE |
"Nerovná se", nebo neodpovídá. Musí se NEROVNAT (nesmí odpovídat hodnotě), aby bylo pravdivé |
!IN |
Hledá hodnotu v množině hodnot (what v where) |
!STARTSWITH |
Hodnota pole (what) musí začínat specifikovaným textem (prefix), aby byla pravdivá |
!ENDSWITH |
Hodnota pole (what) musí končit specifikovaným textem (postfix), aby byla pravdivá |
!ITEM EVENT |
Získává informace z obsahu příchozích logů (umožňuje filtru přistupovat k polím a hodnotám v příchozích logech) |
!NOT |
Hledá opak výrazu vnořeného pod !NOT (následující what) |
Podmínky¶
Použijte tento průvodce ke správnému strukturování jednotlivých podmínek.
Závorky
Slova v závorkách () jsou náhradní symboly pro ukázku, kam vkládat hodnoty. SP-Lang nepoužívá závorky.
| Filtr pro log, který: | SP-Lang |
|---|---|
| Má specifikovanou hodnotu ve specifikovaném poli |
|
| Má specifikované pole |
|
| NEMÁ specifikovanou hodnotu ve specifikovaném poli |
|
| Má jednu z více možných hodnot v poli |
|
| Má specifikovanou hodnotu, která začíná specifikovaným číslem nebo textem (prefixem), ve specifikovaném poli |
|
| Má specifikovanou hodnotu, která končí specifikovaným číslem nebo textem (postfixem), ve specifikovaném poli |
|
| NESPLŇUJE podmínku nebo sadu podmínek |
|
Příklad¶
Abyste pochopili, co jednotlivé výrazy znamenají v kontextu tohoto příkladu, klikněte na ikony .
!AND #(1)
- !OR #(2)
- !EQ
- !ITEM EVENT event.dataset
- "sophos"
- !EQ
- !ITEM EVENT event.dataset
- "vmware-vcenter"
- !OR #(3)
- !EQ
- !ITEM EVENT event.action
- "Authentication failed"
- !EQ
- !ITEM EVENT event.action
- "failed password"
- !EQ
- !ITEM EVENT event.action
- "unsuccessful login"
- !OR #(4)
- !IN
what: source.ip
where: !EVENT
- !IN
what: user.id
where: !EVENT
- !NOT #(5)
what:
!STARTSWITH
what: !ITEM EVENT user.id
prefix: "harry"
- Každý výraz vnořený pod
!ANDmusí být pravdivý, aby log prošel tímto filtrem. - V logu musí být v poli
event.datasethodnotasophosnebovmware-vcenter, aby bylo toto!ORpravdivé. - V logu musí být v poli
event.actionhodnotaAuthentication failed,failed passwordnebounsuccessful login, aby bylo toto!ORpravdivé. - Log musí obsahovat pole
source.ipnebo poleuser.id, aby bylo toto!ORpravdivé. - V logu se pole
user.idnesmí začínat naharry, aby bylo toto!NOTpravdivé.
Tento filtr hledá logy, které:
- Mají hodnotu
sophosnebovmware-vcenterv polievent.datasetA - Mají hodnotu
Authentication failed,failed passwordnebounsuccessful loginv polievent.actionA - Obsahují alespoň jedno z polí
source.ipnebouser.idA - Nemají hodnotu začínající
harryv poliuser.id
Pro další nápady a tipy na formátování si prohlédněte tento příklad v kontextu detekčního pravidla včetně podrobností o sekci predicate.