Přeskočit obsah

Vyhledávání IP adres

TeskaLabs LogMan.io nabízí optimalizované sady vyhledávání pro IP adresy, nazvané IP Lookups.

Existují vždy tři kroky k povolení IP Lookups:

  1. Vytvořte deklaraci vyhledávání v LogMan.io Library (popis vyhledávání)
  2. Vytvořte vyhledávání a jeho obsah v sekci Lookups v UI (obsah vyhledávání)
  3. Přidejte vyhledávání do relevantních pravidel parsování a/nebo korelace v Library (aplikace vyhledávání)

Vyhledání IP adresy na geografickou polohu

IP Geo Location je proces, kdy na základě rozsahu IP adres, jako je 192.168.1.1192.168.1.10, chcete získat geografickou polohu IP adresy, jako je název města, zeměpisná šířka, délka apod.

Vestavěné vyhledávání IP na geografickou polohu

Když IP adresa z události neodpovídá žádnému z poskytnutých geo vyhledávání, bude použito výchozí veřejné vyhledávání IP adres poskytované TeskaLabs LogMan.io.

  1. V LogMan.io přejděte do Library.

  2. V Library, přejděte do složky /Lookups.

  3. Vytvořte novou deklaraci vyhledávání pro vaše vyhledávání, jako například "ipgeolookup.yaml" s příponou YAML

  4. Přidejte následující deklaraci:

    define:
      type: lookup/ipaddressrange
      name: ipgeolookup
      group: geo
    
    keys:
      - name: range1
        type: ip
      - name: range2
        type: ip
    
    fields:
      location:
        type: geopoint
        value:
          lat: 50.0643081
          lon: 14.443938
    
      city_name:
        type: str
    

    Ujistěte se, že type je vždy lookup/ipaddressrange.

    Změňte name v sekci define na název vašeho vyhledávání.

    group se používá v obohacovacím procesu pro nalezení všech vyhledávání, která sdílí stejnou skupinu. Hodnota je unikátní identifikátor skupiny (use case), zde: geo.

    Klíče nechte tak, jak jsou, abyste specifikovali rozsahy.

    Do fields přidejte názvy a typy atributů vyhledávání. V tomto příkladu je jenom město, ale může být i poloha (zeměpisná šířka a délka) atd.:

    fields:
      name:
        type: str
      continent_name:
        type: str
      city_name:
        type: str
      location:
        type: geopoint
    

    Při použití Elastic Common Schema (ECS) jsou všechny dostupné geo pole, která mohou být použita, specifikována v dokumentaci: https://www.elastic.co/guide/en/ecs/current/ecs-geo.html

    Hodnota value bude použita jako výchozí.

    V současnosti jsou podporovány tyto typy: str, fp64, si32, geopoint a ip.

  5. Uložte

  6. V LogMan.io přejděte do Lookups.

  7. Vytvořte nové vyhledávání se stejným názvem jako výše, tj. "ipgeolookup". Specifikujte dva klíče s názvy: range1, range2.

  8. Vytvořte záznamy ve vyhledávání s rozsahy jako klíči a poli, jak je uvedeno výše (v příkladu je ve slovníku hodnot uložených ve vyhledávání pouze město).

  9. Přidejte následující obohacovač do pravidla LogMan.io Parsec, které by mělo použít vyhledávání:

    define:
      type: enricher/ip
      group: geo
    
      schema:
        ecs:
          postfix: geo.
    

    Specifikujte skupinu vyhledávání, která by měla být použita v atributu group. Měla by být stejná jako skupina uvedená výše v deklaraci vyhledávání. Tenants jsou řešeni automaticky.

    Obohacování probíhá na každém poli, které má typ ip ve schématu.

    Postfix specifikuje příponu pro atribut:

    Pokud je vstup source.ip

    Pak je výstup source.geo.<NAME_OF_THE_ATTRIBUTE>

    Když jde o výchozí veřejné GEO vyhledávání (viz výše), následující položky jsou vyplněny ve výchozím nastavení:

      city_name:
        type: str
      country_iso_code:
        type: str
      location:
        type: geopoint
      region_name:
        type: str
    

Vyhledávání rozsahu IP adres

Vyhledávání rozsahu IP adres používá rozsahy IP adres, jako je 192.168.1.1 až 192.168.1.10, jako klíče.

Deklarace vyhledávání rozsahu IP adres musí obsahovat typ lookup/ipaddressrange v sekci define a dva klíče s typem ip v sekci keys:

define:
  type: lookup/ipaddressrange
  name: mylookup
  group: mygroup

keys:
  - name: range1
    type: ip
  - name: range2
    type: ip

fields:
  ...

Případ použití: Obohacení privátní IP adresy do zóny

Můžete použít vyhledávání IP-to-zone, když na základě rozsahu IP adres, jako je 192.168.1.1192.168.1.10, chcete získat název zóny, název podlaží a další informace (např. budova společnosti, zda je to privátní nebo veřejná zóna atd.).

Hint

Použijte vyhledávání IP-to-zone pro obohacování privátní IP adresy.

  1. V LogMan.io, přejděte do Library.

  2. V Library přejděte do složky /Lookups.

  3. Vytvořte novou deklaraci vyhledávání pro vaše vyhledávání, jako například "ipzonelookup.yaml" s příponou YAML

  4. Přidejte následující deklaraci:

    define:
      type: lookup/ipaddressrange
      name: ipzonelookup
      group: zone
    
    keys:
      - name: range1
        type: ip
      - name: range2
        type: ip
    
    fields:
      location:
        type: geopoint
        value:
          lat: 50.0643081
          lon: 14.443938
    
      zone_name:
        type: str
        value: myzone
    
      floor_name:
        type: str
    

    Ujistěte se, že typ je vždy lookup/ipaddressrange.

    Změňte name v sekci define na název vašeho vyhledávání.

    group se používá v obohacovacím procesu pro nalezení všech vyhledávání, která sdílí stejnou skupinu. Hodnota je unikátní identifikátor skupiny (use case), zde: zone.

    Klíče nechte tak, jak jsou, abyste specifikovali rozsahy.

    Do fields přidejte názvy a typy atributů vyhledávání. Zde v příkladu je pouze název podlaží, ale může být i název místnosti, název společnosti atd.:

    yaml fields: floor_name: type: str

    Hodnota value bude použita jako výchozí.

    V současnosti jsou podporovány tyto typy: str, fp64, si32, geopoint a ip.

  5. Uložte

  6. V LogMan.io přejděte do Lookups.

  7. Vytvořte nové vyhledávání se stejným názvem jako výše, tj. "ipzonelookup". Specifikujte dva klíče s názvy: range1, range2.

  8. Vytvořte záznamy ve vyhledávání s rozsahy jako klíči a poli, jak je uvedeno výše (v příkladu je ve slovníku hodnot uložených ve vyhledávání pouze podlaží).

  9. Přidejte následující obohacovač do pravidla LogMan.io Parsec, které by mělo použít vyhledávání:

    define:
      type: enricher/ip
      group: floor
    
      schema:
        ecs:
          prefix: lmio.ipenricher.
          postfix: zone.
    

    Specifikujte skupinu vyhledávání, která by měla být použita v atributu group. Měla by být stejná jako skupina uvedená výše v deklaraci vyhledávání. Tenants jsou řešeni automaticky.

    Obohacování probíhá na každém poli, které má typ ip ve schématu.

    Prefix specifikuje předponu a postfix specifikuje příponu pro atribut:

    Pokud je vstup source.ip, pak je výstup lmio.ipenricher.source.zone.<NAME_OF_THE_ATTRIBUTE>.

Vyhledávání jedné IP adresy

Vyhledávání jedné IP adresy je vyhledávání, které má přesně jeden klíč IP adresy s typem ip, který může být spojen s volitelným a variabilním počtem atributů definovaných žádnými nebo více hodnotami v fields.

Pro použití single IP vyhledávání spolu s následujícími obohacovači musí být typ vyhledávání v sekci define vždy lookup/ipaddress.

---
define:
  type: lookup/ipaddress
  name: mylookup
  group: mygroup

keys:
  - name: sourceip
    type: ip

fields:
  ...

Případ použití: Vyhledávání špatných IP adres

Můžete použít obohacení špatné IP adresy, když na základě jedné IP adresy, jako je 192.168.1.1, chcete získat informace o rizikovém skóre IP adresy atd.

  1. V LogMan.io, přejděte do Library.

  2. V Library, přejděte do složky /Lookups.

  3. Vytvořte novou deklaraci vyhledávání pro vaše vyhledávání, jako například "badips.yaml" s příponou YAML.

  4. Přidejte následující deklaraci:

    ---
    define:
      type: lookup/ipaddress
      name: badips
      group: bad
    
    keys:
      - name: sourceip
        type: ip
    
    fields:
      base:
        type: si32
    

    Ujistěte se, že typ je vždy lookup/ipaddress.

    Změňte name v sekci define na název vašeho vyhledávání.

    group se používá v obohacovacím procesu pro nalezení všech vyhledávání, která sdílí stejnou skupinu. Hodnota je unikátní identifikátor skupiny (use case), zde: bad.

    Zachovejte jeden klíč v sekci keys s typem ip. Název by neměl obsahovat tečky ani jiné speciální znaky.

    Do fields přidejte názvy a typy atributů vyhledávání. Zde v příkladu je base jako integer, ale mohou být i jiné bezpečnostní atributy z https://www.elastic.co/guide/en/ecs/current/ecs-vulnerability.html:

    fields:
      base:
        type: si32
    

    V současnosti jsou podporovány tyto typy: str, fp64, si32, geopoint, a ip.

  5. Uložte

  6. V LogMan.io přejděte do "Lookups".

  7. Vytvořte nové vyhledávání se stejným názvem jako výše, tj. badips. Specifikujte IP adresu jako klíč.

  8. Vytvořte záznamy ve vyhledávání s IP adresou jako klíčem a poli, jak je uvedeno výše (v příkladu je v hodnotovém slovníku uloženém ve vyhledávání pouze base).

  9. Přidejte následující obohacovač do pravidla LogMan.io Parsec, které by mělo použít vyhledávání:

    define:
      type: enricher/ip
      group: bad
    
    schema:
      ecs:
        # https://www.elastic.co/guide/en/ecs/current/ecs-vulnerability.html
        prefix: lmio.vulnerability.
        postfix: score.
    

    Specifikujte skupinu vyhledávání, která by měla být použita v atributu group. Měla by být stejná jako skupina uvedená výše v deklaraci vyhledávání. Tenants jsou řešeni automaticky.

    Obohacování probíhá na všech polích, které mají typ ip ve schématu.

    Prefix je přidán k poli s rozřešenými atributy, které mají být použity pro další mapování:

    Pokud je vstup source.ip

    Pak je výstup lmio.vulnerability.source.score.<NAME_OF_THE_ATTRIBUTE>

  10. Na základě atributu a následného mapování může být přidána korelace s výstražným triggerem do /Correlators pro notifikaci o špatné IP adrese, jejíž základní skóre je vyšší než prahová hodnota:

    ---
    define:
      name: Bad IP Notification
      description: Bad IP Notification
      type: correlator/window
    
    predicate:
      !AND
      - !IN
        what: source.ip
        where: !EVENT
      - !GT
        - !ITEM EVENT lmio.vulnerability.source.score.base
        - 2
    
    evaluate:
      dimension: [tenant, source.ip]
      by: "@timestamp"  # Název event field s časem události
      resolution: 60  # jednotka je vteřina
      saturation: 10  # jednotka je resolution
    
    analyze:
      window: hopping  # to je výchozí
      aggregate: sum  # to je výchozí
      span: 2  # 2 * resolution z evaluate = mé časové okno
      test:
        !GE
        - !ARG
        - 1
    
    trigger:
      - event:
          !DICT
          type: "{str:any}"
          with:
            message: "Bad IP Notification"
            events: !ARG EVENTS
            source.ip: !ITEM EVENT source.ip
            event.dataset: correlation
    
      - notification:
          type: email
          to: [logman@example.co]
          template: "/Templates/Email/Notification.md"
          variables:
            !DICT
            type: "{str:any}"
            with:
              name: Bad IP Notification
              events: !ARG EVENTS
              dimension: !ITEM EVENT source.ip
    

Případ použití: Obohacení IP adresy do assetu

Použijte obohacení IP-to-asset, když na základě jediné IP adresy, jako je 192.168.1.1, chcete získat informace z připraveného vyhledávání o assetech, zařízeních, hostech atd.

  1. V LogMan.io, přejděte do Library.

  2. V Library, přejděte do složky /Lookups.

  3. Vytvořte novou deklaraci vyhledávání pro vaše vyhledávání, jako například "ipassetlookup.yaml" s příponou YAML.

  4. Přidejte následující deklaraci:

    ---
    define:
      type: lookup/ipaddress
      name: ipassetlookup
      group: asset
    
    keys:
      - name: sourceip
        type: ip
    
    fields:
      asset:
        type: str
    

    Ujistěte se, že type je vždy lookup/ipaddress.

    Změňte name v sekci define na název vašeho vyhledávání.

    group se používá v obohacovacím procesu pro nalezení všech vyhledávání, která sdílí stejnou skupinu. Hodnota je unikátní identifikátor skupiny (use case), zde: asset.

    Zachovejte jeden klíč v sekci keys s typem ip. Název by neměl obsahovat tečky ani jiné speciální znaky.

    Do fields přidejte názvy a typy atributů vyhledávání. Zde v příkladu je asset a hostname:

    fields:
      asset:
        type: str
      hostname:
        type: str
    

    V současnosti jsou podporovány tyto typy: str, fp64, si32, geopoint a ip.

  5. Uložte

  6. V LogMan.io přejděte do Lookups.

7