Login
Newsletter
Werbung

Fr, 14. Dezember 2001, 00:00

Intrusion Detection am Beispiel von Snort (Teil 3)

6.2.3 Variablen

Snort erlaubt die Benutzung von Variablen zur bequemeren Wartung der rule-Files. var MYVAR myval deklariert die Variable MYVAR und initialisiert sie mit dem Wert myval. Dereferenziert werden Variablen nach alter Shellmanier mit dem $-Operator, zusätzlich steht hier auch noch der !-Negationsoperator zur Verfügung. Die Deklaration von Meta-Variablen ist ebenfalls mäglich zu kontrollieren, so initialisiert $(MYVAR:-defaultval) die Variable MYVAR mit dem Wert defaultval, falls MYVAR bis dahin noch nicht gesetzt ist. $(MYVAR:?message) gibt den Wert von MYVAR zurück oder beendet Snort mit der Fehlermeldung message, je nachdem, ob MYVAR gesetzt ist oder nicht.

6.2.4 Die Kommandozeilenoptionen

Die diversen Kommandozeilenoptionen von Snort erleichtern das »Debugging« der Rules in der Anfangsphase, später kännen die diversen Optionen ein wenig zur Sicherheit des System beitragen, so dass Snort ungestärt seine Arbeit verrichten kann.

Zu Begin empfiehlt es sich, Snort mit -i das Interface mitzuteilen, auf welchem es die Pakete aus dem Netz beziehen soll. -v läßt Snort etwas gesprächiger werden und mit -c wird Snort die Konfigurationsdatei angegeben, in der es die rules vorfindet. Zum Interface sei noch angemerkt, dass Snort auf einem Host laufen sollte, dessen Interfaces keine IP-Adresse zugewiesen wurden, um zwar den Empfang der Pakete zu gewährleisten, aber den Host keinen direkt an ihn adressierten Paketen auszusetzen.

Um immer auf dem neuesten Stand der Dinge zu sein, zumindest was die Signaturen betrifft, ist es ratsam, sich täglich die Datei vision.conf von White Hats 22 zu besorgen. Diese läßt sich mit wenigen Handgriffen an das eigene Netzwerk anpassen. Dazu bedarf es dreier Konfigurationsdateien, der vision.conf, einer Datei für die lokalen Anpassungen local.conf und einer Hauptkonfigurationsdatei snort.conf. In der local.conf werden die Regeln mit einem pass versehen und eingetragen, die nicht im lokalen Netzwerk eingehalten werden sollen. In der snort.conf wird die local.conf vor der vision.conf mittels dem include-Statement geladen, und die Reihenfolge der Regelabarbeitung mit der Kommandozeilenoption -o auf pass, alert, log gesetzt. Das include-Statement funktioniert ähnlich dem aus C bekannten include, es fügt den Inhalt der include-Datei in die aktuelle ein. So lassen sich eigene Bibliotheken von Signaturen erstellen, die dann entsprechend von der Hauptkonfigurationsdatei eingebunden werden.

Um Snort nun im tagtäglichen Betrieb laufen zu lassen, ist es ratsam, sich ein kleines Skript23 zu schreiben, welches Snort mit den entsprechenden Optionen aufruft.

snort -D -o -i eth0 -l /var/log/snort -c /etc/snort/snort.conf

startet Snort als Daemon im Hintergrund, der auf dem Interface eth0 »snifft«, seine Logdateien unter /var/log/snort ablegt und die Konfiguration aus /etc/snort/snort.conf liest. Die Optionen -u 505 -g 505 -t directory lassen den Snort-Prozess mit der Benutzer- und Gruppenkennung 505 in einer change root-Umgebung in directory laufen. Was die Zugriffsrechte des Prozesses angeht, sollte dies eine ausreichende Sicherheit sicherstellen.

Referenzen

[12]
Martin Roesch: Writing Snort Rules, http://www.snort.org/writing_snort_rules.htm
[22]
W. Richard Stevens: TCP/IP Illustrated Vol. 1: The Protocols, Addison Wesley 1994

Fußnoten

18eine passendere Übersetzung des englischen malicious ließ sich nicht finden

19Daher leitet sich auch die Bezeichnung regelbasiertes IDS ab.

20Classless Internet Domain Routing

21Filenameangaben sind hier meist relativ zum Snort-Logverzeichnis angegeben

22 http://www.whitehats.com/

23ähnlich einem rc-script

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