Přeskočit obsah

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
    - !EQ
      - !ITEM EVENT (pole)
      - "(hodnota)"
Má specifikované pole
  - !IN
    what: (pole)
    where: !EVENT
NEMÁ specifikovanou hodnotu ve specifikovaném poli
  - !NE
    - !ITEM EVENT (pole)
    - "(hodnota)"
Má jednu z více možných hodnot v poli
  - !OR
    - !EQ
      - !ITEM EVENT (pole)
      - "(hodnota1)"
    - !EQ
      - !ITEM EVENT (pole)
      - "(hodnota2)"
Má specifikovanou hodnotu, která začíná specifikovaným číslem nebo textem (prefixem), ve specifikovaném poli
  !STARTSWITH
    what: !ITEM EVENT (pole)
    prefix: "(prefix)"
Má specifikovanou hodnotu, která končí specifikovaným číslem nebo textem (postfixem), ve specifikovaném poli
  !ENDSWITH
    what: !ITEM EVENT (pole)
    prefix: "(postfix)"
NESPLŇUJE podmínku nebo sadu podmínek
  - !NOT
    what:
      !(SP-Lang výraz/-y)

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"
  1. Každý výraz vnořený pod !AND musí být pravdivý, aby log prošel tímto filtrem.
  2. V logu musí být v poli event.dataset hodnota sophos nebo vmware-vcenter, aby bylo toto !OR pravdivé.
  3. V logu musí být v poli event.action hodnota Authentication failed, failed password nebo unsuccessful login, aby bylo toto !OR pravdivé.
  4. Log musí obsahovat pole source.ip nebo pole user.id, aby bylo toto !OR pravdivé.
  5. V logu se pole user.id nesmí začínat na harry, aby bylo toto !NOT pravdivé.

Tento filtr hledá logy, které:

  • Mají hodnotu sophos nebo vmware-vcenter v poli event.dataset A
  • Mají hodnotu Authentication failed, failed password nebo unsuccessful login v poli event.action A
  • Obsahují alespoň jedno z polí source.ip nebo user.id A
  • Nemají hodnotu začínající harry v poli user.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.