Visualisera NSG-flödesloggar från Azure Network Watcher med hjälp av verktyg med öppen källkod
Viktigt!
Den 30 september 2027 dras nätverkssäkerhetsgruppens flödesloggar tillbaka. Som en del av den här tillbakadragningen kommer du inte längre att kunna skapa nya NSG-flödesloggar från och med den 30 juni 2025. Vi rekommenderar att du migrerar till flödesloggar för virtuella nätverk, vilket övervinner begränsningarna i NSG-flödesloggar. Efter slutdatumet stöds inte längre trafikanalys som är aktiverad med NSG-flödesloggar, och befintliga NSG-flödesloggresurser i dina prenumerationer tas bort. NSG-flödesloggposter tas dock inte bort och fortsätter att följa deras respektive kvarhållningsprinciper. Mer information finns i det officiella meddelandet.
Flödesloggar för nätverkssäkerhetsgrupper innehåller information som kan användas för att förstå inkommande och utgående IP-trafik i nätverkssäkerhetsgrupper. Dessa flödesloggar visar utgående och inkommande flöden per regel, det nätverkskort som flödet gäller för, 5-tuppelns information om flödet (käll-/mål-IP, käll-/målport, protokoll) och om trafiken tilläts eller nekades.
Dessa flödesloggar kan vara svåra att parsa manuellt och få insikter från. Det finns dock flera öppen källkod verktyg som kan hjälpa dig att visualisera dessa data. Den här artikeln innehåller en lösning för att visualisera dessa loggar med elastic stack, vilket gör att du snabbt kan indexera och visualisera dina flödesloggar på en Kibana-instrumentpanel.
Scenario
I den här artikeln konfigurerar vi en lösning som gör att du kan visualisera flödesloggar för nätverkssäkerhetsgrupper med hjälp av Elastic Stack. Ett Plugin-program för Logstash-indata hämtar flödesloggarna direkt från lagringsbloben som konfigurerats för att innehålla flödesloggarna. Med elastic stack indexeras flödesloggarna och används sedan för att skapa en Kibana-instrumentpanel för att visualisera informationen.
Steg
Aktivera flödesloggning för nätverkssäkerhetsgrupp
I det här scenariot måste du ha nätverkssäkerhetsgruppen Flödesloggning aktiverad på minst en nätverkssäkerhetsgrupp i ditt konto. Anvisningar om hur du aktiverar flödesloggar för nätverkssäkerhet finns i följande artikel Introduktion till flödesloggning för nätverkssäkerhetsgrupper.
Konfigurera Elastic Stack
Genom att ansluta NSG-flödesloggar till Elastic Stack kan vi skapa en Kibana-instrumentpanel som gör att vi kan söka, diagram, analysera och härleda insikter från våra loggar.
Installera Elasticsearch
Följande instruktioner används för att installera Elasticsearch på virtuella Ubuntu Azure-datorer. Anvisningar om hur du installerar elastisk sökning i Red Hat Enterprise Linux finns i Installera Elasticsearch med RPM.
Elastic Stack från version 5.0 och senare kräver Java 8. Kör kommandot
java -version
för att kontrollera din version. Om du inte har Java installerat kan du läsa dokumentationen på de Azure-supporerade JDK:erna.Ladda ned rätt binärpaket för systemet:
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
Andra installationsmetoder finns på Elasticsearch Installation
Kontrollera att Elasticsearch körs med kommandot:
curl http://127.0.0.1:9200
Du bör se ett svar som liknar följande:
{ "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" }
Mer information om hur du installerar elastisk sökning finns i Installationsanvisningar.
Installera Logstash
Följande instruktioner används för att installera Logstash i Ubuntu. Anvisningar om hur du installerar det här paketet i Red Hat Enterprise Linux finns i artikeln Installera från paketlagringsplatser – yum .
Installera Logstash genom att köra följande kommandon:
curl -L -O https://artifacts.elastic.co/downloads/logstash/logstash-5.2.0.deb sudo dpkg -i logstash-5.2.0.deb
Därefter måste vi konfigurera Logstash för att komma åt och parsa flödesloggarna. Skapa en logstash.conf-fil med hjälp av:
sudo touch /etc/logstash/conf.d/logstash.conf
Lägg till följande innehåll i filen:
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" } }
Mer information om hur du installerar Logstash finns i den officiella dokumentationen.
Installera plugin-programmet Logstash-indata för Azure Blob Storage
Med det här Logstash-plugin-programmet kan du komma åt flödesloggarna direkt från deras avsedda lagringskonto. Om du vill installera det här plugin-programmet kör du kommandot från standardkatalogen för Logstash-installationen:
sudo /usr/share/logstash/bin/logstash-plugin install logstash-input-azureblob
Starta Logstash genom att köra kommandot:
sudo /etc/init.d/logstash start
Mer information om det här plugin-programmet finns i dokumentationen.
Installera Kibana
Anvisningar om hur du installerar Kibana i Red Hat Enterprise Linux finns i Installera Kibana med RPM. Anvisningar om hur du installerar Kibana i Ubuntu/Debian-system med hjälp av ett lagringsplatspaket finns i Installera Kibana från APT-lagringsplatsen.
Sedan testades följande instruktioner i Ubuntu och kunde användas i olika Linux-distributioner eftersom de inte är Ubuntu-specifika.
Kör följande kommandon för att installera 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
Om du vill köra Kibana använder du kommandona:
cd kibana-5.2.0-linux-x86_64/ ./bin/kibana
Om du vill visa ditt Kibana-webbgränssnitt går du till
http://localhost:5601
I det här scenariot är indexmönstret som används för flödesloggarna "nsg-flow-logs". Du kan ändra indexmönstret i avsnittet "output" i filen logstash.conf.
Om du vill visa Kibana-instrumentpanelen via en fjärranslutning skapar du en inkommande NSG-regel som tillåter åtkomst till port 5601.
Skapa en Kibana-instrumentpanel
En exempelinstrumentpanel för att visa trender och information i dina aviseringar visas i följande bild:
Ladda ned instrumentpanelsfilen, visualiseringsfilen och den sparade sökfilen.
Under fliken Hantering i Kibana navigerar du till Sparade objekt och importerar alla tre filerna. På fliken Instrumentpanel kan du öppna och läsa in exempelinstrumentpanelen.
Du kan också skapa egna visualiseringar och instrumentpaneler som är skräddarsydda för mått av eget intresse. Läs mer om att skapa Kibana-visualiseringar från Kibanas officiella dokumentation.
Visualisera NSG-flödesloggar
Exempelinstrumentpanelen innehåller flera visualiseringar av flödesloggarna:
Flöden efter beslut/riktning över tid – tidsseriediagram som visar antalet flöden under tidsperioden. Du kan redigera tidsenheten och intervallet för båda dessa visualiseringar. Flöden efter beslut visar andelen beslut som fattats om att tillåta eller neka, medan Flöden efter riktning visar andelen inkommande och utgående trafik. Med dessa visuella objekt kan du undersöka trafiktrender över tid och leta efter toppar eller ovanliga mönster.
Flöden efter mål-/källport – cirkeldiagram som visar uppdelningen av flöden till respektive port. Med den här vyn kan du se dina vanligaste portar. Om du klickar på en specifik port i cirkeldiagrammet filtrerar resten av instrumentpanelen ned till flöden i den porten.
Antal flöden och tidigaste loggtid – mått som visar antalet flöden som registrerats och datumet för den tidigaste loggen som registrerats.
Flöden efter NSG och regel – ett stapeldiagram som visar fördelningen av flöden inom varje NSG och fördelningen av regler inom varje NSG. kan du se vilka NSG och regler som genererade mest trafik.
De 10 främsta käll-/mål-IP-adresserna – stapeldiagram som visar de 10 främsta käll- och mål-IP-adresserna. Du kan justera dessa diagram för att visa fler eller mindre ip-adresser. Härifrån kan du se de vanligaste IP-adresserna och trafikbeslutet (tillåt eller neka) som fattas mot varje IP-adress.
Flow Tuples – en tabell som visar informationen i varje flödestupplare och motsvarande NGS och regel.
Med hjälp av frågefältet överst på instrumentpanelen kan du filtrera ned instrumentpanelen baserat på valfri parameter i flödena, till exempel prenumerations-ID, resursgrupper, regel eller någon annan variabel av intresse. Mer information om Kibanas frågor och filter finns i den officiella dokumentationen
Slutsats
Genom att kombinera flödesloggarna för nätverkssäkerhetsgruppen med Elastic Stack har vi kommit på ett kraftfullt och anpassningsbart sätt att visualisera vår nätverkstrafik. Med de här instrumentpanelerna kan du snabbt få och dela insikter om nätverkstrafiken och filtrera ned och undersöka eventuella avvikelser. Med Kibana kan du skräddarsy dessa instrumentpaneler och skapa specifika visualiseringar för att uppfylla alla säkerhets-, gransknings- och efterlevnadsbehov.
Gå vidare
Lär dig hur du visualiserar NSG-flödesloggar med Power BI genom att gå till Visualisera NSG-flödesloggar med Power BI