Přeskočit obsah

Deklarace pro definování základních linií

Deklarace pro základní linie jsou načítány z Knihovny ze složky specifikované v konfiguraci, například /Baseliners.

Note

Baseliner používá ve výchozím nastavení /Schemas/ECS.yaml, takže /Schemas/ECS.yaml musí být také přítomen v Knihovně.

Deklarace

Toto je příklad definice základní linie, umístěný v složce /Baseliners v Knihovně:

---
define:
    name: Dataset
    description: Creates baseline for each dataset and trigger alarms if the actual number deviates
    type: baseliner

baseline:
    region: Česká republika
    period: den
    learning: 4
    classes: [pracovní dny, víkendy, svátky]

evaluate:
    key: event.dataset
    timestamp: "@timestamp"

analyze:
    test:
        !AND
        - !LT
            - !ARG VALUE
            - 1
        - !GT
            - !ARG MEAN
            - 10.0

trigger:
    - event:
            # Popis hrozby
            # https://www.elastic.co/guide/en/ecs/master/ecs-threat.html
            threat.framework: "MITRE ATT&CK"
            threat.indicator.sightings: !ITEM EVENT hodnota
            threat.indicator.confidence: "Vysoká"
            threat.indicator.name: !ITEM EVENT dimenze

    - notification:
            type: email
            to: ["myemail@example.co"]
            template: "/Templates/Email/Notification_baseliner_dimension.md"

            variables:
                name: "Logy nepřicházejí do datasetu během dané UTC hodiny."
                dimension: !ITEM EVENT dimenze
                hour: !ITEM EVENT hodina

Sekce

baseline

baseline: # (1)
    region: Česká republika #(2)
    period: den # (3)
    learning: 4  # (4)
    classes: [pracovní dny, víkendy, svátky] # (5)
  1. Definuje, jak je daná základní linie postavena.
  2. Definuje, ve kterém regionu se aktivita odehrává (kvůli výpočtu svátků a podobně).
  3. Definuje časové období pro základní linii. Období může být buď den nebo týden.
  4. Definuje počet období (v tomto případě den), které uplynou od začátku příjmu vstupů do baselineru, než uživatel může vidět analýzu základní linie. Další podrobnosti níže.
  5. Definuje, které dny v týdnu chceme monitorovat. Třídy mohou zahrnovat jakékoli/všechny: pracovní dny, víkendy, a svátky.

learning
Pole learning definuje fázi učení.
Fáze učení je doba od prvního výskytu hodnoty dimenze ve vstupu instance baselineru do momentu, kdy je základní linie zobrazena uživateli a probíhá analýza. V deklaraci je learning počet období. Fáze učení je vypočítávána samostatně pro svátky, víkendy a pracovní dny. Základní linie jsou přes noc obnovovány (údržba).

V tomto příkladu je period den, takže learning jsou 4 dny. S ohledem na kalendář fáze učení 4 dní začínající v pátek znamená 4 pracovní dny, a tedy končí ve středu večer.

predicate (volitelné)

Sekce predicate filtruje příchozí události, které mají být považovány za aktivitu v základní linii.

Filtry pište pomocí jazyka TeskaLabs SP-Lang. Navštivte Predikáty nebo dokumentaci SP-Lang pro podrobnosti.

evaluate

Tato sekce specifikuje, které atributy z události budou použity při vytváření základní linie.

evaluate:
    key: event.dataset # (1)
    timestamp: "@timestamp" # (2)
  1. Specifikuje atribut/entitu k monitorování.
  2. Specifikuje atribut, ve kterém je uložena časová dimenze aktivity události.

analyze

Sekce test v analyze specifikuje, kdy spustit spouštěč, pokud se skutečná aktivita (!ARG VALUE) odchýlí od základní linie. Testy pište pomocí SP-Lang.

analyze:
    test:
        !AND #(1)
        - !LT #(2)
            - !ARG VALUE # (3)
            - 1
        - !GT # (4)
            - !ARG MEAN # (5)
            - 10.0
  1. Všechny výrazy zanořené pod AND musí být pravdivé, aby test prošel. Zde, pokud je hodnota menší než 1 a průměr je větší než 10, spustí se spouštěč.
  2. "Méně než"
  3. Získat (!ARG) hodnotu (VALUE). Pokud je hodnota menší než 1, jak je specifikováno, výraz !LT je pravdivý.
  4. "Větší než"
  5. Získat (!ARG) průměr (MEAN). Pokud je průměr větší než 10.0, jak je specifikováno, výraz !GT je pravdivý.

Následující atributy jsou k dispozici a používají se v notaci SP-Lang:

TENANT: "str",
VALUE: "ui64",
STDEV: "fp64",
MEAN: "fp64",
MEDIAN: "fp64",
VARIANCE: "fp64",
MIN: "ui64",
MAX: "ui64",
SUM: "ui64",
HOUR: "ui64",
KEY: "str",
CLASS: "str",

trigger

Sekce trigger definuje aktivitu, která je spuštěna po úspěšné analýze. (Více o triggery.)

Baseliner vytváří události

Při každé analýze (každou hodinu) vytváří Baseliner událost k shrnutí své analýzy. Tyto události vytvořené Baselinerem jsou k dispozici pro použití (jako EVENT) s výrazy jako !ARG a !ITEM, což znamená, že můžete čerpat hodnoty z událostí pro vaše spouštěcí aktivity.

Tyto události vytvořené Baselinerem zahrnují pole:

tenant
Název tenanta, ke kterému základní linie patří.

dimension
Dimenze, ke které základní linie patří, jak je specifikováno v evaluate.

class
Třída, ze které byla základní linie vypočítána.
Možnosti zahrnují: pracovní dny, víkendy, a svátky

hour
Číslo UTC hodiny, ve které analýza proběhla.

value
Hodnota aktuálního počtu událostí pro danou UTC hodinu.

Notifikační trigger

Notifikační trigger pošle zprávu, například e-mail. Viz Emailové notifikace pro více informací o zasílání emailových notifikací a používání emailových šablon.

Příklad notifikačního triggeru:

trigger:
    - notification:
            type: email #(1)
            to: ["myemail@example.co"] # (2)
            template: "/Templates/Email/Notification_baseliner_dimension.md" # (3)

            variables: # (4)
                name: "Logy nepřicházejí do datasetu během dané UTC hodiny."
                dimension: !ITEM EVENT dimenze # (5)
                hour: !ITEM EVENT hodina
  1. Specifikuje emailovou notifikaci
  2. Adresa příjemce
  3. Cesta k souboru emailové šablony v Knihovně LogMan.io
  4. Začíná sekce, která dává instrukce, jak vyplnit prázdná pole z emailové šablony. Prázdná pole v šabloně použité v tomto příkladu jsou name, dimension a hour.
  5. Používá SP-Lang k získání informací (!ITEM) z události vytvořené Baselinerem (EVENT) (viz níže). V tomto případě bude pole dimension v šabloně vyplněno hodnotou dimension převzatou z události vytvořené Baselinerem.

Event trigger

Můžete použít event trigger k vytvoření logu nebo události, kterou budete moci vidět v uživatelském rozhraní TeskaLabs LogMan.io.

Příklad event triggeru:

    - event: # (1)
            threat.framework: "MITRE ATT&CK"
            threat.indicator.sightings: !ITEM EVENT hodnota
            threat.indicator.confidence: "Vysoká"
            threat.indicator.name: !ITEM EVENT dimenze
  1. Tato nová událost je popisem hrozby použitím polí hrozeb z Elasticsearch

Analýza v uživatelském rozhraní

Ve výchozím nastavení poskytuje uživatelské rozhraní LogMan.io zobrazení analýz pro uživatele a host.

Zadejte analýzu ve schématu (ve výchozím nastavení: /Schemas/ECS.yaml) takto:

  host.id:
    type: "str"
    analysis: host

  user.id:
    type: "str"
    analysis: user

  ...

Pokud je tenant nakonfigurován používat toto schéma (ve výchozím nastavení ECS), pole host.id a user.id v Průzkumník zobrazí odkaz na danou základní linii.

Analýza host používá základní linii s názvem Host ve výchozím nastavení:

---
define:
  name: Host

Analýza user používá základní linii s názvem User ve výchozím nastavení:

---
define:
  name: User

Pokud specifická analýza nemůže nalézt svou přidruženou základní linii, uživatelské rozhraní zobrazí prázdnou obrazovku pro danou analýzu.

Note

Obě základní linie potřebné pro analýzu jsou distribuovány jako součást Společné knihovny LogMan.io.