Visualisieren von Azure Network Watcher-NSG-Datenflussprotokollen mit Open-Source-Tools
Wichtig
Am 30. September 2027 werden NSG-Datenflussprotokolle (Netzwerksicherheitsgruppe) eingestellt. Aufgrund dieser Einstellung können Sie ab dem 30. Juni 2025 keine neuen NSG-Datenflussprotokolle mehr erstellen. Es wird empfohlen, zu Datenflussprotokollen für virtuelle Netzwerke zu migrieren, bei denen die Einschränkungen von NSG-Datenflussprotokollen nicht gelten. Nach dem Einstellungsdatum wird die Aktivierung der Datenverkehrsanalyse mit NSG-Datenflussprotokollen nicht mehr unterstützt, und vorhandene Ressourcen für NSG-Datenflussprotokolle in Ihren Abonnements werden gelöscht. NSG-Datenflussprotokolle werden jedoch nicht gelöscht, und es gelten weiterhin die jeweiligen Aufbewahrungsrichtlinien. Weitere Informationen finden Sie in der offiziellen Ankündigung.
NSG-Datenflussprotokolle (Netzwerksicherheitsgruppen) enthalten Informationen für ein besseres Verständnis von ein- und ausgehendem IP-Datenverkehr in Netzwerksicherheitsgruppen. In diesen Datenflussprotokollen werden ausgehende und eingehende Datenflüsse pro Regel, die NIC, auf die sich der Datenfluss bezieht, 5-Tupel-Informationen zum Datenfluss (Quell-/Ziel-IP, Quell-/Zielport, Protokoll) und Informationen zu zugelassenem oder abgelehntem Datenverkehr angezeigt.
Die manuelle Analyse und Auswertung dieser Datenflussprotokolle kann schwierig sein. Es gibt jedoch mehrere Open-Source-Tools, die zur Visualisierung dieser Daten beitragen können. In diesem Artikel wird eine Lösung für Visualisierung dieser Protokolle mit Elastic Stack bereitgestellt, mit der Sie Ihre Datenflussprotokolle schnell in einem Kibana-Dashboard indizieren und visualisieren können.
Szenario
In diesem Artikel richten wir eine Lösung ein, mit der Sie Datenflussprotokolle von Netzwerksicherheitsgruppen mithilfe von Elastic Stack visualisieren können. Ein Logstash-Eingabe-Plug-In ruft die Datenflussprotokolle direkt aus dem für deren Aufnahme konfigurierten Speicherblob ab. Anschließend werden die Datenflussprotokolle mit Elastic Stack indiziert und für das Erstellen eines Kibana-Dashboards genutzt, mit dem die Informationen visualisiert werden.
Schritte
Aktivieren der Datenflussprotokollierung für Netzwerksicherheitsgruppen
Für dieses Szenario müssen Sie die NSG-Datenflussprotokollierung für mindestens eine Netzwerksicherheitsgruppe in Ihrem Konto aktivieren. Eine Anleitung zum Aktivieren von NSG-Datenflussprotokollen finden Sie im Artikel Einführung in die Datenflussprotokollierung für Netzwerksicherheitsgruppen.
Einrichten des Elastic Stack
Durch das Verbinden von NSG-Datenflussprotokollen mit dem Elastic Stack können wir ein Kibana-Dashboard erstellen, in dem wir die Protokolle durchsuchen, grafisch darstellen, analysieren und auswerten können.
Installieren von Elasticsearch
Die folgenden Anweisungen dienen zum Installieren von Elasticsearch auf Azure-VMs unter Ubuntu. Anweisungen zum Installieren von Elasticsearch in Red Hat Enterprise Linux finden Sie unter Installieren von Elasticsearch mit RPM.
Elastic Stack ab Version 5.0 erfordert Java 8. Führen Sie den Befehl
java -version
aus, um Ihre Version zu überprüfen. Wenn Java nicht installiert ist, lesen Sie die Dokumentation zu den von Azure unterstützten JDKs.Laden Sie das richtige Binärpaket für Ihr System herunter:
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 Methoden zur Installation finden Sie auf der Installationsseite von Elasticsearch.
Sie überprüfen die Ausführung von Elasticsearch mit dem Befehl:
curl http://127.0.0.1:9200
Die Antwort sollte ähnlich der folgenden aussehen:
{ "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" }
Weitere Anweisungen zum Installieren von Elasticsearch finden Sie unter den Installationsanweisungen.
Installieren von Logstash
Die folgenden Anweisungen dienen zur Installation von Logstash unter Ubuntu. Anweisungen zum Installieren dieses Pakets unter Red Hat Enterprise Linux finden Sie im Artikel Installieren aus Paketrepositorys – yum.
Führen Sie die folgenden Befehle zum Installieren von Logstash aus:
curl -L -O https://artifacts.elastic.co/downloads/logstash/logstash-5.2.0.deb sudo dpkg -i logstash-5.2.0.deb
Im nächsten Schritt muss Logstash für den Zugriff auf die und die Analyse der Flowprotokolle konfiguriert werden. Erstellen Sie die Datei „logstash.conf“ wie folgt:
sudo touch /etc/logstash/conf.d/logstash.conf
Fügen Sie der Datei Folgendes hinzu:
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" } }
Weitere Anweisungen zum Installieren von Logstash finden Sie in der offiziellen Dokumentation.
Installieren des Logstash-Eingangs-Plug-Ins für Azure Blob Storage
Mithilfe dieses Logstash-Plug-Ins können Sie im vorgesehenen Speicherkonto direkt auf die Datenflussprotokolle zugreifen. Zum Installieren dieses Plug-Ins über das standardmäßige Logstash-Installationsverzeichnis führen Sie den folgenden Befehl aus:
sudo /usr/share/logstash/bin/logstash-plugin install logstash-input-azureblob
Führen Sie zum Starten von Logstash folgenden Befehl aus:
sudo /etc/init.d/logstash start
Weitere Informationen zu diesem Plug-In finden in der Dokumentation.
Installieren von Kibana
Anweisungen zum Installieren von Kibana in Red Hat Enterprise Linux finden Sie unter Installieren von Kibana mit RPM. Anweisungen zum Installieren von Kibana auf Ubuntu-/Debian-Systemen mithilfe eines Repositorypakets finden Sie unter Installieren von Kibana aus dem APT-Repository.
Anschließend wurden die folgenden Anweisungen in Ubuntu getestet und konnten in verschiedenen Linux-Distributionen verwendet werden, da sie nicht für Ubuntu spezifisch sind.
Führen Sie die folgenden Befehle zum Installieren von Kibana aus:
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
Verwenden Sie zum Ausführen von Kibana diese Befehle:
cd kibana-5.2.0-linux-x86_64/ ./bin/kibana
Navigieren Sie zum Anzeigen Ihrer Kibana-Weboberfläche zu
http://localhost:5601
.In diesem Szenario wird das Indexmuster „nsg-flow-logs“ für die Datenflussprotokolle verwendet. Sie können das Indexmuster im Abschnitt „output“ der Datei „logstash.conf“ ändern.
Wenn Sie das Kibana-Dashboard remote anzeigen möchten, erstellen Sie eine eingehende NSG-Regel, die den Zugriff auf Port 5601 erlaubt.
Erstellen eines Kibana-Dashboards
Ein Beispieldashboard zum Anzeigen von Trends und Details in den Warnungen ist in der folgenden Abbildung dargestellt:
Laden Sie die Dashboarddatei, die Visualisierungsdatei und die Datei mit der gespeicherten Suche herunter.
Navigieren Sie auf der Registerkarte Management (Verwaltung) von Kibana zu Saved Objects (Gespeicherte Objekte), und importieren Sie alle drei Dateien. Sie können dann auf der Registerkarte Dashboard das Beispieldashboard öffnen und laden.
Sie können auch eigene Visualisierungen und Dashboards erstellen, die auf die für Sie relevanten Metriken zugeschnitten sind. Weitere Informationen zum Erstellen von Kibana-Visualisierungen finden Sie in der offiziellen Dokumentation von Kibana.
Visualisieren von NSG-Datenflussprotokollen
Das Beispieldashboard stellt mehrere Visualisierungen der Datenflussprotokolle bereit:
Datenfluss nach Entscheidung/Richtung über die Zeit: Zeitraumdiagramme zeigen die Anzahl der Datenflüsse für den Zeitraum an. Sie können Zeiteinheit und Dauer bei beiden Visualisierungen ändern. „Datenflüsse nach Entscheidung“ zeigt den Anteil von Entscheidungen für das Zulassen bzw. Verweigern an, während „Datenflüsse nach Richtung“ den Anteil von eingehendem und ausgehendem Datenverkehr darstellt. Mithilfe dieser Visualisierungen können Sie Datenverkehrstrends über einen Zeitraum auf Spitzen oder ungewöhnliche Muster untersuchen.
Datenflüsse nach Ziel/Quellport: Kreisdiagramme zeigen eine Aufschlüsselung der Datenflüsse an den jeweiligen Ports an. In dieser Ansicht können Sie die am häufigsten verwendeten Ports ermitteln. Wenn Sie im Kreisdiagramm auf einen bestimmten Port klicken, wird das übrige Dashboard nach Datenflüssen über diesen Port gefiltert.
Anzahl von Datenflüssen und früheste Protokollzeit: Metriken zeigen die Anzahl der aufgezeichneten Datenflüsse und das Datum des ältesten aufgezeichneten Protokolls.
Datenflüsse nach NSG und Regel: Ein Balkendiagramm zeigt die Verteilung der Datenflüsse innerhalb der einzelnen NSGs sowie die Verteilung der Regeln in den NSGs. Sie können erkennen, welche NSGs und Regeln den meisten Datenverkehr generieren.
10 häufigste Quell-/Ziel-IP-Adressen: Balkendiagramme zeigen die zehn häufigsten Quell- und Ziel-IP-Adressen. Sie können diese Diagramme anpassen, um mehr oder weniger IP-Adressen anzuzeigen. Hier sehen Sie die am häufigsten auftretenden IP-Adressen sowie die Entscheidung zum Datenverkehr (zulassen oder verweigern), die für jede IP-Adresse getroffen wurden.
Flowtupel: Eine Tabelle mit Informationen innerhalb jedes Flowtupels mit der zugehörigen NSG und Regel.
Mithilfe der Abfrageleiste oben im Dashboard können Sie das Dashboard basierend auf beliebige Parameter der Datenflüsse filtern, z.B. nach Abonnement-ID, Ressourcengruppen, Regel oder andere relevante Variablen. Weitere Informationen zu Kibana-Abfragen und -Filtern finden Sie in der offiziellen Dokumentation.
Zusammenfassung
Durch die Kombination der Datenflussprotokolle von Netzwerksicherheitsgruppen mit dem Elastic Stack steht Ihnen eine leistungsstarke und anpassbare Methode zum Visualisieren des Netzwerkdatenverkehrs zur Verfügung. Mithilfe dieser Dashboards können Sie schnell Einblicke in Ihren Netzwerkdatenverkehr erhalten und teilen. Außerdem können Sie Filter anwenden und potenzielle Anomalien untersuchen. Mit Kibana können Sie diese Dashboards anpassen und geeignete Visualisierungen erstellen, die bestehende Anforderungen an Sicherheit, Überwachung und Compliance erfüllen.
Nächster Schritt
Erfahren Sie unter Visualisieren der Datenflussprotokolle von Netzwerksicherheitsgruppen mit Power BI, wie Sie Ihre NSG-Datenflussprotokolle mit Power BI visualisieren.