Vizualizace protokolů toku skupin zabezpečení sítě, které jsou ve službě Azure Network Watcher, s použitím opensourcových nástrojů
Důležité
30. září 2027 se protokoly toku skupiny zabezpečení sítě (NSG) vyřadí z provozu. V rámci tohoto vyřazení už nebudete moct vytvářet nové protokoly toku NSG od 30. června 2025. Doporučujeme migrovat na protokoly toku virtuální sítě, které překonat omezení protokolů toku NSG. Po datu vyřazení se už nebudou podporovat analýzy provozu s protokoly toků NSG a stávající prostředky protokolů toku NSG ve vašich předplatných se odstraní. Záznamy protokolů toku NSG se ale neodstraní a budou dál dodržovat příslušné zásady uchovávání informací. Další informace najdete v oficiálním oznámení.
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 toků skupin zabezpečení sítě pomocí elastického stacku. 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í.
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ň na jedné skupině 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 Red Hat Enterprise Linuxu najdete v tématu Instalace Elasticsearch s RPM.
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, přečtěte si dokumentaci k sadě JDK podporovaných v Azure.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
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 Red Hat Enterprise Linuxu najdete v článku Instalace z úložišť balíčků – yum .
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
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
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 Red Hat Enterprise Linuxu 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.
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
Ke spuštění Kibany použijte příkazy:
cd kibana-5.2.0-linux-x86_64/ ./bin/kibana
Pokud chcete zobrazit webové rozhraní Kibana, přejděte na
http://localhost:5601
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.
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:
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:
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.
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.
Počet toků a čas nejstaršího protokolu – metriky ukazující počet toků zaznamenaných a datum nejstaršího zachyceného protokolu.
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.
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.
Řazené kolekce členů toku – tabulka zobrazující informace obsažené v každé řazené kolekci členů toku a odpovídající NGS a pravidlo.
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ů toků skupin 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ší krok
Informace o vizualizaci protokolů toku NSG pomocí Power BI najdete v tématu Vizualizace protokolů toků NSG pomocí Power BI.