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í.
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.
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.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 RHEL/CentOS 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 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.
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 – tato tabulka zobrazuje 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ů 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.