So modifiziert und schreibt man Snort IDS-Regeln

Reguläre Ausdrücke, Thresholds und Suppression sind Methoden, die Sie bei modernen Snort-Versionen in den Regeln einsetzen können.

Snort-Regeln sind leistungsfähig, flexibel und relativ einfach zu schreiben. Ein guter Start sind die VRT (Sourcefire Vulnerability Research Team) Certified Rules, weil diese ziemlich gut geschrieben sind. Es gibt allerdings auch andere Quellen für Regeln. Sobald Sie existierende IDS-Regeln (Intrusion Detection System) heruntergeladen haben, können Sie diese an Ihre Bedürfnisse anpassen.

Sehen Sie sich zu Beginn die FAQ auf Snort.org an. Wenn Sie die Seite sowieso besuchen, laden Sie am besten gleich die neuesten VRT-Regeln herunter. Lesen Sie sich die Regeln durch, modifizieren Sie diese und probieren Sie die angepassten Regeln aus. Dazu setzen Sie natürlich auf eine Testumgebung. Finden Sie Snort-Regeln, die nicht so funktionieren, wie Sie das gerne hätten, können sie diese abändern. Wie dies funktioniert, zeigen wir Ihnen im Folgenden.

Alle Snort-Regeln folgen einem sehr einfachen Format, das einen genaueren Blick wert ist. Zunächst aber ein Hinweis zu SID und Rev (Revision). Die SID ist die Snort Rule ID, auch als Signatur-ID bekannt. Snort.org hat alle Zahlen unter einer Million für die offiziellen Regeln reserviert. 

So genanntes Bleeding Snort verwendet SIDs, die mit zwei Millionen beginnen. Modifizieren Sie eine Regel, addieren Sie einfach eine Million zur entsprechenden SID. Damit behalten Sie den Überblick bezüglich des Originals. Erstellen Sie eine neue Regel, dann verwenden Sie eine SID, die mit neun Millionen beginnt. Erhöhen Sie die Revision immer dann, wenn Sie eine Änderung an der Regel vornehmen und die Regel-Änderungskontrolle komplett ist.

Einige Regeln von Snort.org werden mit einer leeren local.rules-Datei ausgeliefert. Diese sollten Sie allerdings eher nicht verwenden, andernfalls werden Ihre angepassten IDS-Regeln möglicherweise mit der leeren Datei überschrieben, wenn Sie das nächste Mal neue Regeln installieren. Erstellen Sie stattdessen lieber eine oder zwei andere Dateien wie zum Beispiel company_prod.rules und company_test.rules

Danach fügen Sie Ihrer snort.conf eine Include-Anweisung hinzu. Sie können auf einer einzelnen Maschine mit einer Schnittstelle mehrere Snort-Instanzen laufen lassen. Das ist unter Umständen nützlich, wenn Sie Regeln testen wollen. Möglicherweise ist es allerdings einfacher und sicherer, Snort auf einem alten PC oder einer virtuellen Maschine (VM) parallel zum produktiven Rechner zu testen.

Hier ist eine einfache Snort-Regel:

alert icmp $EXTERNAL_NET any -> $HOME_NET any (msg:"ICMP PING NMAP"; dsize:0; itype:8; reference:arachnids,162; classtype:attempted-recon; sid:469; rev:3;)

Dieser Code bedeutet: Schicke einen Alarm, wenn Sie ein ICMP-Paket vom definierten (Standard = any) $EXTERNAL_NET zu einem definierten (Standard = any) $HOME_NET sehen, wenn die Größte der Daten (dsize) Null und der ICMP-Typ (itype) 8 (was echo (request) entspricht) ist. Andere Aktionen neben dem alert beinhalten log und pass, sind darauf aber nicht limitiert. Das Protokoll ist in diesem Fall ICMP. Es werden aber auch IP, TCP und UDP unterstützt. Variablen werden in der Konfigurationsdatei definiert und als Präfix dient ein Dollar-Zeichen.

Das ist keine sehr gute Regel, da sie jede Menge so genannter False Positives (falsche positive Werte) produziert, weil sie sehr weit gefasst ist. Neben NMAP schicken auch andere Anwendungen Echo-Request-Pakete ohne Payload. Es gibt keine weiteren Kriterien, um die Regel enger zu fassen und spezifischer zu gestalten. Eine bessere Regel wäre:

alert udp $EXTERNAL_NET any -> $SQL_SERVERS any (msg:"MS-SQL probe response overflow attempt"; content:"|05|"; depth:1; byte_test:2,>,512,1; content:"|3B|"; distance:0; isdataat:512,relative; content:!"|3B|"; within:512; reference:bugtraq,9407; reference:cve,2003-0903; reference:url,www.microsoft.com/technet/security/bulletin/MS04-003.mspx; classtype:attempted-user; sid:2329; rev:6;)

Jedes Detail dieser Regel zu erklären, würde den Rahmen des Beitrags sprengen. Sie sehen aber auf den ersten Blick, dass sie wesentlich spezifischer ist. Sie haben wahrscheinlich auch bemerkt, dass diese Beispiele Referenzen zu externen Quellen enthalten. Sehen Sie sich die Datei reference.config im Snort-Ordner etc für die URLs an. Alternativ können Sie die SID auf der Snort-Webseite für die Regel-Dokumentation inspizieren, inklusive Links zu diesen Referenzen.

Mit Snort v2.1.0 wurde Perl Compatible Regular Expressions (PCRE), Thresholding und Suppression eingeführt. Diese Komponenten sind wichtig für die Feineinstellung der Software. PCRE erlaubt den Einsatz regulärer Ausdrücke in den Regeln. Somit kann man sehr spezifisch angeben, nach was gesucht werden soll. Die drei Thresholding-Methoden erlauben es Ihnen, die Anzahl der Alarme zu limitieren, die man bei leicht auszulösenden Regeln aussendet. 

Man kann sie auch in maßgeschneiderten Regeln implementieren und in separaten Konfigurationsdateien wie zum Beispiel einer threshold.conf hinterlegen. Sie können so eine externe Datei verwenden, um die offizielle Snort-Regel sehr granular einzustellen und müssen dabei diese Regel selbst nicht modifizieren. Somit ist ein Update wesentlich einfacher. Suppression-Befehle erlauben es Ihnen, sehr genau zu bestimmen, welche Geräte einen Alarm auslösen und welche nicht. Besitzen Sie zum Beispiel eine Netzwerk-Management-Station mit der IP-Adresse 10.1.1.54, die SNMP-Geräte mithilfe der Zeichenkette public aufruft (Sie wissen sicher, dass das nicht gut ist), können Sie das mithilfe einer solchen Regel unterdrücken:

suppress gen_id 1, sig_id 1411, track by_src, ip 10.1.1.54

Wir haben mit diesem Artikel lediglich an der Oberfläche des Themas gekratzt. Umfassendere Informationen bekommen Sie im Anwenderhandbuch von Snort und der FAQ unter Snort.org.

Weitere Informationsquellen sind die aktuellen Regeln von Snort.org und BleedingSnort.com. Auch in den Readme-Dateien, die Sie mit dem Quellcode von Snort herunterladen, finden Sie weitere Informationen. Wollen Sie den Quellcode nicht in Form eines Tarballs herunterladen, können Sie den Quellcode, die Dokumentation und die Regeln über das Web und Snorts CVS Repository beziehen. 

Zum Zeitpunkt April 2005 werden die Rules im öffentlichen CVS-Repository nicht gewartet. Es gibt allerdings eine Diskussion, ob sich das ändern soll. Sie können bei Snort.org ebenfalls im Archiv stöbern oder sich der Mailing-Liste Snort Sigs anschließen.

Folgen Sie SearchSecurity.de auch auf Twitter, Google+ und Facebook!

Erfahren Sie mehr über Netzwerksicherheit

- GOOGLE-ANZEIGEN

ComputerWeekly.de

Close