NSG-stroomlogboeken van Azure Network Watcher visualiseren met open-sourcehulpprogramma's
Belangrijk
Op 30 september 2027 worden stroomlogboeken voor netwerkbeveiligingsgroepen (NSG) buiten gebruik gesteld. Als onderdeel van deze buitengebruikstelling kunt u vanaf 30 juni 2025 geen nieuwe NSG-stroomlogboeken meer maken. U wordt aangeraden te migreren naar stroomlogboeken van virtuele netwerken, waardoor de beperkingen van NSG-stroomlogboeken worden opgelost. Na de buitengebruikstellingsdatum worden verkeersanalyses die zijn ingeschakeld met NSG-stroomlogboeken niet meer ondersteund en worden bestaande resources voor NSG-stroomlogboeken in uw abonnementen verwijderd. NSG-stroomlogboekrecords worden echter niet verwijderd en blijven hun respectieve bewaarbeleid volgen. Zie de officiële aankondiging voor meer informatie.
Stroomlogboeken voor netwerkbeveiligingsgroepen bieden informatie die kan worden gebruikt voor inkomend en uitgaand IP-verkeer in netwerkbeveiligingsgroepen. Deze stroomlogboeken tonen uitgaande en binnenkomende stromen per regel, de NIC waarop de stroom van toepassing is, 5 tuple-informatie over de stroom (bron/doel-IP, bron-/doelpoort, protocol) en of het verkeer is toegestaan of geweigerd.
Deze stroomlogboeken kunnen moeilijk handmatig worden geparseerd en inzichten verkrijgen uit. Er zijn echter verschillende opensource-hulpprogramma's waarmee u deze gegevens kunt visualiseren. Dit artikel biedt een oplossing voor het visualiseren van deze logboeken met behulp van de Elastic Stack, waarmee u uw stroomlogboeken snel kunt indexeren en visualiseren op een Kibana-dashboard.
Scenario
In dit artikel hebben we een oplossing ingesteld waarmee u stroomlogboeken voor netwerkbeveiligingsgroepen kunt visualiseren met behulp van de Elastische stack. Met een Logstash-invoerinvoegtoepassing worden de stroomlogboeken rechtstreeks opgehaald uit de opslagblob die is geconfigureerd voor het bevatten van de stroomlogboeken. Vervolgens worden de stroomlogboeken geïndexeerd en gebruikt om een Kibana-dashboard te maken om de informatie te visualiseren.
Stappen
Stroomlogboekregistratie van netwerkbeveiligingsgroepen inschakelen
Voor dit scenario moet stroomlogboekregistratie voor netwerkbeveiligingsgroepen zijn ingeschakeld voor ten minste één netwerkbeveiligingsgroep in uw account. Zie het volgende artikel Inleiding tot stroomlogboeken voor netwerkbeveiligingsgroepen voor instructies voor het inschakelen van netwerkbeveiligingsstroomlogboeken.
De elastische stack instellen
Door NSG-stroomlogboeken te verbinden met de Elastic Stack, kunnen we een Kibana-dashboard maken waarmee we kunnen zoeken, grafieken, analyseren en inzichten kunnen afleiden uit onze logboeken.
Elasticsearch installeren
De volgende instructies worden gebruikt voor het installeren van Elasticsearch in Ubuntu Azure-VM's. Zie Elasticsearch installeren met RPM voor instructies over het installeren van elastisch zoeken in Red Hat Enterprise Linux.
Voor de Elastic Stack van versie 5.0 en hoger is Java 8 vereist. Voer de opdracht
java -version
uit om uw versie te controleren. Als u Java niet hebt geïnstalleerd, raadpleegt u de documentatie over de JDK's met Ondersteuning van Azure.Download het juiste binaire pakket voor uw systeem:
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
Andere installatiemethoden zijn te vinden bij Elasticsearch Installation
Controleer of Elasticsearch wordt uitgevoerd met de opdracht:
curl http://127.0.0.1:9200
Als het goed is, ziet u een antwoord dat er ongeveer als volgt uitziet:
{ "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" }
Zie Installatie-instructies voor meer instructies voor het installeren van Elastic Search.
Logstash installeren
De volgende instructies worden gebruikt voor het installeren van Logstash in Ubuntu. Zie het artikel Installeren vanuit pakketopslagplaatsen - yum voor instructies over het installeren van dit pakket in Red Hat Enterprise Linux.
Voer de volgende opdrachten uit om Logstash te installeren:
curl -L -O https://artifacts.elastic.co/downloads/logstash/logstash-5.2.0.deb sudo dpkg -i logstash-5.2.0.deb
Vervolgens moeten we Logstash configureren om de stroomlogboeken te openen en te parseren. Maak een logstash.conf-bestand met behulp van:
sudo touch /etc/logstash/conf.d/logstash.conf
De volgende inhoud toevoegen aan het bestand:
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" } }
Zie de officiële documentatie voor meer instructies over het installeren van Logstash.
De Logstash-invoerinvoegtoepassing voor Azure Blob Storage installeren
Met deze Logstash-invoegtoepassing kunt u rechtstreeks toegang krijgen tot de stroomlogboeken vanuit hun toegewezen opslagaccount. Als u deze invoegtoepassing wilt installeren, voert u de opdracht uit vanuit de standaardinstallatiemap van Logstash:
sudo /usr/share/logstash/bin/logstash-plugin install logstash-input-azureblob
Voer de volgende opdracht uit om Logstash te starten:
sudo /etc/init.d/logstash start
Zie de documentatie voor meer informatie over deze invoegtoepassing.
Kibana installeren
Zie Kibana installeren met RPM voor instructies over het installeren van Kibana in Red Hat Enterprise Linux. Zie Kibana installeren vanuit APT-opslagplaats voor instructies over het installeren van Kibana in Ubuntu/Debian-systemen met behulp van een opslagplaatspakket.
Vervolgens zijn de volgende instructies getest in Ubuntu en kunnen worden gebruikt in verschillende Linux-distributies omdat ze niet specifiek zijn voor Ubuntu.
Voer de volgende opdrachten uit om Kibana te installeren:
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
Gebruik de volgende opdrachten om Kibana uit te voeren:
cd kibana-5.2.0-linux-x86_64/ ./bin/kibana
Als u uw Kibana-webinterface wilt weergeven, gaat u naar
http://localhost:5601
Voor dit scenario is het indexpatroon dat wordt gebruikt voor de stroomlogboeken 'nsg-flow-logs'. U kunt het indexpatroon wijzigen in de sectie 'output' van het bestand logstash.conf.
Als u het Kibana-dashboard extern wilt weergeven, maakt u een binnenkomende NSG-regel die toegang tot poort 5601 toestaat.
Een Kibana-dashboard maken
In de volgende afbeelding ziet u een voorbeelddashboard om trends en details in uw waarschuwingen weer te geven:
Download het dashboardbestand, het visualisatiebestand en het opgeslagen zoekbestand.
Ga op het tabblad Beheer van Kibana naar Opgeslagen objecten en importeer alle drie de bestanden. Vervolgens kunt u op het tabblad Dashboard het voorbeelddashboard openen en laden.
U kunt ook uw eigen visualisaties en dashboards maken die zijn afgestemd op metrische gegevens van uw eigen interesse. Lees meer over het maken van Kibana-visualisaties uit de officiële documentatie van Kibana.
NSG-stroomlogboeken visualiseren
Het voorbeelddashboard biedt verschillende visualisaties van de stroomlogboeken:
Stromen per beslissing/richting in de loop van de tijd - tijdreeksgrafieken met het aantal stromen gedurende de periode. U kunt de tijdseenheid en de duur van beide visualisaties bewerken. Stromen per beslissing toont het aandeel van beslissingen voor toestaan of weigeren, terwijl Flows by Direction het aandeel van inkomend en uitgaand verkeer weergeeft. Met deze visuals kunt u de verkeerstrends in de loop van de tijd onderzoeken en zoeken naar pieken of ongebruikelijke patronen.
Stromen per doel/bronpoort: cirkeldiagrammen met de uitsplitsing van stromen naar hun respectieve poorten. Met deze weergave ziet u de meest gebruikte poorten. Als u in het cirkeldiagram op een specifieke poort klikt, filtert de rest van het dashboard omlaag naar stromen van die poort.
Aantal stromen en vroegste logboektijd: metrische gegevens over het aantal opgenomen stromen en de datum van het vroegste vastgelegde logboek.
Stromen per NSG en regel: een staafdiagram met de verdeling van stromen binnen elke NSG en de verdeling van regels binnen elke NSG. , kunt u zien welke NSG en regels het meeste verkeer hebben gegenereerd.
Top 10 bron-/doel-IP-adressen: staafdiagrammen met de top 10 bron- en doel-IP-adressen. U kunt deze grafieken aanpassen om meer of minder ip-adressen weer te geven. Hier ziet u de meest voorkomende IP-adressen en de verkeersbeslissing (toestaan of weigeren) voor elk IP-adres.
Flow Tuples: een tabel met de informatie in elke stroom-tuple en de bijbehorende NGS en regel.
Met behulp van de querybalk boven aan het dashboard kunt u het dashboard filteren op basis van een parameter van de stromen, zoals abonnements-id, resourcegroepen, regels of andere interessante variabelen. Zie de officiële documentatie voor meer informatie over de query's en filters van Kibana
Conclusie
Door de stroomlogboeken van de netwerkbeveiligingsgroep te combineren met de Elastic Stack, hebben we een krachtige en aanpasbare manier bedacht om ons netwerkverkeer te visualiseren. Met deze dashboards kunt u snel inzichten verkrijgen en delen over uw netwerkverkeer, en filteren en onderzoeken op mogelijke afwijkingen. Met Kibana kunt u deze dashboards aanpassen en specifieke visualisaties maken om te voldoen aan alle beveiligings-, audit- en nalevingsbehoeften.
Volgende stap
Meer informatie over het visualiseren van uw NSG-stroomlogboeken met Power BI door naar NSG-stromenlogboeken visualiseren met Power BI te gaan