Einführung
Willkommen zum Lab „Einführung in Snort IDS“.
Snort ist ein Open-Source-System zur Netzwerk-Intrusion-Prevention (NIPS) und Intrusion-Detection (NIDS), das in der Lage ist, Echtzeit-Verkehrsanalysen und Paketprotokollierungen in IP-Netzwerken durchzuführen. Es kann Protokollanalysen, Inhaltsuntersuchungen und Musterabgleiche vornehmen und wird häufig eingesetzt, um eine Vielzahl von Angriffen und Sondierungen – wie Pufferüberläufe, Stealth-Port-Scans, Webanwendungsangriffe und mehr – aktiv zu blockieren oder passiv zu erkennen.
Auf einer übergeordneten Ebene beantwortet ein IDS eine andere Frage als ein Paket-Sniffer. Ein Sniffer hilft Ihnen, den Datenverkehr zu beobachten. Ein IDS versucht zu entscheiden, ob ein Teil dieses Verkehrs Aufmerksamkeit erfordert. Snort erreicht dies durch die Kombination von Paketinspektion mit einer Regelsprache. Mit anderen Worten: Es verwandelt rohen Datenverkehr in sicherheitsrelevante Ereignisse.
In diesem Lab lernen Sie die Grundlagen von Snort kennen. Sie erkunden die Konfigurationsdatei, lernen, wie man die Konfigurationssyntax validiert, und führen Snort in zwei seiner primären Betriebsmodi aus: dem Sniffer-Modus und dem Paket-Logger-Modus.
Überprüfung der Snort-Konfigurationsdatei
In diesem Schritt erkunden Sie die primäre Konfigurationsdatei, die von Snort verwendet wird. Das Verständnis dieser Datei ist entscheidend, da sie bestimmt, wie sich Snort verhält, welches Netzwerk es schützt und welche Regeln es anwendet.
Konfiguration ist wichtig, da die Qualität der Erkennung stark vom Kontext abhängt. Ein IDS, das nicht weiß, welche Adressen zu Ihrer Umgebung gehören, kann eingehenden Datenverkehr nicht sinnvoll von internem Verkehr unterscheiden. Variablen wie HOME_NET sind daher keine rein kosmetischen Einstellungen. Sie sind Teil der Art und Weise, wie Snort das Netzwerk modelliert, das es verteidigt.
Die Hauptkonfigurationsdatei für Snort befindet sich unter /etc/snort/snort.conf. Diese Datei enthält verschiedene Einstellungen, einschließlich Netzwerkvariablen, Pfade zu Regeldateien und Präprozessor-Konfigurationen.
Beginnen wir damit, in Ihr Projektverzeichnis zu navigieren, das Ihr Standard-Arbeitsbereich ist.
cd ~/project
Eine der wichtigsten Variablen in der Snort-Konfigurationsdatei ist HOME_NET. Diese Variable definiert das interne Netzwerk, das Snort schützen soll. Standardmäßig ist sie oft auf any gesetzt, was bedeutet, dass Snort den gesamten Netzwerkverkehr überwacht.
Sie können den Befehl grep verwenden, um innerhalb der Konfigurationsdatei nach der Variablen HOME_NET zu suchen. Der grep-Befehl ist ein leistungsstarkes Werkzeug unter Linux, um nach bestimmten Textmustern in Dateien zu suchen. Da die Konfigurationsdatei geschützt ist, müssen wir sudo verwenden, um den Befehl mit administrativen Rechten auszuführen.
sudo grep "ipvar HOME_NET" /etc/snort/snort.conf
Sie sollten eine Ausgabe ähnlich dieser sehen:
ipvar HOME_NET any
Diese Ausgabe bestätigt, dass die Variable HOME_NET derzeit auf any gesetzt ist. In einer realen Produktionsumgebung würden Sie dies normalerweise an Ihr spezifisches internes IP-Subnetz anpassen (zum Beispiel 192.168.1.0/24), um Fehlalarme zu reduzieren und die Leistung zu verbessern.
Sie können sich auch die gesamte Konfigurationsdatei mit dem Befehl less ansehen, wenn Sie weiter forschen möchten, obwohl sie recht lang ist. Für den Moment reicht es aus zu wissen, wo sich die Datei befindet und wie man wichtige Variablen findet.
Testen der Konfigurationssyntax
In diesem Schritt lernen Sie, wie Sie die Snort-Konfigurationsdatei auf Syntaxfehler überprüfen.
Die Validierung vor der Bereitstellung ist eine kritische betriebliche Praxis. Eine Erkennungsregel oder Konfigurationsdatei ist nur nützlich, wenn die Engine sie tatsächlich laden kann. Das Testen der Syntax ist das IDS-Äquivalent zum Kompilieren von Code vor der Veröffentlichung: Es erkennt fehlerhafte Änderungen frühzeitig und verhindert blinde Flecken in der Produktion.
Wann immer Sie Änderungen an der Datei snort.conf vornehmen, wird dringend empfohlen, die Konfiguration zu testen, bevor Sie den Snort-Dienst tatsächlich starten oder neu starten. Wenn ein Tippfehler oder eine Fehlkonfiguration vorliegt, startet Snort nicht, was dazu führen könnte, dass Ihr Netzwerk unüberwacht bleibt.
Snort bietet einen integrierten Testmodus. Sie können das Flag -T verwenden, um Snort anzuweisen, die Konfiguration zu testen, und das Flag -c, um den Pfad zu der Konfigurationsdatei anzugeben, die Sie testen möchten.
Führen Sie den folgenden Befehl aus, um die Standardkonfiguration zu testen:
sudo snort -T -c /etc/snort/snort.conf
Da Snort auf Netzwerkschnittstellen und Systemdateien zugreifen muss, müssen Sie es mit sudo ausführen, um ihm administrative Rechte zu gewähren.
Während der Befehl ausgeführt wird, gibt Snort eine Menge Informationen im Terminal aus. Es initialisiert Präprozessoren, lädt Regeln und validiert die Syntax.
Scrollen Sie zum Ende der Ausgabe. Sie suchen nach einer spezifischen Erfolgsmeldung, die wie folgt aussieht:
--== Initialization Complete ==--
,,_ -*> Snort! <*-
o" )~ Version 2.9.15.1 GRE (Build 68)
'''' By Martin Roesch & The Snort Team: http://www.snort.org/contact#team
Copyright (C) 2014-2019 Cisco and/or its affiliates. All rights reserved.
Copyright (C) 1998-2013 Sourcefire, Inc., et al.
Using libpcap version 1.10.1 (with TPACKET_V3)
Using PCRE version: 8.39 2016-06-14
Using ZLIB version: 1.2.11
Rules Engine: SF_SNORT_DETECTION_ENGINE Version 3.0 <Build 1>
Preprocessor Object: SF_GTP Version 1.1 <Build 4>
Preprocessor Object: SF_CORVUS Version 1.1 <Build 4>
...
Snort successfully validated the configuration!
Snort exiting
Der entscheidende Satz hier ist Snort successfully validated the configuration!. Dies bedeutet, dass Ihre snort.conf-Datei syntaktisch korrekt und einsatzbereit ist.
Ausführen von Snort im Sniffer-Modus
In diesem Schritt führen Sie Snort im Sniffer-Modus aus.
Der Sniffer-Modus ist die grundlegendste Art, Snort zu verwenden. In diesem Modus liest Snort einfach die Pakete, die durch das Netzwerk fließen, und zeigt sie in einem kontinuierlichen Strom auf der Konsole an. Er verhält sich sehr ähnlich wie das bekannte Dienstprogramm tcpdump.
Dies ist pädagogisch nützlich, da es zeigt, dass IDS-Technologie immer bei den Paketen beginnt. Bevor Snort bei Datenverkehr Alarm schlagen kann, muss es diesen Datenverkehr korrekt erfassen und dekodieren. Das Erlernen des Sniffer-Modus zuerst hält die Grundlage auf Paketebene sichtbar, anstatt Alarme als etwas Magisches zu behandeln.
Um Snort im Sniffer-Modus auszuführen, verwenden Sie das Flag -v (verbose). Dies weist Snort an, die TCP/IP-Paket-Header auf dem Bildschirm auszugeben.
Da Netzwerkverkehr überwältigend sein und Ihr Terminal fluten kann, verwenden wir auch das Flag -n gefolgt von einer Zahl. Dies weist Snort an, nur eine bestimmte Anzahl von Paketen zu erfassen und sich dann automatisch zu beenden.
Führen Sie den folgenden Befehl aus, um 5 Pakete zu erfassen und anzuzeigen:
sudo snort -v -n 5
Sie sehen eine Ausgabe ähnlich der folgenden, die die Paket-Header zeigt:
Running in packet dump mode
--== Initializing Snort ==--
Initializing Output Plugins!
pcap DAQ configured to passive.
Acquiring network traffic from "eth0".
...
05/18-14:32:10.123456 192.168.1.10:54321 -> 8.8.8.8:53
UDP TTL:64 TOS:0x0 ID:12345 IpLen:20 DgmLen:63
Len: 35
...
===============================================================================
Snort exiting
Wenn Sie noch mehr Details sehen möchten, können Sie Flags kombinieren. Zum Beispiel zeigt das Hinzufügen von -d die Anwendungsdaten (Payload) des Pakets an, und -e zeigt die Header der Sicherungsschicht (MAC-Adresse) an.
Versuchen wir, 2 Pakete mit vollständigen Details (Header, Daten und Informationen zur Sicherungsschicht) zu erfassen:
sudo snort -vde -n 2
Dieser Modus ist unglaublich nützlich für die Fehlersuche bei Netzwerkverbindungsproblemen oder um schnell zu überprüfen, welche Art von Datenverkehr derzeit Ihre Netzwerkschnittstelle durchläuft.
Ausführen von Snort im Paket-Logger-Modus
In diesem Schritt lernen Sie, wie Sie Snort im Paket-Logger-Modus ausführen.
Während der Sniffer-Modus großartig für die Echtzeitansicht ist, ist er für die langfristige Überwachung oder detaillierte Analyse nicht praktikabel. Der Paket-Logger-Modus löst dies, indem er die erfassten Pakete in einem Format auf der Festplatte speichert, das später mit Tools wie Wireshark oder Snort selbst analysiert werden kann.
Gespeicherte Paketnachweise sind wichtig, da Alarme und Pakete sich gegenseitig ergänzen. Ein Alarm sagt Ihnen, dass eine Regel ausgelöst wurde. Die Paketaufzeichnung ermöglicht es Ihnen, zu bestätigen, was tatsächlich passiert ist, und Details zu untersuchen, die in der Alarmzusammenfassung möglicherweise nicht enthalten sind. Ausgereifte Überwachungs-Stacks bewahren oft beides auf.
Zuerst müssen Sie ein Verzeichnis erstellen, um die Protokolldateien zu speichern. Erstellen wir ein Verzeichnis namens snort_logs in Ihrem Projektordner.
mkdir -p ~/project/snort_logs
Um Snort im Paket-Logger-Modus auszuführen, verwenden Sie das Flag -l gefolgt vom Pfad zu Ihrem Protokollverzeichnis. Wir verwenden außerdem -dev, um vollständige Paketdetails zu erfassen, und -n 10, um genau 10 Pakete zu erfassen, bevor das Programm beendet wird.
Führen Sie den folgenden Befehl aus:
sudo snort -dev -l ~/project/snort_logs -n 10
Snort erfasst 10 Pakete und schreibt sie in das von Ihnen angegebene Verzeichnis. Sie werden die Pakete diesmal nicht auf dem Bildschirm sehen, aber Sie werden die Initialisierungs- und Beendigungszusammenfassungen sehen.
Sobald Snort fertig ist, können Sie überprüfen, ob die Protokolldatei erstellt wurde, indem Sie den Inhalt des Verzeichnisses snort_logs auflisten:
ls -l ~/project/snort_logs
Sie sollten eine Datei namens snort.log. gefolgt von einem Zeitstempel sehen, ähnlich dieser:
total 4
-rw------- 1 root root 1234 May 18 14:45 snort.log.1684421100
Diese Datei wird in einem Binärformat (pcap) gespeichert. Sie können sie nicht direkt mit einem Texteditor wie nano oder cat lesen. Stattdessen würden Sie normalerweise ein Tool wie tcpdump verwenden oder sie mit dem Flag -r (read) zur weiteren Analyse wieder in Snort einlesen.
Zusammenfassung
Herzlichen Glückwunsch! Sie haben das Lab „Einführung in Snort IDS“ erfolgreich abgeschlossen.
In diesem Lab haben Sie die grundlegenden Konzepte von Snort kennengelernt. Sie haben die Hauptkonfigurationsdatei (snort.conf) erkundet und gelernt, wie man deren Syntax mit dem Flag -T validiert, um Startfehler zu vermeiden. Sie haben außerdem geübt, Snort im Sniffer-Modus auszuführen, um Live-Netzwerkverkehr in Ihrem Terminal zu sehen, und im Paket-Logger-Modus, um erfasste Pakete zur späteren Analyse in einem Verzeichnis zu speichern. Diese grundlegenden Fähigkeiten sind für jeden unerlässlich, der Snort für die Netzwerksicherheitsüberwachung und Intrusion Detection einsetzen möchte.



