Login
Immer anmelden
SSL Login

 
Newsletter
Werbung
Shopping
International Shopping
 
 


Yatego Shopping bei über 10000 Händlern und über
3 Mio. Artikel.


Linux

:

Linux-Bücher

Handy
Shop

  und Computer.

Viele Services

:

Apple iPad Reader,


Ratgeber,

 

Techniktops,

 

Yatego Clicks

  & über 3000

Gutscheine.

 
Fr, 14. Dezember 2001, 00:00

Intrusion Detection am Beispiel von Snort (Teil 3)

Da Snort in erster Linie ein regelbasiertes IDS ist, benötigt es eine Art Wissensbasis, eine »Datenbank«, in der die sogenannten Signaturen definiert sind. Als Signaturen werden in diesem Kontext die Charakteristika eines Pakets bezeichnet, die dieses Paket und seine Eigenschaften (z.B. Flags, Source- und Destination-Port und/oder -IP-Adresse) oder 'bösartig' definieren. Ohne eine solche Wissensbasis ist Snort quasi blind, es kann zwar die Pakete von der Netzwerkkarte dekodieren, weiß aber nicht, welche dieser Pakete erwünscht sind und welche nicht.

<strong>+</strong> matched alle angegebenen Flags plus beliebige andere.
<strong>*</strong> matched mindestens eines der definierten Flags.
<strong>!</strong> ist der schon bekannte Negationsoperator und matched,
wenn die spezifizierten Flags <em>nicht</em> 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.

6.2Weiterführende Konfiguration

Regeln sind allerdings nicht die einzigen Hilfsmittel, auf die Snort und der Netzwerkadministrator zurückgreifen können, um einem Eindringling auf die Spur zu kommen.

6.2.1Preprocessors

Neben diesen umfangreichen Möglichkeiten zur Angriffserkennung stehen Snort noch weitere Konfigurationsoptionen zur Verfügung, die eine Anpassung an die eigenen Bedürfnisse erleichtern. Eines der wohl besten Features ist die Plugin-Schnittstelle (siehe Abschnitt 3.1), die Snort bietet. Dies ist User-Code, der von Snort zwar nach der Paketdekodierung, jedoch vor dem rule matching ausgeführt wird. Es sind schon einige sogenannte Präprozessoren geschrieben worden, unter anderem Spade, welches in Abschnitt ?? etwas näher beschrieben wurde, und die Liste der erhältlichen Plugins verlängert sich ständig. Einige der im Moment zur Verfügung stehenden preprocessors sollen im folgenden erläutert werden:

minfrag &lt;Threshold&gt;
untersucht fragmentierte Pakete auf einen Schwellwert; kein Rechner sollte Pakete kleiner als 512 Bytes erzeugen, das heißt, wenn wir kleinere Pakete in unserem Netz vorfinden, könnte dies ein Indiz für einen Angriffsversuch sein, der mittels Miniaturpaketen versteckt werden soll.
defrag
ist eine Weiterentwicklung von minfrag und erlaubt Snort eine vollständige Defragmentierung von IP.
stream: timeout &lt;Timeout&gt;, ports &lt;Ports&gt;, maxbytes &lt;Number&gt;
erlaubt Snort die Reassemblierung von TCP-Streams, die jeweiligen Parameter legen den Timeout in Sekunden, die Ports, auf denen die Stream-Reassembly vorgenommen werden soll, und die maximale Größe der von Snort rekonstruierten Pakete fest.
http_decode &lt;Port_numbers&gt;
dekodiert den URL-encodierten Datenstrom in einen reinen ASCII-Datenstrom auf den angegebenen Ports. Dies ist für die Erkennung von CGI-Attacken sehr hilfreich.
portscan: &lt;Network&gt; &lt;Number_of_Ports&gt; &lt;Detection_Period&gt; &lt;Logdir/Filename&gt;
überwacht das definierte Netzwerk auf Portscans, wobei mit <Number_of_Ports> angegeben wird, wieviele Ports in welcher Zeit 'gescannt' werden müssen, bevor dieses Plugin seine Daten in das angegebene Logfile schreibt.
portscan-ignorehosts: &lt;Host_List&gt;
Die Liste der hier angegebenen Host-IP-Adressen läßt Portscans von diesen Hosts zu, es ist eventuell erwünscht, die Rechner im eigenen Netz von Zeit zu Zeit einem Portscan zu unterziehen, da sich so eventuell ein Port entdecken läßt, der von einem bisher unbemerkten Angreifer für seine Zwecke geöffnet wurde. Ursprünglich wurde dieser Präprozessor geschrieben, weil Snort den DNS-Traffic von BIND 8 als Portscan interpretierte.
spade
erweitert die Fähigkeiten von Snort um eine statistische Analyse, mit der Snort nicht mehr allein von den Signaturen abhängig ist. Da sich der Code noch im Betastadium befindet, ist von einer Benutzung in sicherheitskritischen Netzwerken abzuraten. Eine ausführliche Dokumentation ist in der Sourcecode-Distribution von Snort enthalten.
Kommentare (Insgesamt: 0 || Kommentieren )
Pro-Linux
Forum
Neue Nachrichten