Intrusion-Detection und -Prevention mit Snort

Workshop: Snort konfigurieren und IDS-Regeln erstellen

Rule Header und Rule Options

Snort ist ein IDS, das fast ausschließlich auf Regeln basierend arbeitet. Bereits mit der ersten Installation werden zahlreiche Regeln mitgeliefert. Was aber besagen diese und wie passt man sie an?

Zunächst einmal ist es wichtig, dass die Rules in einer Zeile geschrieben stehen müssen, um von Snort als Rules erkannt zu werden. Man unterscheidet bei den Regeln zwischen zwei Teilen, einem allgemein gehaltenen „Rule Header“ und einer genaueren Spezifikation durch „Rule Options“. Im Header findet Snort die IP- und Port-Angaben von Netzwerkpaketen, die das IDS näher untersuchen soll. Zudem definiert man hier, was Snort als erste Reaktion durchführen soll, sofern eine Signatur erkannt wurde. Allgemein sieht der Header folgendermaßen aus:

action protocol source_ip_address port direction destination_ip_address port

Für action bieten sich folgende Reaktionen an: alert (alarmieren), pass (ignorieren) oder log (protokollieren). Anschließend ist definiert, welches Protokoll das zu untersuchende Paket verwendet. Normalerweise handelt es sich hierbei um TCP, UDP oder ICMP Traffic. Danach werden die IP Adressen, die Ports und die Richtung des Pakets angegeben, auf das Snort reagieren soll.

Konkret bedeutet dies etwa für eine Alarmmeldung bei Angriffen der Backdoor Trinity, die ihre Daten auf Port 33270 sendet:

alert tcp $EXTERNAL_NET any -> $HOME_NET 33270

Trifft die Grobklassifikation über den Rule Header zu, definieren die Rule Options weitere Details der Signatur und der eventuell auszulösenden Aktion. Die Rule Options werden durch einfache Klammern vom Rule Header getrennt. Schlüsselwort und die durch einen Doppelpunkt getrennten Werte bilden die einzelne Option, mehrere Options werden durch einen Strichpunkt voneinander getrennt:

(Keyword1 : value1 ; Keyword2 : value 2; …)

Im Detail sieht das dann etwa so aus:

(msg:"BACKDOOR trinity connection attempt"; flow:to_server,established; content:"!@|23|"; depth:3; reference:cve,2000-0138; reference:nessus,10501; classtype:attempted-admin; sid:1843; rev:6;)

Die Options sind sehr vielfältig und in der Dokumentation von Snort eingehend erklärt. Im Beispiel ist als Erstes die Option msg zu sehen. Sie definiert in ihrem Value-Teil die Meldung, die in das Logfile geschrieben wird. Das Keyword flow definiert im Beispiel, dass das Paket über eine bereits aufgebaute Verbindung zu einem Server unterwegs ist. Die Option depth stellt eine Besonderheit dar: Sie ist ein Modifier für das vorangegangene content-Keyword. depth weist hier Snort an, nur die ersten drei Bytes des Pakets zu inspizieren. Über reference können weitere Informationen externer Quellen in das Logfile eingebunden werden. So wird im Beispiel oben ein Link zu nessus.org in das Log eingebunden, der auf ein Dokument mit der ID 10501 verweist.

Rules: Einblick in die Snort Rules DoS von der Community.
Rules: Einblick in die Snort Rules DoS von der Community.