Freigeben über


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.

Diagramm, eines einfachen Webanwendungsszenarios.

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

  1. 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
    
  2. 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

  1. 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.

  2. 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.

  3. 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

  1. 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
    
  2. 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
    
  3. 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"
    }
    }
    
  4. 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
    
  5. 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

  1. 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
    
  2. Führen Sie Kibana mithilfe der folgenden Befehle aus:

    cd kibana-5.2.0-linux-x86_64/
    ./bin/kibana
    
  3. 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-*.

  4. 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:

  1. Laden Sie die Dashboarddatei, die Visualisierungsdatei und die Datei mit der gespeicherten Suche herunter.

  2. 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.

Screenshot eines Kibana-Dashboards.

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).

    Screenshot einer Karte für geografische IP-Warnungen.

  • 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.

    Screenshot der am häufigsten ausgelösten Warnungen.

  • Anzahl der Warnungen: Die Gesamtanzahl der Warnungen, die vom Regelsatz ausgelöst wurden.

    Screenshot der Anzahl der Warnungen.

  • 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.

    Screenshot von Kreisdiagrammen der 20 wichtigsten IPs und Ports, auf denen 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.

    Screenshot einer Zusammenfassungstabelle mit Details zu einzelnen Warnungen.

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: