Tool-Tipp 32 Snort Open Source IDS Snort installieren und einrichten

Von Thomas Joos 7 min Lesedauer

Snort ist ein IDS-System auf Basis von Open Source, das sich zum Beispiel auf Ubuntu oder Kali installieren lässt. Dadurch können Unternehmen ein eigenes IDS-System aufbauen und den Netzwerkverkehr in Echtzeit analysieren. Wir zeigen in diesem Tool-Tipp die Installation, Einrichtung und ersten Schritte mit Snort unter Kali.

In diesem Tool-Tipp zeigen wir die Installation, Einrichtung und ersten Schritte mit dem Open-Source-IDS Snort unter Kali.(Bild:  AIPERA - stock.adobe.com)
In diesem Tool-Tipp zeigen wir die Installation, Einrichtung und ersten Schritte mit dem Open-Source-IDS Snort unter Kali.
(Bild: AIPERA - stock.adobe.com)

Snort gehört zu den bekanntesten IDS-Systemen aus dem Open Source Bereich und lässt sich zum Beispiel schnell und unproblematisch in Kali oder Ubuntu betreiben. Die Installation auf RHEL und CentOS oder anderen Distributionen ist natürlich ebenso möglich. In diesem Beitrag konzentrieren wir uns auf die Installation der neuen Version Snort 3, die dem Vorgänger in einigen Punkten überlegen ist.

In diesem Tool-Tipp-Video und der Bildergalerie zeigen wir die Installation, Einrichtung und ersten Schritte mit Snort unter Kali.

Bildergalerie

Snort setzt sich aus mehreren Schlüsselkomponenten zusammen. Die Herzstücke von Snort sind die Regeln (Rules), die als spezifische Kriterien für die Erkennung von verdächtigem oder schädlichem Datenverkehr dienen. Diese Regeln, die in einer leicht verständlichen Syntax geschrieben sind, ermöglichen es Snort, Muster im Netzwerkverkehr zu identifizieren, die auf Angriffe oder Sicherheitsverletzungen hinweisen könnten.

Darüber hinaus spielen Preprozessoren eine wichtige Rolle, indem sie den Netzwerkverkehr vor der Analyse durch die Regeln vorverarbeiten, um Verschleierungen zu entfernen, Anomalien zu erkennen oder bestimmte Protokolle effizienter zu analysieren. Snort verfügt auch über Output-Plugins, die definieren, wie Alarme und Logs gehandhabt werden, sei es durch Ausgabe auf der Konsole, Speicherung in Dateien oder Weiterleitung an eine Management-Plattform. Diese modulare Architektur erlaubt es Administratoren, Snort flexibel zu konfigurieren und an die spezifischen Anforderungen ihres Netzwerks anzupassen.

Vorbereitungen für die Installation von Snort auf Kali-Linux

Die Installation von Snort auf Kali oder einem anderen System sollte möglichst mit einer Aktualisierung des Systems beginnen. Das geht mit:

sudo apt update && sudo apt upgrade -y

Bei einer großen Anzahl an Aktualisierungen schaden es nicht, das System neu zu starten. Generell ist es sinnvoll danach die Sources-List von Kali zu sichern, und Packetinformationen auf dem System zu bereinigen:

sudo mv /etc/apt/sources.list /etc/apt/sources.list.baksudo find /var/lib/apt/lists -type f -exec rm {} \;

Das stellt sicher, dass später die Installation wegen Daten aus dem Cache blockiert wird oder nicht sauber durchläuft. Im Anschluss wird die Datei „sources.list“ bearbeitet, um die notwendigen Repositories für Snort hinzuzufügen. In diesem Beispiel verwenden wir den Editor Nano, die Aktionen lassen sich aber auch mit anderen Editoren durchführen, zum Beispiel mit vi oder leafpad:

sudo nano /etc/apt/sources.list

Der Inhalt der Datei wird mit dem folgenden Inhalt ersetzt

deb http://archive.ubuntu.com/ubuntu/ focal main restricted universe multiversedeb-src http://archive.ubuntu.com/ubuntu/ focal main restricted universe multiversedeb http://archive.ubuntu.com/ubuntu/ focal-updates main restricted universe multiversedeb-src http://archive.ubuntu.com/ubuntu/ focal-updates main restricted universe multiversedeb http://archive.ubuntu.com/ubuntu/ focal-security main restricted universe multiversedeb-src http://archive.ubuntu.com/ubuntu/ focal-security main restricted universe multiversedeb http://archive.ubuntu.com/ubuntu/ focal-backports main restricted universe multiversedeb-src http://archive.ubuntu.com/ubuntu/ focal-backports main restricted universe multiversedeb http://archive.canonical.com/ubuntu focal partnerdeb-src http://archive.canonical.com/ubuntu focal partner

Nach der Anpassung werden die öffentlichen Schlüssel für die neu eingetragenen Repositories hinzugefügt:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 871920D1991BC93C

In diesem Tool-Tipp-Video und der Bildergalerie zeigen wir die Installation, Einrichtung und ersten Schritte mit Snort unter Kali.

Bildergalerie

Snort installieren und einrichten

Wenn die Repositories auf dem System eingerichtet sind, erfolgt die Installation mit:

sudo apt install snort

Danach ist Snort auf dem System verfügbar. Die installierte Version lässt sich mit dem folgenden Befehl anzeigen:

snort --version

Eine Hilfe zur Verwendung von Snort lässt sich mit dem Befehl „snort --help“ anzeigen. Um den Quellcode der aktuellsten Version herunterzuladen und zu kompilieren, kann zum Beispiel das Repository geklont werden. Das geht über die Github-Seite des Projekts.

Die Platzierung der Systemdateien von Snort kann je nach Betriebssystem und Installationsmethode variieren. Typischerweise finden sich die wichtigsten Dateien und Verzeichnisse von Snort jedoch in den folgenden Pfaden:

  • Konfigurationsdateien: Diese befinden sich in der Regel im Verzeichnis /etc/snort/ oder /usr/local/etc/snort/. Hier liegt die Hauptkonfigurationsdatei snort.conf sowie weitere Konfigurationsdateien wie classification.config, reference.config und die Regeldateien.
  • Regeldateien: Standardmäßig sind die Snort-Regeldateien im Unterverzeichnis rules/ innerhalb des Konfigurationsverzeichnisses zu finden, also /etc/snort/rules/ oder /usr/local/etc/snort/rules/. Hier werden benutzerdefinierte Regeln sowie von der Snort-Community bereitgestellte Regeln abgelegt.
  • Logdateien: Die Logdateien von Snort werden üblicherweise in einem separaten Verzeichnis abgelegt, oft unter /var/log/snort/ oder einem benutzerdefinierten Pfad, der in der snort.conf Datei spezifiziert wurde. Hier werden Alarme, Paketdumps und andere Protokollierungsdaten gespeichert.
  • Binärdateien: Die ausführbaren Dateien von Snort sind meistens unter /usr/bin/, /usr/local/bin/, oder einem ähnlichen Verzeichnis für ausführbare Programme zu finden, abhängig davon, wie Snort installiert wurde.
  • Dynamische Regeln und Preprozessoren: Falls verwendet, können dynamische Regeln und Preprozessoren in einem spezifischen Verzeichnis, wie /usr/local/lib/snort_dynamicrules/ oder einem ähnlichen Pfad, basierend auf der Installationskonfiguration, abgelegt werden.

Um die exakte Platzierung der Dateien in einer spezifischen Installation zu bestimmen, kann die Dokumentation der verwendeten Snort-Version oder die Snort-Konfigurationsdatei (snort.conf) konsultiert werden. Diese enthält Pfade und Einstellungen, die für die Installation spezifisch sind.

Einrichtung und Verwendung von Snort nach der Installation

Um Snort im einfachsten Modus zu starten, dem Sniffer-Modus, der den Netzwerkverkehr einfach nur mitliest und auf der Konsole ausgibt, kann der folgende Befehl verwendet werden:

snort -v -i eth0

Hierbei bedeutet -v (verbose), dass die Paketheader angezeigt werden, und -i eth0 gibt die Netzwerkschnittstelle an, auf der Snort lauschen soll.

Um den Netzwerkverkehr in Dateien zu protokollieren, anstatt ihn nur auf der Konsole auszugeben, kann Snort im Paket-Log-Modus verwendet werden:

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zur IT-Sicherheit

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung. Die Einwilligungserklärung bezieht sich u. a. auf die Zusendung von redaktionellen Newslettern per E-Mail und auf den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern (z. B. LinkedIn, Google, Meta).

Aufklappen für Details zu Ihrer Einwilligung
snort -dev -l ./log -i eth0

In diesem Befehl bedeutet -dev eine detailliertere Ausgabe (inklusive Daten-Link- und Netzwerkschicht), -l ./log spezifiziert das Verzeichnis, in dem die Protokolle abgelegt werden sollen (hier ein lokales Verzeichnis log), und -i eth0 gibt wieder die zu überwachende Schnittstelle an.

Snort im Netzwerk-Intrusion-Detection-Modus

Um Snort mit einer Basiskonfiguration im Netzwerk-Intrusion-Detection-Modus zu starten, der den Netzwerkverkehr basierend auf vordefinierten Regeln analysiert und Alarme auslöst, kann der folgende Befehl genutzt werden:

snort -q -A console -c /etc/snort/snort.conf -i eth0

Hierbei schaltet -q den stillen Modus ein (keine Paketausgabe auf der Konsole), -A console bestimmt, dass Alarme auf der Konsole ausgegeben werden, -c /etc/snort/snort.conf spezifiziert den Pfad zur Konfigurationsdatei, und -i eth0 legt die Netzwerkschnittstelle fest.

Um zu testen, ob die Snort-Konfiguration funktioniert, ohne den Netzwerkverkehr zu überwachen oder zu analysieren, kann folgender Befehl verwendet werden:

snort -T -c /etc/snort/snort.conf

Der Schalter -T bewirkt, dass Snort die Konfiguration testet, und -c /etc/snort/snort.conf verweist auf die Konfigurationsdatei, deren Gültigkeit geprüft werden soll.

Nach der Installation von Snort erfolgt die Einrichtung zunächst über die Anpassung der Konfigurationsdatei „snort.conf“, wobei spezifische Netzwerkparameter wie das zu überwachende Subnetz eingestellt werden. Im Falle eines Subnetzes 10.0.0.0/16 würde die entsprechende Zeile in der „snort.conf“ so angepasst, dass Snort dieses Netzwerksegment als internes Netzwerk erkennt:

var HOME_NET 10.0.0.0/16

Anschließend ist die Definition von Regeln entscheidend, um spezifische Bedrohungen zu identifizieren. Regeln werden in der Datei „local.rules“ hinzugefügt. Zum Beispiel, um Zugriffe auf einen nicht autorisierten Port zu detektieren, könnte folgende Regel implementiert werden:

alert tcp $HOME_NET any -> $EXTERNAL_NET 12345 (msg:"Zugriff auf unautorisierten Port"; sid:1000002;)

Nach der Konfiguration und Definition der Regeln wird Snort in der Regel über die Kommandozeile mit spezifischen Parametern gestartet, um den Netzwerkverkehr zu überwachen. Ein einfacher Befehl zum Starten von Snort im Überwachungsmodus könnte so aussehen:

snort -q -A console -i eth0 -c /etc/snort/snort.conf -l /var/log/snort

Hier startet Snort im stillen Modus (-q), gibt Alarme in der Konsole aus (-A console), überwacht die Schnittstelle eth0 (-i eth0), verwendet die Konfigurationsdatei unter /etc/snort/snort.conf und speichert Protokolle in /var/log/snort. Nach dem Start analysiert Snort den Netzwerkverkehr gemäß den definierten Regeln und protokolliert bzw. alarmiert bei Erkennung von Anomalien oder Bedrohungen, wodurch Administratoren handeln können, um die Sicherheit des Netzwerks zu gewährleisten.

Beispiel für die Erkennung von SQL-Injection-Angriffen

Für die Erkennung von SQL-Injection-Angriffen, die speziell auf Webanwendungen innerhalb des 10.0.0.0/16 Netzwerks abzielen, kann folgende Snort-Regel eingesetzt werden:

alert tcp $HOME_NET any -> $EXTERNAL_NET $HTTP_PORTS (msg:"SQL Injection Versuch erkannt"; flow:to_server,established; content:"select"; nocase; content:"from"; distance:0; nocase; content:"where"; distance:0; nocase; sid:1000003;)

Diese Regel prüft den HTTP-Datenverkehr auf das Vorhandensein von typischen SQL-Befehlsteilen wie "select", "from" und "where" in einer einzigen Anfrage, was auf einen SQL-Injection-Versuch hindeuten könnte.

Anpassung von Snort für den Einsatz als Intrusion Prevention System (IPS)

Um Snort nicht nur als IDS, sondern auch als IPS zu konfigurieren, also um potenziell schädlichen Datenverkehr aktiv zu blockieren, wird der Inline-Modus verwendet. Der Startbefehl könnte dann folgendermaßen erweitert werden:

snort -q -A console -c /etc/snort/snort.conf -Q --daq afpacket -i eth0:eth1 -l /var/log/snort

Hierbei ermöglicht -Q den Inline-Modus, --daq afpacket legt das Data Acquisition Plugin fest, und -i eth0:eth1 definiert das Paar von Netzwerkschnittstellen für den eingehenden und ausgehenden Datenverkehr. Diese Konfiguration erlaubt es Snort, erkannten schädlichen Datenverkehr direkt zu blockieren, bevor er das Ziel im Netzwerk erreicht.

Überwachung spezifischer Protokolle

Snort kann auch so konfiguriert werden, dass es ausschließlich Verkehr von spezifischen Protokollen überwacht. Zum Beispiel könnte die Überwachung auf DNS-Verkehr beschränkt werden, um DNS-basierte Angriffe wie DNS Tunneling zu erkennen:

alert udp $HOME_NET any -> $EXTERNAL_NET 53 (msg:"Ungewöhnlicher DNS Verkehr"; sid:1000004;)

Durch die Fokussierung auf Port 53, den Standardport für DNS-Anfragen, kann Snort speziell den DNS-Verkehr analysieren und ungewöhnliche Muster identifizieren, die auf kompromittierte Systeme oder Exfiltrationsversuche hinweisen könnten.

In diesem Tool-Tipp-Video und der Bildergalerie zeigen wir die Installation, Einrichtung und ersten Schritte mit Snort unter Kali.

Bildergalerie

(ID:50034873)