Správa a analýza protokolů toků skupin zabezpečení sítě v Azure pomocí služby Network Watcher a Graylog

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é můžete použít k pochopení příchozího a výchozího provozu IP pro síťová rozhraní Azure. Protokoly toku zobrazují odchozí a příchozí toky na základě pravidel skupiny zabezpečení sítě, síťové rozhraní, na které se tok vztahuje, informace o řazené kolekci členů (zdrojová/cílová IP adresa, zdrojový/cílový port, protokol) toku a informace o tom, jestli byl provoz povolený nebo zakázaný.

V síti můžete mít mnoho skupin zabezpečení sítě s povoleným protokolováním toku. Několik skupin zabezpečení sítě s povoleným protokolováním toku může usnadnit parsování a získání přehledů z protokolů. Tento článek poskytuje řešení pro centrální správu těchto protokolů toků skupin zabezpečení sítě pomocí Graylogu, opensourcového nástroje pro správu protokolů a analytického nástroje a Logstash, což je opensourcový kanál pro zpracování dat na straně serveru.

Upozorňující

Následující kroky fungují s protokoly toku verze 1. Podrobnosti najdete v tématu Úvod k protokolování toku pro skupiny zabezpečení sítě. Následující pokyny nebudou beze změny fungovat s verzí 2 souborů protokolu.

Scénář

Protokoly toků skupin zabezpečení sítě jsou povolené pomocí služby Network Watcher. Tok zaznamenává tok do úložiště objektů blob v Azure. Modul plug-in Logstash slouží k připojení a zpracování protokolů toku z úložiště objektů blob a jejich odesílání do Graylogu. Jakmile jsou protokoly toku uložené v Graylogu, můžete je analyzovat a vizualizovat do přizpůsobených řídicích panelů.

Pracovní postup Graylogu

Postup instalace

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ě alespoň v jedné skupině zabezpečení sítě. Pokyny k povolení protokolů toků skupin zabezpečení sítě najdete v následujícím článku Úvod k protokolování toku pro skupiny zabezpečení sítě.

Nastavení graylogu

V tomto příkladu jsou graylog i Logstash nakonfigurované na Ubuntu Serveru nasazené v Azure.

V tomto příkladu se používá minimální nastavení Graylogu (tj. jedna instance Graylogu), ale Graylog je možné navrhovat tak, aby škálovala napříč prostředky v závislosti na potřebách vašeho systému a produkčního prostředí. Další informace o aspektech architektury nebo podrobném průvodci architekturou najdete v dokumentaci a průvodci architekturou graylogu.

Graylog se dá nainstalovat mnoha způsoby v závislosti na vaší platformě a předvolbách. Úplný seznam možných metod instalace najdete v oficiální dokumentaci k Graylogu. Aplikace serveru Graylog běží v distribucích Linuxu a má následující požadavky:

Instalace Logstash

Logstash slouží k zploštění protokolů toku ve formátu JSON na úroveň řazené kolekce členů toku. Zploštění protokolů toku usnadňuje uspořádání a vyhledávání v Graylogu. 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:

    wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elastic-keyring.gpg
    sudo apt-get install apt-transport-https
    echo "deb [signed-by=/usr/share/keyrings/elastic-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-8.x.list
    sudo apt-get update && sudo apt-get install logstash
    
  2. Nakonfigurujte Logstash tak, aby parsoval protokoly toku a odesílal je do Graylogu. Vytvořte soubor Logstash.conf:

    sudo touch /etc/logstash/conf.d/logstash.conf
    
  3. Do souboru přidejte následující obsah. storage_account_nameZměňte hodnoty a container hodnoty tak, storage_access_keyaby odrážely podrobnosti účtu úložiště:

     input {
         azureblob
         {
             storage_account_name => "mystorageaccount"
             storage_access_key => "NrUZmx7pJSKaRJzvQbeiZWi5nBRWOTr7Wwr9DrvK7YtDBrADYxT1y0oEExtSlkDnGRt7qcRiZzEBCCyRYND8SxSt"
             container => "insights-logs-networksecuritygroupflowevent"
             registry_create_policy => "start_over"
             codec => "json"
             file_head_bytes => 21
             file_tail_bytes => 9
             # Possible options: `do_not_break`, `with_head_tail`, `without_head_tail`
             break_json_down_policy  => 'with_head_tail'
             break_json_batch_count => 2
             interval => 5
         }
     }
    
     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]}"
         }
         add_field => {
                     "time" => "%{[records][time]}"
                     "systemId" => "%{[records][systemId]}"
                     "category" => "%{[records][category]}"
                     "resourceId" => "%{[records][resourceId]}"
                     "operationName" => "%{[records][operationName}}"
                     "Version" => "%{[records][properties][Version}}"
                     "rule" => "%{[records][properties][flows][rule]}"
                     "mac" => "%{[records][properties][flows][flows][mac]}"
         }
         convert => {"unixtimestamp" => "integer"}
         convert => {"srcPort" => "integer"}
         convert => {"destPort" => "integer"}
         add_field => { "message" => "%{Message}" }
     }
         date {
             match => ["unixtimestamp" , "UNIX"]
         }
     }
     output {
         stdout { codec => rubydebug }
         udp {
             host => "127.0.0.1"
             port => 12201
         }
     }
    

    Zadaný konfigurační soubor Logstash se skládá ze tří částí: vstupu, filtru a výstupu. Vstupní část určuje vstupní zdroj protokolů, které bude Logstash zpracovávat – v tomto případě použijete modul plug-in pro vstup blogu Azure (nainstalovaný v dalších krocích), který nám umožní přístup k souborům JSON protokolu toku skupiny zabezpečení sítě uložené v úložišti objektů blob.

Oddíl filtru pak zploštějí každý soubor protokolu toku tak, aby se každá jednotlivá řazená kolekce členů toku a její přidružené vlastnosti stala samostatnou událostí Logstash.

Výstupní část nakonec předá každou událost Logstash serveru Graylog. Podle potřeby upravte konfigurační soubor Logstash podle potřeby.

Poznámka:

Předchozí konfigurační soubor předpokládá, že server Graylog byl nakonfigurován na IP adrese zpětné smyčky místního hostitele 127.0.0.1. Pokud ne, nezapomeňte změnit parametr hostitele ve výstupní části na správnou IP adresu.

Další pokyny k instalaci Logstash najdete v dokumentaci k Logstash.

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

Modul plug-in Logstash umožňuje přímý přístup k protokolům toku z určeného účtu úložiště objektů blob. Pokud chcete nainstalovat modul plug-in, spusťte z výchozího instalačního adresáře Logstash (v tomto případě /usr/share/logstash/bin) následující příkaz:

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

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

Nastavení připojení z Logstash do Graylogu

Teď, když jste vytvořili připojení k protokolům toku pomocí Logstash a nastavili server Graylog, musíte nakonfigurovat Graylog tak, aby přijímal příchozí soubory protokolu.

  1. Pomocí adresy URL, kterou jste pro ni nakonfigurovali, přejděte do webového rozhraní Serveru Graylog. K rozhraní se dostanete tak, že nasměrujete prohlížeč na http://<graylog-server-ip>:9000/

  2. Na stránku konfigurace přejdete tak, že v horním navigačním panelu vpravo vyberete rozevírací nabídku Systém a potom kliknete na Vstupy. Případně přejděte na http://<graylog-server-ip>:9000/system/inputs

    Začínáme

  3. Chcete-li spustit nový vstup, vyberte GELF UDP v rozevíracím seznamu Vybrat vstup a pak vyplňte formulář. GELF je zkratka pro Graylog Extended Log Format. Formát GELF je vyvinut Graylogem. Další informace o jejích výhodách najdete v dokumentaci k graylogu.

    Nezapomeňte svázat vstup s IP adresou, na které jste nakonfigurovali server Graylog. IP adresa by se měla shodovat s polem hostitele výstupu UDP konfiguračního souboru Logstash. Výchozí port by měl být 12201. Ujistěte se, že port odpovídá poli portu ve výstupu UDP určeném v konfiguračním souboru Logstash.

    Snímek obrazovky znázorňující vstupy Graylog s možnostmi spuštění a vyhledání vstupů

    Po spuštění vstupu by se měl zobrazit v části Místní vstupy , jak je znázorněno na následujícím obrázku:

    Snímek obrazovky znázorňující část Místní vstupy, která obsahuje vstup, který jste spustili

    Další informace o vstupech zpráv Graylog najdete v dokumentaci.

  4. Po provedení těchto konfigurací můžete spustit Logstash a začít číst v protokolech toku pomocí následujícího příkazu: sudo systemctl start logstash.service

Hledání ve zprávách Graylogu

Jakmile serveru Graylog povolíte nějakou dobu shromažďování zpráv, můžete zprávy prohledávat. Pokud chcete zkontrolovat zprávy odesílané na server Graylog, klikněte na stránce Konfigurace vstupů na tlačítko Zobrazit přijaté zprávy u vámi vytvořeného vstupu GELF UDP. Budete přesměrováni na obrazovku, která vypadá podobně jako na následujícím obrázku:

Snímek obrazovky znázorňující server Graylog, který zobrazuje výsledek hledání, histogram a zprávy

Kliknutím na modrý odkaz %{Zpráva} rozbalíte každou zprávu, aby se zobrazily parametry každé řazené kolekce členů toku, jak je znázorněno na následujícím obrázku:

Snímek obrazovky zobrazuje podrobnosti zprávy ze serveru Graylog.

Ve výchozím nastavení jsou všechna pole zpráv zahrnuta do hledání, pokud nevyberete konkrétní pole zprávy, které chcete vyhledat. Pokud chcete vyhledat konkrétní zprávy (tj. tok řazených kolekcí členů z konkrétní zdrojové IP adresy), můžete použít hledaný dotazovací jazyk Graylog, jak je uvedeno v dokumentu.

Analýza protokolů toku skupin zabezpečení sítě pomocí Graylogu

Když teď graylog nastavil spuštěný, můžete pomocí některé jeho funkce lépe porozumět datům protokolu toku. Jedním z takových způsobů je vytvoření konkrétních zobrazení dat pomocí řídicích panelů.

Vytvoření řídicího panelu

  1. V horním navigačním panelu vyberte Řídicí panely nebo přejděte na http://<graylog-server-ip>:9000/dashboards/

  2. Odtud klikněte na zelené tlačítko Vytvořit řídicí panel a vyplňte krátký formulář s názvem a popisem řídicího panelu. Stisknutím tlačítka Uložit vytvořte nový řídicí panel. Zobrazí se řídicí panel podobný následujícímu obrázku:

    Snímek obrazovky zobrazuje řídicí panely serveru Graylog s možnostmi pro vytváření a úpravy řídicích panelů.

Přidání widgetů

Kliknutím na název řídicího panelu ho můžete zobrazit, ale teď je prázdný, protože jsme nepřidali žádné widgety. Jednoduchým a užitečným widgetem pro přidání na řídicí panel jsou grafy Rychlých hodnot , které zobrazují seznam hodnot vybraného pole a jejich rozdělení.

  1. Přejděte zpět na výsledky hledání vstupu UDP, který přijímá protokoly toku výběrem možnosti Hledat v horním navigačním panelu.

  2. Pod panelem výsledků hledání na levé straně obrazovky najděte kartu Pole, která obsahuje různá pole každé příchozí zprávy řazené kolekce členů toku.

  3. Vyberte libovolný požadovaný parametr, ve kterém chcete vizualizovat (v tomto příkladu je vybraný zdroj IP adres). Pokud chcete zobrazit seznam možných widgetů, klikněte na modrou šipku rozevíracího seznamu vlevo od pole a potom vyberte Rychlé hodnoty a vygenerujte widget. Měl by se zobrazit podobný následujícímu obrázku:

    Zdrojová IP adresa

  4. Odtud můžete vybrat tlačítko Přidat do řídicího panelu v pravém horním rohu widgetu a vybrat odpovídající řídicí panel, který chcete přidat.

  5. Vraťte se na řídicí panel a podívejte se na widget, který jste právě přidali.

    Do řídicího panelu můžete přidat řadu dalších widgetů, jako jsou histogramy a počty, abyste mohli sledovat důležité metriky, například ukázkový řídicí panel zobrazený na následujícím obrázku:

    Řídicí panel Flowlogs

    Další vysvětlení řídicích panelů a dalších typů widgetů najdete v dokumentaci k Graylogu.

Díky integraci služby Network Watcher s Graylogem teď máte pohodlný a centralizovaný způsob, jak spravovat a vizualizovat protokoly toků skupin zabezpečení sítě. Graylog má řadu dalších výkonných funkcí, jako jsou streamy a výstrahy, které je možné použít také k další správě protokolů toku a lepšímu pochopení síťového provozu. Teď, když máte Graylog nastavený a připojený k Azure, můžete pokračovat v prozkoumání dalších funkcí, které nabízí.

Další kroky

Přečtěte si, jak vizualizovat protokoly toků skupin zabezpečení sítě pomocí Power BI v tématu Vizualizovat protokoly toků skupin zabezpečení sítě pomocí Power BI.