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.
6.2.4Die 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
23ähnlich einem rc-script

