Vizualizace protokolů toku skupin zabezpečení sítě, které jsou ve službě Azure Network Watcher, s použitím opensourcových nástrojů

Upozornění

Tento článek odkazuje na CentOS, linuxovou distribuci, která se blíží stavu Konec životnosti (EOL). Zvažte své použití a plánování odpovídajícím způsobem. Další informace najdete v doprovodných materiálech CentOS End Of Life.

Protokoly toku skupiny zabezpečení sítě poskytují informace, které je možné použít k pochopení příchozího a výchozího provozu PROTOKOLU IP ve skupinách zabezpečení sítě. Tyto protokoly toku zobrazují odchozí a příchozí toky na základě jednotlivých pravidel, tok se vztahuje na 5 informací o toku (zdrojová/cílová IP adresa, zdrojový/cílový port, protokol) a o tom, jestli byl provoz povolený nebo zakázaný.

Tyto protokoly toků můžou být obtížné ručně analyzovat a získávat přehledy. Existuje však několik opensourcových nástrojů, které vám můžou pomoct vizualizovat tato data. Tento článek poskytuje řešení pro vizualizaci těchto protokolů pomocí elastického stacku, které umožňuje rychle indexovat a vizualizovat protokoly toku na řídicím panelu Kibana.

Scénář

V tomto článku jsme vytvořili řešení, které umožňuje vizualizovat protokoly toku skupiny zabezpečení sítě pomocí elastického zásobníku. Vstupní modul plug-in Logstash získá protokoly toku přímo z objektu blob úložiště nakonfigurovaného pro obsah protokolů toku. Pak se pomocí elastického stacku protokoly toku indexují a používají se k vytvoření řídicího panelu Kibana k vizualizaci informací.

Diagram znázorňuje scénář, který umožňuje vizualizovat protokoly toku skupiny zabezpečení sítě pomocí elastického zásobníku.

Kroky

Povolení protokolování toku skupiny zabezpečení sítě

Pro tento scénář musíte mít v účtu povolené protokolování toku skupiny zabezpečení sítě aspoň u jedné skupiny zabezpečení sítě. Pokyny k povolení protokolů toku zabezpečení sítě najdete v následujícím článku Úvod k protokolování toku pro skupiny zabezpečení sítě.

Nastavení elastického zásobníku

Propojením protokolů toku NSG pomocí elastického stacku můžeme vytvořit řídicí panel Kibany, který nám umožňuje vyhledávat, grafy, analyzovat a odvozovat přehledy z našich protokolů.

Instalace Elasticsearch

Následující pokyny se používají k instalaci Elasticsearch ve virtuálních počítačích Azure s Ubuntu. Pokyny k instalaci elastického vyhledávání v distribucích RHEL/CentOS najdete v tématu Instalace Elasticsearch s RPM.

  1. Elastic Stack verze 5.0 a novější vyžaduje Javu 8. Spuštěním příkazu java -version zkontrolujte verzi. Pokud nemáte nainstalovanou Javu, prohlédni si dokumentaci k sadách JDK s podporou Azure.

  2. Stáhněte si správný binární balíček pro váš systém:

    curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.2.0.deb
    sudo dpkg -i elasticsearch-5.2.0.deb
    sudo /etc/init.d/elasticsearch start
    

    Další metody instalace najdete na webu Elasticsearch Installation

  3. Pomocí příkazu ověřte, že je elasticsearch spuštěný:

    curl http://127.0.0.1:9200
    

    Měla by se zobrazit odpověď podobná této:

    {
    "name" : "Angela Del Toro",
    "cluster_name" : "elasticsearch",
    "version" : {
        "number" : "5.2.0",
        "build_hash" : "8ff36d139e16f8720f2947ef62c8167a888992fe",
        "build_timestamp" : "2016-01-27T13:32:39Z",
        "build_snapshot" : false,
        "lucene_version" : "6.1.0"
    },
    "tagline" : "You Know, for Search"
    }
    

Další pokyny k instalaci elastického vyhledávání najdete v pokynech k instalaci.

Instalace Logstash

Následující pokyny se používají k instalaci Logstash v Ubuntu. Pokyny k instalaci tohoto balíčku v RHEL/CentOS najdete v článku Instalace z úložišť balíčků – yum .

  1. Pokud chcete nainstalovat Logstash, spusťte následující příkazy:

    curl -L -O https://artifacts.elastic.co/downloads/logstash/logstash-5.2.0.deb
    sudo dpkg -i logstash-5.2.0.deb
    
  2. Dále potřebujeme nakonfigurovat Logstash pro přístup k protokolům toku a parsovat je. Vytvořte soubor logstash.conf pomocí:

    sudo touch /etc/logstash/conf.d/logstash.conf
    
  3. Do souboru přidejte následující obsah:

    input {
       azureblob
         {
             storage_account_name => "mystorageaccount"
             storage_access_key => "VGhpcyBpcyBhIGZha2Uga2V5Lg=="
             container => "insights-logs-networksecuritygroupflowevent"
             codec => "json"
             # Refer https://learn.microsoft.com/azure/network-watcher/network-watcher-read-nsg-flow-logs
             # Typical numbers could be 21/9 or 12/2 depends on the nsg log file types
             file_head_bytes => 12
             file_tail_bytes => 2
             # Enable / tweak these settings when event is too big for codec to handle.
             # break_json_down_policy => "with_head_tail"
             # break_json_batch_count => 2
         }
       }
    
       filter {
         split { field => "[records]" }
         split { field => "[records][properties][flows]"}
         split { field => "[records][properties][flows][flows]"}
         split { field => "[records][properties][flows][flows][flowTuples]"}
    
      mutate{
       split => { "[records][resourceId]" => "/"}
       add_field => {"Subscription" => "%{[records][resourceId][2]}"
                     "ResourceGroup" => "%{[records][resourceId][4]}"
                     "NetworkSecurityGroup" => "%{[records][resourceId][8]}"}
       convert => {"Subscription" => "string"}
       convert => {"ResourceGroup" => "string"}
       convert => {"NetworkSecurityGroup" => "string"}
       split => { "[records][properties][flows][flows][flowTuples]" => ","}
       add_field => {
                   "unixtimestamp" => "%{[records][properties][flows][flows][flowTuples][0]}"
                   "srcIp" => "%{[records][properties][flows][flows][flowTuples][1]}"
                   "destIp" => "%{[records][properties][flows][flows][flowTuples][2]}"
                   "srcPort" => "%{[records][properties][flows][flows][flowTuples][3]}"
                   "destPort" => "%{[records][properties][flows][flows][flowTuples][4]}"
                   "protocol" => "%{[records][properties][flows][flows][flowTuples][5]}"
                   "trafficflow" => "%{[records][properties][flows][flows][flowTuples][6]}"
                   "traffic" => "%{[records][properties][flows][flows][flowTuples][7]}"
                   "flowstate" => "%{[records][properties][flows][flows][flowTuples][8]}"
                    "packetsSourceToDest" => "%{[records][properties][flows][flows][flowTuples][9]}"
                    "bytesSentSourceToDest" => "%{[records][properties][flows][flows][flowTuples][10]}"
                    "packetsDestToSource" => "%{[records][properties][flows][flows][flowTuples][11]}"
                    "bytesSentDestToSource" => "%{[records][properties][flows][flows][flowTuples][12]}"
                    }
       convert => {"unixtimestamp" => "integer"}
       convert => {"srcPort" => "integer"}
       convert => {"destPort" => "integer"}
      }
    
      date{
        match => ["unixtimestamp" , "UNIX"]
      }
     }
    output {
      stdout { codec => rubydebug }
      elasticsearch {
        hosts => "localhost"
        index => "nsg-flow-logs"
      }
    }
    

Další pokyny k instalaci Logstash najdete v oficiální dokumentaci.

Instalace vstupního modulu plug-in Logstash pro Azure Blob Storage

Tento modul plug-in Logstash umožňuje přímý přístup k protokolům toku z určeného účtu úložiště. Pokud chcete nainstalovat tento modul plug-in, spusťte z výchozího instalačního adresáře Logstash příkaz:

sudo /usr/share/logstash/bin/logstash-plugin install logstash-input-azureblob

Spuštěním příkazu Logstash spusťte:

sudo /etc/init.d/logstash start

Další informace o tomto modulu plug-in najdete v dokumentaci.

Instalace Kibany

Pokyny k instalaci Kibany v systémech RHEL/CentOS najdete v tématu Instalace Kibany s RPM. Pokyny k instalaci Kibana v systémech Ubuntu/Debian pomocí balíčku úložiště naleznete v tématu Instalace Kibana z úložiště APT.

Pak byly v Ubuntu testovány následující pokyny a mohly by se použít v různých distribucích Linuxu, protože nejsou specifické pro Ubuntu.

  1. Spuštěním následujících příkazů nainstalujte Kibana:

    curl -L -O https://artifacts.elastic.co/downloads/kibana/kibana-5.2.0-linux-x86_64.tar.gz
    tar xzvf kibana-5.2.0-linux-x86_64.tar.gz
    
  2. Ke spuštění Kibany použijte příkazy:

    cd kibana-5.2.0-linux-x86_64/
    ./bin/kibana
    
  3. Pokud chcete zobrazit webové rozhraní Kibana, přejděte na http://localhost:5601

  4. V tomto scénáři je vzor indexu používaný pro protokoly toku nsg-flow-logs. Vzor indexu můžete změnit v části Výstup souboru logstash.conf.

  5. Pokud chcete řídicí panel Kibana zobrazit vzdáleně, vytvořte příchozí pravidlo NSG umožňující přístup k portu 5601.

Vytvoření řídicího panelu Kibana

Ukázkový řídicí panel pro zobrazení trendů a podrobností v upozorněních se zobrazí na následujícím obrázku:

Obrázek 1

Stáhněte si soubor řídicího panelu, soubor vizualizace a uložený vyhledávací soubor.

Na kartě Správa Kibana přejděte na Uložené objekty a naimportujte všechny tři soubory. Potom na kartě Řídicí panel můžete otevřít a načíst ukázkový řídicí panel.

Můžete také vytvořit vlastní vizualizace a řídicí panely přizpůsobené metrikám vlastního zájmu. Přečtěte si další informace o vytváření vizualizací Kibany z oficiální dokumentace Kibany.

Vizualizace protokolů toku NSG

Ukázkový řídicí panel poskytuje několik vizualizací protokolů toku:

  1. Toky podle rozhodnutí/směru v průběhu času – grafy časových řad zobrazující počet toků v časovém období. Můžete upravit jednotku času a rozsahu obou těchto vizualizací. Toky podle rozhodnutí ukazují poměr rozhodnutí o povolení nebo zamítnutí, zatímco toky podle směru ukazují podíl příchozího a odchozího provozu. Pomocí těchto vizuálů můžete zkoumat trendy provozu v průběhu času a hledat případné špičky nebo neobvyklé vzory.

    Snímek obrazovky ukazuje ukázkový řídicí panel s toky podle rozhodnutí a směru v průběhu času.

  2. Toky podle cílového/zdrojového portu – výsečové grafy znázorňující rozpis toků na příslušné porty V tomto zobrazení uvidíte nejčastěji používané porty. Pokud kliknete na konkrétní port ve výsečovém grafu, zbytek řídicího panelu se filtruje dolů na toky tohoto portu.

    Snímek obrazovky ukazuje ukázkový řídicí panel s toky podle cíle a zdrojového portu.

  3. Počet toků a čas nejstaršího protokolu – metriky ukazující počet toků zaznamenaných a datum nejstaršího zachyceného protokolu.

    Snímek obrazovky ukazuje ukázkový řídicí panel s počtem toků a nejstarším časem protokolu.

  4. Toky podle skupiny zabezpečení sítě a pravidla – pruhový graf znázorňující distribuci toků v rámci každé skupiny zabezpečení sítě a distribuci pravidel v rámci každé skupiny zabezpečení sítě. můžete zjistit, které skupiny zabezpečení sítě a pravidla generovaly největší provoz.

    Snímek obrazovky ukazuje ukázkový řídicí panel s toky podle N S G a pravidla.

  5. Prvních 10 zdrojových a cílových IP adres – pruhové grafy zobrazující prvních 10 zdrojových a cílových IP adres Tyto grafy můžete upravit tak, aby zobrazovaly více nebo méně hlavních IP adres. Tady vidíte nejčastější IP adresy a rozhodnutí o provozu (povolit nebo odepřít) směřující k jednotlivým IP adresám.

    Snímek obrazovky znázorňující ukázkový řídicí panel s toky podle deseti hlavních zdrojových a cílových adres I P

  6. Řazené kolekce členů toku – tato tabulka zobrazuje informace obsažené v každé řazené kolekci členů toku a odpovídající NGS a pravidlo.

    Snímek obrazovky znázorňující řazené kolekce členů toku v tabulce

Pomocí panelu dotazů v horní části řídicího panelu můžete řídicí panel filtrovat podle libovolného parametru toků, jako je ID předplatného, skupiny prostředků, pravidlo nebo jakákoli jiná proměnná, která vás zajímá. Další informace o dotazech a filtrech Kibany najdete v oficiální dokumentaci.

Závěr

Zkombinováním protokolů toku skupiny zabezpečení sítě s elastickým stackem jsme vytvořili výkonný a přizpůsobitelný způsob vizualizace síťového provozu. Tyto řídicí panely umožňují rychle získat a sdílet přehledy o síťovém provozu a filtrovat a zkoumat případné anomálie. Pomocí Kibany můžete tyto řídicí panely přizpůsobit a vytvořit konkrétní vizualizace tak, aby vyhovovaly potřebám zabezpečení, auditu a dodržování předpisů.

Další kroky

Informace o vizualizaci protokolů toku NSG pomocí Power BI najdete v tématu Vizualizace protokolů toků NSG pomocí Power BI.