Verwalten und Analysieren von Datenflussprotokollen für Netzwerksicherheitsgruppen in Azure mithilfe von Network Watcher und Graylog
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.
Datenflussprotokolle von Netzwerksicherheitsgruppen enthalten Informationen für ein besseres Verständnis von ein- und ausgehendem IP-Datenverkehr in Azure-Netzwerkschnittstellen. Datenflussprotokolle zeigen ausgehende und eingehende Datenflüsse pro Netzwerksicherheitsgruppe, die Netzwerkschnittstelle, auf die sich der Datenfluss bezieht, 5-Tupel-Informationen über den Datenfluss (Quell-/Ziel-IP, Quell-/Zielport, Protokoll) und Informationen zu zugelassenem oder verweigertem Datenverkehr.
Sie können für die NSGs in Ihrem Netzwerk die Datenflussprotokollierung aktivieren. Mehrere Netzwerksicherheitsgruppen mit aktivierter Datenflussprotokollierung machen es aufwendig, Ihre Protokolle zu analysieren und einen Einblick in sie zu erhalten. Dieser Artikel bietet eine Projektmappe, um diese Datenflussprotokolle von Netzwerksicherheitsgruppen mit Graylog und Logstash zu verwalten. Hierbei handelt es sich um ein Open Source-Tool zur Protokollverwaltung und -analyse und eine serverseitige Open Source-Datenverarbeitungspipeline.
Warnung
In den folgenden Schritten werden Flowprotokolle der Version 1 verwendet. Ausführliche Informationen finden Sie unter Einführung in die Datenflussprotokollierung für Netzwerksicherheitsgruppen. Die folgenden Anweisungen funktionieren ohne Änderungen nicht mit Version 2 der Protokolldateien.
Szenario
Datenflussprotokolle von Netzwerksicherheitsgruppen werden mithilfe von Network Watcher aktiviert. Datenflussprotokolle in Azure Blob Storage. Ein Logstash-Plug-In wird verwendet, um mit Datenflussprotokollen in Blob Storage eine Verbindung herzustellen, diese zu verarbeiten und an Graylog zu senden. Nachdem die Datenflussprotokolle in Graylog gespeichert wurden, können sie analysiert und in benutzerdefinierten Dashboards visualisiert werden.
Installationsschritte
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 von Graylog
Bei diesem Beispiel sind Graylog und Logstash auf einem in Azure bereitgestellten Ubuntu-Server konfiguriert.
- Sie finden in der Dokumentation von Graylog Schritt-für-Schritt-Anweisungen zum Installieren auf Ubuntu.
- Stellen Sie sicher, dass Sie auch die Graylog-Webschnittstelle gemäß der Dokumentation konfigurieren.
Dieses Beispiel verwendet die Graylog-Mindestkonfiguration (d. h. eine einzelne Graylog-Instanz), aber Graylog kann je nach System- und Produktionsanforderungen ressourcenübergreifend entworfen werden. Weitere Architekturüberlegungen oder einen ausführlichen Architekturleitfaden finden Sie in der Dokumentation von Graylog und im Architekturleitfaden.
Graylog kann in vielerlei Hinsicht je nach Plattform und Vorlieben installiert werden. Eine vollständige Liste der möglichen Installationsmethoden finden Sie in Graylogs offizieller Dokumentation. Die Graylog-Serveranwendung wird auf Linux-Verteilungen ausgeführt und hat die folgenden Voraussetzungen:
- Java SE 8 oder höher – Dokumentation zur JDK-Installation
- Elastic Search 2.x (2.1.0 oder höher) – Elasticsearch-Installationsdokumentation
- MongoDB 2.4 oder höher – Dokumentation zur MongoDB-Installation
Installieren von Logstash
Mithilfe von Logstash können Sie die JSON-formatierten Datenflussprotokolle auf Flusstupelebene vereinfachen. Das Vereinfachen der Datenflussprotokolle erleichtert die Organisation und Suche in Graylog. Die folgenden Anweisungen dienen zur Installation von Logstash unter Ubuntu. Anweisungen zum Installieren dieses Pakets unter Red Hat Enterprise Linux finden Sie unter Installieren aus Paketrepositorys: yum.
Führen Sie die folgenden Befehle zum Installieren von Logstash aus:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elastic-keyring.gpg sudo apt-get install apt-transport-https echo "deb [signed-by=/usr/share/keyrings/elastic-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-8.x.list sudo apt-get update && sudo apt-get install logstash
Konfigurieren Sie Logstash, um die Datenflussprotokolle zu analysieren und an Graylog zu senden. Erstellen Sie eine Logstash.conf-Datei:
sudo touch /etc/logstash/conf.d/logstash.conf
Fügen Sie der Datei folgenden Inhalt hinzu. Ändern Sie die Werte
storage_account_name
,storage_access_key
undcontainer
entsprechend Ihren Speicherkontodetails:input { azureblob { storage_account_name => "mystorageaccount" storage_access_key => "NrUZmx7pJSKaRJzvQbeiZWi5nBRWOTr7Wwr9DrvK7YtDBrADYxT1y0oEExtSlkDnGRt7qcRiZzEBCCyRYND8SxSt" container => "insights-logs-networksecuritygroupflowevent" registry_create_policy => "start_over" codec => "json" file_head_bytes => 21 file_tail_bytes => 9 # Possible options: `do_not_break`, `with_head_tail`, `without_head_tail` break_json_down_policy => 'with_head_tail' break_json_batch_count => 2 interval => 5 } } 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]}" } add_field => { "time" => "%{[records][time]}" "systemId" => "%{[records][systemId]}" "category" => "%{[records][category]}" "resourceId" => "%{[records][resourceId]}" "operationName" => "%{[records][operationName}}" "Version" => "%{[records][properties][Version}}" "rule" => "%{[records][properties][flows][rule]}" "mac" => "%{[records][properties][flows][flows][mac]}" } convert => {"unixtimestamp" => "integer"} convert => {"srcPort" => "integer"} convert => {"destPort" => "integer"} add_field => { "message" => "%{Message}" } } date { match => ["unixtimestamp" , "UNIX"] } } output { stdout { codec => rubydebug } udp { host => "127.0.0.1" port => 12201 } }
Die bereitgestellte Konfigurationsdatei von Logstash besteht aus drei Teilen: Eingabe, Filter und Ausgabe. Der Eingabebereich bezeichnet die Eingabequelle der von Logstash verarbeiteten Protokolle. In diesem Fall wird ein Azure-Blog-Eingabe-Plug-In verwendet (das in den nächsten Schritten installiert wird). Es erlaubt uns, auf die JSON-Dateien des NSG-Datenflussprotokolls zuzugreifen, die in Blob Storage gespeichert sind.
Der Filterabschnitt vereinfacht dann jede Datenfluss-Protokolldatei so, dass jedes einzelnen Flusstupel und die ihm zugeordneten Eigenschaften zu einem gesonderten Logstash-Ereignis werden.
Schließlich leitet der Ausgabeteil jedes Logstash-Ereignis an den Graylog-Server weiter. Sie können die CONF-Datei von Logstash nach Wunsch an Ihre spezifischen Anforderungen anpassen.
Hinweis
In der vorherigen Konfigurationsdatei wird davon ausgegangen, dass der Graylog-Server auf der Loopback-IP-Adresse 127.0.0.1 des lokalen Hosts konfiguriert wurde. Andernfalls stellen Sie sicher, dass der Hostparameter im Ausgabebereich auf die richtige IP-Adresse eingestellt ist.
Weitere Anweisungen zum Installieren von Logstash finden Sie in der Dokumentation von Logstash.
Installieren des Logstash-Eingangs-Plug-Ins für Azure Blob Storage
Mithilfe dieses Logstash-Plug-Ins können Sie direkt auf die Datenflussprotokolle im jeweiligen Blob Storage-Konto zugreifen. Sie installieren dieses Plug-In, indem Sie über das Logstash-Standardinstallationsverzeichnis (in diesem Fall /usr/share/logstash/bin) folgenden Befehl ausführen:
cd /usr/share/logstash/bin
sudo ./logstash-plugin install logstash-input-azureblob
Weitere Informationen zu diesem Plug-In finden Sie in der Dokumentation.
Einrichten der Verbindung von Logstash zu Graylog
Nachdem Sie mit Logstash eine Verbindung mit den Datenflussprotokollen hergestellt und den Graylog-Server eingerichtet haben, müssen Sie Graylog zum Akzeptieren von eingehenden Protokolldateien konfigurieren.
Navigieren Sie mit der URL, die Sie konfiguriert haben, zur Weboberfläche Ihres Graylog-Servers. Sie können auf die Schnittstelle zugreifen, indem Sie in Ihrem Browser zu
http://<graylog-server-ip>:9000/
navigierenWählen Sie zum Navigieren auf die Konfigurationsseite das Dropdown-Menü System in der oberen Navigationsleiste auf der rechten Seite, und klicken Sie dann auf Eingaben. Alternativ können Sie zu
http://<graylog-server-ip>:9000/system/inputs
navigierenUm die neue Eingabe zu starten, wählen Sie GELF-UDP in der Dropdown-Liste Eingabe auswählen aus, und füllen Sie dann das Formular aus. GELF steht für Graylog Extended Log Format (erweitertes Graylog-Protokollformat). Das GELF-Format wird von Graylog entwickelt. Weitere Informationen zu dessen Vorteilen finden Sie unter der Graylog-Dokumentation.
Stellen Sie sicher, dass Sie die Eingabe an die IP-Adresse binden, auf der Sie Ihren Graylog-Server konfiguriert haben. Die IP-Adresse sollte mit dem Host-Feld der UDP-Ausgabe der Logstash-Konfigurationsdatei übereinstimmen. Der Standardport sollte 12201 sein. Stellen Sie sicher, dass der Port dem Port-Feld in der UDP-Ausgabe entspricht, die in der Konfigurationsdatei von Logstash festgelegt ist.
Nachdem Sie die Eingabe starten, sollten Sie eswie in der folgenden Abbildung gezeigt, im Abschnitt Lokale Eingaben sehen:
Weitere Informationen zum Graylog-Nachrichteneingaben finden Sie in der Dokumentation.
Sobald diese Konfigurationen vorgenommen wurden, können Sie Logstash starten, um den Lesevorgang für Datenflussprotokolle mithilfe des folgenden Befehls zu beginnen:
sudo systemctl start logstash.service
Durchsuchen von Graylog-Nachrichten
Nachdem Ihr Graylog-Server genug Zeit zum Erfassen von Nachrichten hatte, können Sie die Meldungen durchsuchen. Überprüfen Sie auf der Konfigurationsseite Eingaben die Nachrichten, die an Ihren Graylog-Server gesendet werden, indem Sie auf die Schaltfläche Empfangene Nachrichten anzeigen der erstellten GELF-UDP-Eingabe klicken. Sie werden zu einem Bildschirm weitergeleitet, der der folgenden Abbildung ähnelt:
Durch Klicken auf den blauen Link „% {Message}“ wird jede Nachricht erweitert, um die Parameter der einzelnen Datenflusstupel anzuzeigen, wie in der folgenden Abbildung gezeigt:
Standardmäßig sind alle Nachrichtenfelder in der Suche enthalten, wenn Sie kein bestimmtes Nachrichtenfeld für die Suche auswählen. Wenn Sie nach bestimmten Nachrichten suchen (d. h. Datenflusstupel von einer bestimmten Quell-IP-Adresse), können Sie die Graylog-Suchabfragesprache wie dokumentiert verwenden.
Analysieren von Datenflussprotokollen für Netzwerksicherheitsgruppen mit Graylog
Nun, da Graylog eingerichtet ist und ausgeführt wird, können Sie einige der Funktionen verwenden, um Ihre Datenflussprotokolldaten besser zu verstehen. Eine solche Methode ist die Verwendung von Dashboards zum Erstellen bestimmter Datenansichten.
Erstellen eines Dashboards
Wählen Sie in der oberen Navigationsleiste Dashboards aus, oder navigieren Sie zu
http://<graylog-server-ip>:9000/dashboards/
Klicken Sie dort auf die grüne Dashboard erstellen-Schaltfläche, und füllen Sie das kurze Formular mit dem Titel und der Beschreibung des Dashboards aus. Klicken Sie auf die Speichern-Schaltfläche, um das neue Dashboard zu erstellen. Sie sehen ein Dashboard ähnlich dem folgenden Bild:
Hinzufügen von Widgets
Sie können auf den Titel des Dashboards klicken, um ihn anzuzeigen. Im Moment ist er jedoch leer, da wir noch keine Widgets hinzugefügt haben. Ein einfacher und nützlicher Widgettyp, der zum Dashboard hinzugefügt werden kann, sind die Diagramme Quick Vales (Kurze Werte) , die eine Liste der Werte für das ausgewählte Feld und deren Verteilung anzeigen.
Navigieren Sie zurück zu den Suchergebnissen der UDP-Eingabe, die Datenflussprotokolle empfängt, indem Sie auf der oberen Navigationsleiste Suchen auswählen.
Im Bereich Suchergebnis auf der linken Seite des Bildschirms finden Sie die Registerkarte Felder, die diverse Felder jeder eingehenden Datenflusstupelnachricht auflistet.
Wählen Sie alle gewünschten Parameter zur Visualisierung aus (in diesem Beispiel ist die Quell-IP ausgewählt). Um die Liste der möglichen Widgets anzuzeigen, klicken Sie auf den blauen Dropdown-Pfeil auf der linken Seite des Felds, und wählen Sie dann Quick Values (Schnelle Werte) aus, um das Widget zu generieren. Es sollte etwa das folgende Bild angezeigt werden:
Von dort aus können Sie die Schaltfläche Zum Dashboard hinzufügen in der oberen rechten Ecke des Widgets und das entsprechende Dashboard auswählen.
Navigieren Sie zurück zum Dashboard, um Widgets anzuzeigen, die Sie gerade hinzugefügt haben.
Sie können eine Vielzahl von anderen Widgets zu Ihrem Dashboard hinzufügen, z.B. Histogramme und Anzahlen, um wichtige Metriken nachzuverfolgen. Dazu gehört das Beispiel-Dashboard in der folgenden Abbildung:
Weitere Erläuterungen zu Dashboards und anderen Typen von Widgets finden Sie in der Dokumentation von Graylog.
Durch die Integration von Network Watcher mit Graylog haben Sie jetzt eine einfache und zentrale Möglichkeit zum Verwalten und Visualisieren von NSG-Datenflussprotokollen. Graylog verfügt über eine Reihe weiterer leistungsfähiger Features wie Datenströme und Warnungen, die auch zur weiteren Verwaltung von Datenflussprotokollen und zum besseren Verständnis des Netzwerkdatenverkehrs genutzt werden können. Nachdem Sie Graylog eingerichtet und mit Azure verbunden haben, können Sie die anderen gebotenen Funktionen weiter erkunden.
Nächste Schritte
Erfahren Sie unter Visualize network security group flows logs with Power BI (Visualisieren der Datenflussprotokolle von Netzwerksicherheitsgruppen mit Power BI), wie Sie Ihre NSG-Datenflussprotokolle mit Power BI visualisieren.