Durchführen der Erkennung von Netzwerkangriffen mit Azure Network Watcher und Open-Source-Tools
Packet Captures sind eine Schlüsselkomponente für die Implementierung von Netzwerk-Intrusion-Detection-Systemen (IDS) und die Überwachung der Netzwerksicherheit. Mehrere Open-Source-IDS-Tools verarbeiten Paketaufzeichnungen und suchen nach Signaturen möglicher Netzwerkeinbrüche und bösartiger Aktivitäten. Mithilfe der Paketaufzeichnungen, die Azure Network Watcher bereitstellt, können Sie Ihr Netzwerk auf schädliche Eindringlinge oder Schwachstellen analysieren.
Ein solches Open-Source-Tool ist Suricata, eine IDS-Engine, die mithilfe von Regelsätzen den Netzwerkverkehr überwacht und bei verdächtigen Ereignissen Alarme auslöst. Suricata bietet eine Multithreading-Engine, um die Analyse des Netzwerkverkehrs mit erhöhter Geschwindigkeit und Effizienz durchzuführen. Weitere Informationen zu Suricata und seinen Funktionen, besuchen Sie die Suricata-Website.
Szenario
In diesem Artikel erfahren Sie, wie Sie Ihre Umgebung für die Erkennung von Netzwerkeinbrüchen mit Network Watcher, Suricata und dem Elastic Stack einrichten.
Die Netzwerküberwachung bietet Ihnen die Paketerfassungen für die Erkennung von Netzwerkangriffen. Suricata verarbeitet die aufgezeichneten Pakete und löst Alarme aus, wenn die Pakete den Regeln für Bedrohungen entsprechen. Suricata speichert diese Warnungen in einer Protokolldatei auf Ihrem lokalen Computer.
Mithilfe des Elastic Stack können Sie die von Suricata generierten Protokolle indizieren und dann zum Erstellen eines Kibana-Dashboards verwenden. Ein Dashboard bietet eine visuelle Darstellung der Protokolle und eine Möglichkeit, schnell Einblicke in potenzielle Netzwerkrisiken zu erhalten.
Sie können beide Open-Source-Tools auf einem virtuellen Azure-Computer (VM) einrichten, damit Sie diese Analyse in Ihrer eigenen Azure-Netzwerkumgebung ausführen können.
Installieren von Suricata
Führen Sie im Befehlszeilenterminal Ihrer VM die folgenden Befehle aus:
sudo add-apt-repository ppa:oisf/suricata-stable sudo apt-get update sudo apt-get install suricata
Führen Sie zum Überprüfen Ihrer Installation den Befehl
suricata -h
aus, um die vollständige Liste mit den Befehlen anzuzeigen.
Informationen zu allen anderen Installationsmethoden finden Sie in der Suricata-Installationsanleitung
Herunterladen des Regelsatzes für neue Bedrohungen (Emerging Threats)
Bisher verfügen wir noch nicht über Regeln, die von Suricata ausgeführt werden können. Sie können eigene Regeln erstellen, wenn Sie bestimmte Bedrohungen für Ihr Netzwerk erkennen möchten. Sie können auch entwickelte Regelsätze aus verschiedenen Anbietern verwenden, z. B. Neue Bedrohungen oder Talos-Regeln von Snort. In diesem Artikel verwenden Sie den frei verfügbaren Regelsatz für neue Bedrohungen.
Laden Sie den Regelsatz herunter und kopieren Sie ihn in das Verzeichnis:
wget https://rules.emergingthreats.net/open/suricata/emerging.rules.tar.gz
tar zxf emerging.rules.tar.gz
sudo cp -r rules /etc/suricata/
Verarbeiten von Paketerfassungen mithilfe von Suricata
Führen Sie den folgenden Befehl aus, um Paketerfassungen mit Suricata zu verarbeiten:
sudo suricata -c /etc/suricata/suricata.yaml -r <location_of_pcapfile>
Die sich ergebenden Warnungen können Sie der Datei fast.log entnehmen:
tail -f /var/log/suricata/fast.log
Einrichten des Elastic Stack
Die von Suricata generierten Protokolle enthalten zwar wertvolle Informationen zu den Abläufen im Netzwerk, aber diese Protokolldateien sind nicht sehr einfach zu lesen und zu verstehen. Durch das Verbinden von Suricata 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 Elastic Stack Version 5.0 und höher erfordern 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
Weitere Installationsmethoden finden Sie auf der Elastic Webseite zur Installation von Elasticsearch.
Stellen Sie sicher, dass Elasticsearch mit diesem Befehl ausgeführt wird:
curl http://127.0.0.1:9200
Sie sollten eine Antwort ähnlich der folgenden erhalten:
{ "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 auf der Elastic Webseite zur Installation.
Installieren von Logstash
Installieren Sie Logstash, indem Sie die folgenden Befehle ausführen:
curl -L -O https://artifacts.elastic.co/downloads/logstash/logstash-5.2.0.deb sudo dpkg -i logstash-5.2.0.deb
Konfigurieren Sie "Logstash", um aus der Ausgabe der eve.json Datei zu lesen. Erstellen Sie mithilfe dieses Befehls eine Datei logstash.conf :
sudo touch /etc/logstash/conf.d/logstash.conf
Fügen Sie der Datei folgenden Inhalt hinzu. Stellen Sie sicher, dass der Pfad zur eve.json Datei korrekt ist.
input { file { path => ["/var/log/suricata/eve.json"] codec => "json" type => "SuricataIDPS" } } filter { if [type] == "SuricataIDPS" { date { match => [ "timestamp", "ISO8601" ] } ruby { code => " if event.get('[event_type]') == 'fileinfo' event.set('[fileinfo][type]', event.get('[fileinfo][magic]').to_s.split(',')[0]) end " } ruby{ code => " if event.get('[event_type]') == 'alert' sp = event.get('[alert][signature]').to_s.split(' group ') if (sp.length == 2) and /\A\d+\z/.match(sp[1]) event.set('[alert][signature]', sp[0]) end end " } } if [src_ip] { geoip { source => "src_ip" target => "geoip" #database => "/opt/logstash/vendor/geoip/GeoLiteCity.dat" add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ] add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}" ] } mutate { convert => [ "[geoip][coordinates]", "float" ] } if ![geoip.ip] { if [dest_ip] { geoip { source => "dest_ip" target => "geoip" #database => "/opt/logstash/vendor/geoip/GeoLiteCity.dat" add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ] add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}" ] } mutate { convert => [ "[geoip][coordinates]", "float" ] } } } } } output { elasticsearch { hosts => "localhost" } }
Stellen Sie sicher, dass Sie für die Datei eve.json die richtigen Berechtigungen vergeben, damit die Datei von Logstash erfasst werden kann.
sudo chmod 775 /var/log/suricata/eve.json
Starten Sie Logstash, indem Sie diesen Befehl ausführen:
sudo /etc/init.d/logstash start
Weitere Anweisungen zum Installieren von Logstash finden Sie in der offiziellen Elastic-Dokumentation.
Installieren von Kibana
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
Führen Sie Kibana mithilfe der folgenden Befehle aus:
cd kibana-5.2.0-linux-x86_64/ ./bin/kibana
Zeigen Sie Ihre Kibana-Weboberfläche an, indem Sie zu
http://localhost:5601
gehen.In diesem Szenario ist das für die Suricata-Protokolle verwendete Indexmuster
logstash-*
.Wenn Sie das Kibana-Dashboard remote anzeigen möchten, erstellen Sie eine NSG-Regel (Eingehende Netzwerksicherheitsgruppe), die den Zugriff auf Port 5601 ermöglicht.
Erstellen eines Kibana-Dashboards
Für diesen Artikel stellen wir ein Beispieldashboard bereit, in dem Sie Trends und Details in den Warnungen anzeigen können. Gehen Sie zur Verwendung wie folgt vor:
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 Ihre eigenen Visualisierungen und Dashboards erstellen, die auf Metriken Ihres eigenen Interesses zugeschnitten sind. Weitere Informationen zum Erstellen von Kibana-Visualisierungen finden Sie in der offiziellen Dokumentation von Kibana.
Visualisieren von IDS-Warnungsprotokollen
Das Beispieldashboard enthält mehrere Visualisierungen der Suricata-Warnungsprotokolle:
Alert by GeoIP: Karte zur Verteilung von Warnungen nach Ursprungsland/Ursprungsregion basierend auf dem geografischen Standort (anhand der IP-Adresse).
Top 10 Alerts: Zusammenfassung der zehn am häufigsten ausgelösten Warnungen mit einer Beschreibung. Wenn Sie auf eine Warnung klicken, wird die Anzeige im Dashboard nach den Informationen der jeweiligen Warnung gefiltert.
Anzahl der Warnungen: Die Gesamtanzahl der Warnungen, die vom Regelsatz ausgelöst wurden.
Top 20 ScrIP - Warnungen, Top 20 DestIP - Warnungen, Top 20 SrcPort - Warnungen,Top 20 DestPort - Benachrichtigungen: Kreisdiagramme, in denen die Quellen und Ziele für die top 20 IPs und Ports angezeigt werden, auf denen Warnungen ausgelöst wurden. Sie können nach bestimmten IP-Adressen oder Ports filtern, um zu ermitteln, wie viele und welche Arten von Warnungen ausgelöst wurden.
Warnungszusammenfassung: Eine Tabelle, in der bestimmte Details der einzelnen Warnungen zusammengefasst sind. Sie können diese Tabelle anpassen, um für jede Warnung andere Parameter anzuzeigen, die für Sie von Interesse sind.
Weitere Informationen zur Erstellung von benutzerdefinierten Visualisierungen und Dashboards finden Sie in der offiziellen Kibana-Dokumentation.
Zusammenfassung
Durch die Kombination von Paketaufzeichnungen von Network Watcher und Open-Source-IDS-Tools wie Suricata können Sie eine Vielzahl von Bedrohungen im Netzwerk aufspüren.
Dashboards helfen Ihnen, Trends und Anomalien in Ihrem Netzwerk schnell zu erkennen. Sie können auch Dashboards verwenden, um die Daten zu untersuchen, um die Ursachen von Warnungen zu ermitteln, z. B. böswillige Benutzer-Agents oder anfällige Ports. Mit diesen extrahierten Daten können Sie fundierte Entscheidungen zur Vorgehensweise treffen:
- Reagieren Und schützen Sie Ihr Netzwerk vor schädlichen Angriffsversuchen.
- Erstellen Sie Regeln, um zukünftige Angriffe auf Ihr Netzwerk zu verhindern.
Nächster Schritt
Erfahren Sie, wie Sie Paketerfassungen auf Basis von Warnungen auslösen: