Login
Newsletter
Werbung

Fr, 14. Dezember 2001, 00:00

Intrusion Detection am Beispiel von Snort (Teil 3)

6.1.2 Die Rule Options

Die rule options lassen feinere Abstufungen bei der Überwachung des Netzwerks und bei der Angriffserkennung zu. Mit ihnen wird definiert, was genau in einem Paket als verdächtig gilt, abgesehen von seinem Ursprungs- und Zielort. Die rule options schließen sich dem rule header an und werden durch (() und ()) zusammengefasst. Die einzelnen Optionen bestehen immer aus Schlüsselwort und Wertepaaren, die voneinander mit (;) getrennt sind. Die verschiedenen Optionen hängen stark von dem zuvor im rule header spezifizierten Protokoll ab, hier ein Beispiel:

(

msg

keyword


:

separator


Log Message

value


;

separator
...

flags: SA+;

optionn
)

keyword Das Schlüsselwort beschreibt, nach welchem Kriterium gesucht werden soll.

(:) Trennt Schlüsselwort und Wert.

value definiert den Wert, den ein mit keyword angegebenes Kriterium aufweisen muss.

(;) Trennt die einzelnen Schlüsselwort-Wertepaare voneinander.

Die rule options funktionieren alle nach demselben oben gezeigten Prinzip. Alle Optionen detailliert zu erklären würde den Rahmen diese Dokuments sprengen, deshalb soll hier lediglich eine kurze Übersicht die grundlegende Bedeutung jeder einzelnen erklären. Für eine ausführliche Beschreibung sei auf [12] und [22] verwiesen.

Keyword Value Beschreibung
msg "Log Message" schreibt den in Anführungszeichen angegebenen String in die Logs
logto FileName definiert eine Datei, in die Pakete, die diese rule matchen, geloggt werden sollen.
ttl 0 - 255 testet den Wert des Time To Live Fields im IP-Header
tos Number testet den Wert des Type Of Service Fields
id Number überprüft das ID field eines IP-Pakets
ipopts es ist nur eine der Optionen pro Regel erlaubt!
rr Record Route
eol End Of List
nop No Operation
ts Time Stamp
sec IP Security Option
lsrr Loose Source Code Routing
ssrr Strict Source Code Routing
satid Stream Identifier
eol End Of List
fragbits RB Reserved Bit
DF Don't Fragment
MF More Fragments
flags FB FIN
S SYN
R RST
P PSH
A ACK
1 Reserved Bit 1
2 Reserved Bit 2

Um fragbits & flags besser matchen zu können, stehen folgende Operatoren bereit:

  • + matched alle angegebenen Flags plus beliebige andere.
  • * matched mindestens eines der definierten Flags.
  • ! ist der schon bekannte Negationsoperator und matched, wenn die spezifizierten Flags nicht gesetzt sind.
dsize Number Testet die Größe des Datensegments in einem Paket, damit lassen sich Buffer Overflows leichter identifizieren. Bereiche werden mit < und > definiert.
content "|0f430a|" Mit dieser Option wird ein Pattern Matching nach dem Boyer-Moore-Algorithmus im Datensegment durchgeführt. Der Match-String muß in " stehen. Es ist neben normalen Strings auch möglich, Bytecode anzugeben, dieser muß durch ein | am Anfang und Ende gekennzeichnet werden.
nocase - schaltet die Unterscheidung zwischen Groß- und Kleinschreibung beim Pattern Matching ab.
depth Number Gibt die Tiefe an, mit der die einzelnen Pakete beim Pattern Matching durchsucht werden sollen.
offset Number Definiert den Startpunkt des Pattern Matching.
seq Number Testet die Sequenznummer des Pakets.
ack Number Testet die Acknowledge-Nummer.
itype Type Testet das ICMP Type Field, wobei Type ein String ist.
icode Number Testet den numerischen Wert des ICMP Type Fields.
icmp_id Number Testet das ID Field in ICMP ECHO-Paketen. Diese Option wurde speziell für Stacheldraht-DDoS Attacken entwickelt.
icmp_seq Number Testet die Sequenznummer in ICMP ECHO-Paketen.
session Extrahiert USER Data aus TCP-Sessions.
all Schreibt alle Zeichen
printable Schreibt nur druckbare Zeichen
rcp Number Dekodiert Applikation, Prozedur und Version von Remote Procedure Calls.
resp Flexible Responses erlauben Snort, die Verbindung zwischen den jeweiligen Systemen auf unterschiedliche Art zu beenden.
rst_snd Sendet TCP_RST zum sendenden Host.
rst_rcv Sendet TCP_RST zum empfangenden Host.
rst_all Sendet TCP_RST zu allen involvierten Hosts.
icmp_net Sendet ICMP_NET_UNREACH zum sendenden Host.
icmp_host Sendet ICMP_HOST_UNREACH zum sendenden Host.
icmp_port Sendet ICMP_PORT_UNREACH zum sendenden Host.
icmp_all Sendet alle der obigen ICMP_*_UNREACH zum sendenden Host.

Es ist einleuchtend, dass die Reihenfolge, in der die Regeln abgearbeitet werden, die Effizienz des IDS ungemein beeinflussen, sowohl positiv als auch negativ. Die Regeln werden nicht in der Reihenfolge verarbeitet, in der sie in der Wissensbasis aufgeführt sind, stattdessen werden generell Content Matching-Regeln zuletzt ausgeführt, da sie am rechenintensivsten sind. Durch geschicktes Schreiben der Regeln, in etwa das Überprüfen der Flags oder Paketgröße, lassen sich die Regeln, mit denen für ein Paket wirklich ein Content Matching durchgeführt wird, minimieren. Alle Regeln in einer Wissensbasis werden disjunktiv und die einzelnen Elemente einer Rule konjunktiv verknüpft und müssen sich als wahr erweisen, so dass diese Regel greift bzw. die angegebene Action ausgeführt wird.

Kommentare (Insgesamt: 0 )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung