beebright - stock.adobe.com

Snort: Intrusion Detection and Prevention mit Open Source

Snort ist ein auf Open Source basierendes IDS- und IPS-System, mit dem Administratoren nach Schwachstellen und Angriffen suchen und diese bekämpfen können. So setzen Sie Snort ein.

Snort gehört zu den bekanntesten Open Source-Lösungen im Bereich Intrusion Detection System (IDS) und Intrusion Prevention System (IPS). Die Einrichtung erfolgt üblicherweise auf Linux, ist generell aber auch mit Windows möglich. Auch in Kali Linux lässt sich die Lösung einrichten und nutzen.

Häufig kommt Version 2.9.x zum Einsatz, da diese in den Paketquellen von Debian integriert ist. Eine Aktualisierung zu Snort 3 gelingt über die Anleitungen auf der Snort-Webseite.

Snort auf Ubuntu installieren

Die Installation besteht aus der obligatorischen Aktualisierung des Linux-Systems, gefolgt mit der Installation von Snort:

sudo apt-get update && sudo apt-get upgrade

sudo apt-get install snort -y

Im Rahmen der Installation erwartet der Einrichtungsassistent, dass der IP-Bereich für das lokale Netzwerk angegeben wird. Wir arbeiten in diesem Beispiel mit dem Netzwerk 10.0.0.0/16.

Im Rahmen der Snort-Installation wird das lokale IP-Subnetz definiert.
Abbildung 1: Im Rahmen der Snort-Installation wird das lokale IP-Subnetz definiert.

Nach der Installation überprüfen Sie die installierte Version mit:

snort --version
Überprüfen der Installation von Snort auf Ubuntu.
Abbildung 2: Überprüfen der Installation von Snort auf Ubuntu.

Netzwerkadapter für das Aufzeichnen mit Snort vorbereiten

Damit Snort Daten im Netzwerk aufzeichnen kann, muss der jeweilige Netzwerkadapter in den Promiscous-Modus gesetzt werden. Das ist ein Betriebsmodus für Netzwerkkarten, der es ermöglicht, alle Datenpakete im Netzwerk zu empfangen und aufzuzeichnen, unabhängig davon, ob sie explizit an die betreffende Netzwerkkarte adressiert sind. Das ist beim Einsatz von Snort entscheidend, da die Software nicht nur den Datenverkehr analysiert, der für den Host bestimmt ist, sondern den gesamten Datenverkehr im Netzwerk überwachen soll. Nur so lassen sich potenzielle Bedrohungen erkennen, die möglicherweise auf andere Hosts abzielen. Ohne den Promiscuous Mode würde die Netzwerkkarte ausschließlich Pakete empfangen, die an den eigenen Host adressiert sind, was eine umfassende Netzwerkanalyse verhindert.

Für die Verwendung von Snort und zum Umsetzen von Einstellungen wie den Promiscous-Mode muss natürlich die Bezeichnung des Netzwerkadapters bekannt sein sowie die IP-Adressen des Snort-Servers. Diese Daten lassen sich zum Beispiel mit ip a anzeigen. Die Umstellung zum Promiscous Mode erfolgt danach mit:

sudo ip link set eth0 promisc on

In diesem Beispiel kommt der Adapter eth0 mit Snort zum Einsatz.

Aktivieren und Anzeigen des Promiscious Mode für einen Netzwerkadapter in Linux.
Abbildung 3: Aktivieren und Anzeigen des Promiscious Mode für einen Netzwerkadapter in Linux.

Snort-Konfiguration überprüfen

Bei einer Standardinstallation befindet sich Snort im Verzeichnis /etc/snort. Hier ist auch die Konfigurationsdatei snort.conf gespeichert, in der die Einstellungen des IDS-Systems zu finden sind. Die Bearbeitung kann mit einem beliebigen Editor erfolgen, erfordert aber Root-Rechte.

Anpassen der Snort-Konfigurationsdatei.
Abbildung 4: Anpassen der Snort-Konfigurationsdatei.

Sinnvoll ist es, zum Beispiel in der Zeile HOME_NET das IP-Subnetz zu hinterlegen, in dem man nach Schwachstellen und Angriffen suchen will. Am Beispiel des Subnetzes 10.0.0.0/16 erfolgt das mit:

ipvar HOME_NET 10.0.0.0/16

Die Regeln, mit denen Snort im Netzwerk nach Angriffen sucht sind im Verzeichnis /etc/snort/rules zu finden. Um die Regeln zu aktualisieren, kann man diese direkt auf der Webseite des Projektes herunterladen und in die Konfigurationsdatei implementieren. Dazu suchen Sie im Editor nach dem Bereich site specific rules und fügen den Namen der Regeln hinzu. Für den ersten Start ist das nicht unbedingt notwendig.

Erster Start von Snort

Wenn die Konfigurationsdatei angepasst ist, können wir Snort starten, zum Beispiel mit dem Befehl:

sudo snort -T -i eth0 -c /etc/snort/snort.conf

Der Befehl startet Snort im Testmodus, um die Konfiguration und die Schnittstelle vor dem produktiven Einsatz zu überprüfen. Der Parameter -T schaltet in den Testmodus, in dem Snort die angegebene Konfigurationsdatei überprüft, ohne tatsächlich den Netzwerkverkehr zu analysieren. So lassen sich Syntaxfehler und Fehlkonfigurationen in der Konfigurationsdatei erkennen. Der Parameter -i eth0 spezifiziert die Netzwerkschnittstelle, in diesem Fall eth0, auf der Snort später den Datenverkehr überwachen soll. Schließlich wird mit -c /etc/snort/snort.conf der Pfad zur Konfigurationsdatei festgelegt, die alle relevanten Regeln und Einstellungen enthält. Dieses Kommando dient der Validierung der Konfiguration, um sicherzustellen, dass Snort korrekt eingerichtet ist und auf der angegebenen Schnittstelle wie vorgesehen arbeiten kann.

Starten von Snort.
Abbildung 5: Starten von Snort.

Es ist auch möglich Snort direkt als Daemon zu starten. Das geschieht mit:

sudo snort -D -i eth0 -c /etc/snort/snort.conf

Der Befehl unterscheidet sich vom vorherigen Kommando durch den Parameters -D, der dafür sorgt, dass Snort im Daemon-Modus ausgeführt wird. In diesem Modus läuft Snort im Hintergrund, anstatt im Vordergrund des Terminals aktiv zu bleiben. Das ist besonders nützlich für langlaufende Prozesse, da der Benutzer das Terminal nach dem Starten des Befehls weiter nutzen kann, während Snort ununterbrochen im Hintergrund den Netzwerkverkehr überwacht. Die weiteren Parameter bleiben gleich. Überprüfen lässt sich das mit:

ps aux | grep snort

Die Alarme, die Snort auslöst, speichert das System im Verzeichnis /var/log/snort/alert. Das lässt sich in der Konfigurationsdatei oder beim Start von Snort ändern.

Snort und PCAP-Dateien

Snort kann nicht nur in Echtzeit den Datenverkehr im Netzwerk untersuchen, sondern auch PCAP-Dateien analysieren, die mit anderen Tools erstellt wurden, zum Beispiel mit Wireshark. Dafür wird der dieser Befehl genutzt:

sudo snort -r datei.pcap -c /etc/snort/snort.conf

Dazu wird Snort im Packet-Logger-Modus ausgeführt. In diesem Modus liest Snort die angegebene PCAP-Datei ein und analysiert die darin enthaltenen Netzwerkpakete. Zusätzlich lassen sich spezifische Regeln anwenden, indem eine Konfigurationsdatei über den Parameter -c <snort.conf> hinzugefügt wird. Snort verarbeitet dann die Pakete gemäß den definierten Regeln und protokolliert auffällige Aktivitäten, wie etwa Angriffe oder Anomalien, in den entsprechenden Logdateien. Durch diese Methode lässt sich der Netzwerkverkehr nachträglich überprüfen, um etwaige Sicherheitsvorfälle zu identifizieren und entsprechende Maßnahmen zu ergreifen.

Weitere Einsatzszenarien mit Snort

Ein weiteres Beispiel ist die Nutzung des Inline-Modus für die Intrusion Prevention mit dem Befehl snort -Q --daq nfq --daq-var device=eth0 -c /etc/snort/snort.conf. Hier arbeitet Snort als aktiver Filter und blockiert schädliche Pakete direkt im Datenfluss, indem es die DAQ (Data Acquisition) Library verwendet, die den Verkehr auf dem Interface eth0 kontrolliert.

Für die gezielte Analyse von ICMP-Traffic lässt sich der Befehl snort -v -i eth0 icmp verwenden, wobei Snort lediglich ICMP-Daten (Ping-Anfragen) des Interfaces eth0 in Echtzeit überwacht. Eine weitere komplexe Konfiguration beinhaltet das Erstellen eines Ausdrucksfilters, der nur spezifische IP-Adressen überwacht, etwa durch den Befehl snort -i eth0 -l /var/log/snort/ -F filter.conf, wobei die Datei filter.conf einen benutzerdefinierten BPF-Filter (Berkeley Packet Filter) enthält, der die Überwachung auf bestimmte IP-Bereiche einschränkt.

Erfahren Sie mehr über Netzwerksoftware