123908

Sicherheits-Check mit Snort

Snort ist ein sehr populäres Intrusion-Detection-System für Windows- und Linux-Systeme. Das Tool ist vielfältig und bietet nahezu alle Funktionen, die der Nutzer zum Aufspüren von Einbrechern benötigt.

Von Johannes Plötner und Steffen Wendzel

Der in Snort integrierte Sniffer-Code ermöglicht Fehlerdiagnose und Überwachung des Netzwerkes bei der Netzwerkprogrammierung und Netzwerkadministration. Der Netzwerk-Traffic lässt sich auf der Basis von Regelwerken überwachen. Die integrierte Logging-Funktion sorgt dafür, dass keine Informationen verlorengehen. Da das Snort-Paket Bestandteil fast aller gängigen Distributionen und Derivate ist, gehen wir an dieser Stelle nicht näher auf manuelle Installation ein.

Wie bereits erwähnt, ist ein wesentliches Feature von Snort der integrierte Sniffer. Diese Komponente ist ausgezeichnet zur Analyse des Traffics geeignet und stellt auch eine große Hilfe bei der Netzwerkprogrammierung dar. Unter Linux- und BSD-Systemen ebenfalls sehr gut geeignet sind TCPDump und Wireshark (ehemals Ethereal).

Interessant am Snort-Sniffer ist, dass das Tool mittels des Parameters "-v" dazu gebracht werden kann, die im Linklayer empfangenen Pakete auszugeben. Mit dem Parameter "–i" geben Sie die Schnittstelle an, auf der gesnifft werden soll. Zum Beispiel

linux# snort -v -i lo

Die Snort-Variablen

Die Hauptaufgabe von Snort ist aber die Intrusion Detection. Legen Sie zunächst das Logverzeichnis "/var/log/snort" an, und verschieben Sie dann die im Unterverzeichnis "etc/" mitgelieferte Konfigurationsdatei nach "/etc/snort.conf".

# mkdir /var/log/snort
# cp etc/snort.conf /etc/

Ratsam ist es, zunächst einmal einen Blick auf den Aufbau der Konfigurationsdatei zu werfen, um sich mit der grundlegenden Syntax vertraut zu machen. Kommentare werden – wie auch in Shell-Scripts – mit einer Raute eingeleitet.

Zudem können, ähnlich wie in C, C++ oder Makefiles, weitere Dateien eingebunden, also »inkludiert« werden. Bei Snort wird das Schlüsselwort "include:" plus der entsprechenden Pfadangabe verwendet. Auch das Erstellen von Variablen ist möglich. Dazu verwenden Sie das var, etwa

var ROUTER 192.168.0.2

In den Regeldateien sprechen Sie Variablen mittels "$<Variable>", also etwa mit "$ROUTER", an. Die Variable "HOME_NET" wird zur Angabe des Inhouse-Netzes verwendet, wogegen "EXTERNAL_NET" für die Gegenseite steht. Dies stellt sicher, dass sich die Konfiguration problemlos auf einem Gateway nutzen lässt.

Es folgen die Variablen zur Angabe der Dienste des Netzwerkes, also beispielsweise die Variable "SMTP_SERVERS" für die Liste der Mailserver im Netz oder "TELNET_SERVERS" für die Telnet-Server. Darauf folgen Portangaben und spezielle Variablen, etwa "AIM_SERVERS" zur Angabe der Server für den Instant-Messenger.

An diesem Beispiel ist sehr gut zu erkennen, dass die Separierung von Werten mittels Kommata erfolgt und die Verwendung von Netzklassen durch Angabe der Net-ID-Bits hinter einem Slash festgelegt wird:

var AIM_SERVERS [64.12.24.0/24,
64.12.25.0/24,64.12.26.14/24,
64.12.28.0/24,64.12.29.0/24,
64.12.161.0/24,64.12.163.0/24,
205.188.5.0/24,205.188.9.0/24]

Wie der Kommentar zur Angabe des Pfades der Regeldateien verrät, ist es möglich, diesen als relativen Pfad anzugeben. Doch auch eine absolute Pfadangabe ist hierbei problemlos möglich:

var RULE_PATH /etc/snort/rules

Hinweis: Dieser Artikel bezieht sich auf eine etwas ältere Version von Snort.

0 Kommentare zu diesem Artikel
123908