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
!AND
musí být pravdivý, aby log prošel tímto filtrem. - V logu musí být v poli
event.dataset
hodnotasophos
nebovmware-vcenter
, aby bylo toto!OR
pravdivé. - V logu musí být v poli
event.action
hodnotaAuthentication failed
,failed password
nebounsuccessful login
, aby bylo toto!OR
pravdivé. - Log musí obsahovat pole
source.ip
nebo poleuser.id
, aby bylo toto!OR
pravdivé. - V logu se pole
user.id
nesmí začínat naharry
, aby bylo toto!NOT
pravdivé.
Tento filtr hledá logy, které:
- Mají hodnotu
sophos
nebovmware-vcenter
v polievent.dataset
A - Mají hodnotu
Authentication failed
,failed password
nebounsuccessful login
v polievent.action
A - Obsahují alespoň jedno z polí
source.ip
nebouser.id
A - Nemají hodnotu začínající
harry
v 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
.