Netzwerk-Überwachung mit Snort

17.01.2006 von Mike Hartmann
Ein Administrator kann nicht immer einen Sniffer laufen lassen, um zu wissen, was in seinem LAN vor sich geht. Zum Glück helfen automatisierte Tools wie snort bei der Überwachung des Traffics und der Kategorisierung der Pakete.

In vielen Linux-Distributionen finden sich bereits der prominenteste Vertreter der Intrusion Detection Systeme wieder: Snort ist ein umfangreiches Tool, mit dem Sie Angriffe auf Ihre Systeme aufdecken und danach entsprechend reagieren können. Falls Sie das Tool in Ihrer Distribution nicht finden oder nicht auf Ihrem Produktivsystem nachinstallieren wollen, empfehlen wir Ihnen die WHAX Live-CD.

Mit Snort finden Sie auf der Whax-CD bereits eines der am häufigsten eingesetzten Tools zur Netzwerk-Überwachung. Snort ist ein netzwerkbasiertes Intrusion Detection System, das auch Meldungen von mehreren, verteilten Sensoren aufnehmen kann. Es umfasst fast alle wesentlichen Funktionen, die auch ein kommerzielles IDS bietet, und ist für eine von Plattformen verfügbar.

Grundlage von Snort ist der Paketfilter libpcap, über die sich Snort in den Datenstrom einklinkt. Mittels ausgefeilter Regelsätze, die regelmäßig aktualisiert werden, um neuen Angriffsszenarien gerecht zu werden, analysiert Snort die Daten. Im Falle eines Alarms kann Snort auf verschiedene Weisen reagieren. Das reicht von der Protokollierung in Datei oder Datenbank, der Alarmierung über SNMP-Traps oder Windows-Nachrichten bis hin zum Terminieren der Verbindung.

Snort selber parst die eingegangenen Pakete lediglich, über Plug-ins werden diese Pakete dann weiterverarbeitet. So genannte Präprozessoren bearbeiten zunächst die Pakete, etwa um TCP-Ströme oder fragmentierte Pakete wieder zusammenzusetzen. Danach kommen die Plug-ins zur Entdeckung von Angriffen zum Tragen und schließlich die Module zur Ausgabe der Ergebnisse.

Bitte Beachten Sie: Aufgrund der Rechtsunsicherheit des Paragrafen 202c StGB haben wir aus diesem Artikel die genauen Startparameter und Links zu Programmen entfernt. Wir bitten Sie um Verständnis. Die TecChannel-Redaktion.

Einrichtung von Snort unter WHAX

Für einen ersten Start von Snort reicht es, wenn Sie die Live-CD booten und das Menü „Utilities / Snort / Setup and Start Snort“ aufrufen. Dabei ist eine kleine Besonderheit zu beachten: Das Script fragt zwar nach den MySQL-Benutzernamen für snort und root, eigentlich meint es jedoch die Passwörter für die beiden Accounts.

Das stellt solange kein Problem dar, wie Sie Snort nur testweise auf dieser Maschine laufen lassen. Es kann aber schnell zur Fußangel werden, wenn Sie beispielsweise zusätzliche Snort-Sensoren einrichten oder den MySQL-Administrator installieren wollen. Möchten Sie später einen Rechner fix mit Snort laufen lassen, sollten Sie zunächst WHAX von der Live-CD auf der Festplatte installieren.

Im nächsten Schritt editieren Sie die beiden Scripts /usr/bin/initialise-snort.sh und /usr/bin/start-snort.sh. Dort ist in der Zeile, in der MySQL gestartet wird, der Parameter --bind 127.0.0.1 zu entfernen. Ansonsten lässt MySQL nur Verbindungen vom localhost zu, entfernte Sensoren können also ihre Ergebnisse nicht in der Datenbank eintragen.

Snort initialisieren

Nun rufen Sie das Script /usr/bin/initialise-snort.sh auf, damit die grundlegenden Konfigurationsinformationen und Datenbankstrukturen geschrieben werden. Nicht vergessen: Das Script fragt, obwohl es das anders ausgibt, nach den Passwörtern für die beiden MySQL-Accounts.

Jetzt wird automatisch auch Snort gestartet, und der Firefox ruft vom localhost die Seite der Basic Analysis und Security Engine (BASE) auf. Letzteres ist eine Weboberfläche, die die Auswertung der eingegangenen Meldungen erheblich vereinfacht. Starten Sie nun einen einfachen Portscan von einer anderen Maschine, und schon sehen Sie, wie die Meldungen einlaufen.

Windows-Sensor

Vor allem in geswitchten Netzwerken oder in solchen mit mehreren IP-Subnetzen kommt man mit nur einem Sensor nicht aus. Deshalb bietet es sich an, zusätzliche Rechner als Sensoren einzusetzen. Dies ist auch auf Arbeitsrechnern möglich, da snort in einem solchen Fall nicht allzu viel Rechenleistung für sich beansprucht. Immerhin kommen ja nur wenige Pakete bei den Rechnern an einem Switchport an.

Generell gilt, dass ein Sensor dieselbe Snort-Version benutzen sollte wie der primäre Snort-Rechner. Ansonsten kann es Probleme bei den Regeln und der Datenbank geben. Um einen Windows-Rechner als Sensor zu betreiben, laden Sie sich von der Site WinSnort die Windows-Binaries herunter. Damit es zusammen mit der WHAX-Distribution funktioniert, benötigen Sie die Version 2.3.3. Zusätzlich ist eine aktuelle Release-Version von WinPcap erforderlich.

Führen Sie den Installer aus und lassen Sie das Paket im Verzeichnis C:\Snort einrichten. Nun sind noch einige Änderungen an der Datei C:\Snort\etc\snort.conf fällig, damit der Sensor arbeiten kann. Dies betrifft insbesondere sämtliche Pfadangaben. Suchen Sie zunächst nach der Zeile

var RULE_PATH /etc/rules

und ersetzen Sie diese durch

var RULE_PATH C:\Snort\rules

Bei den beiden Zeilen include classification.config und include reference.config fügen Sie zusätzlich den absoluten Pfad an, also

include C:\Snort\etc\classification.config
include C:\Snort\etc\reference.config

Ausgabe der Ergebnisse

Nun müssen Sie Snort noch mitteilen, wie und wohin es seine gesammelten Ergebnisse schreiben soll. Dazu suchen Sie sich die Zeilen mit output database und ergänzen folgende Zeile:

output database: log, mysql, user=snort dbname=snort host=<IP-Adresse des WHAX-Rechners> sensor_name=<Name>

Damit weisen Sie Snort an, die Informationen in die MySQL-Datenbank namens snort auf dem WHAX-Rechner zu schreiben. Über den Parameter sensor_name vergeben Sie einen Namen für den Sensor, damit Sie die Reports später zuordnen können.

Damit sind die grundlegenden Einstellungen gemacht, und wir können den Snort-Sensor testweise starten. Öffnen Sie ein Befehlszeilenfenster und wechseln Sie in das Verzeichnis C:\Snort\bin. Dort geben Sie den Befehl snort -W ein.

Neben der Aussage, dass Snort und WinPcap richtig installiert sind, erhalten Sie eine weitere wichtige Information. Nämlich die Nummer der zu verwendenden Netzwerkschnittstelle. Sind mehrere im System vorhanden, müssen Sie Snort per Kommandozeile mitteilen, welche es verwenden soll. Damit können Sie gleich den nächsten Test starten. Geben Sie Folgendes ein:

snort -v -i<Nummer der Schnittstelle>

Probe-Traffic

Danach rufen Sie beispielsweise eine Webseite auf, um etwas Traffic zu erzeugen. Snort gibt nun die Header aller gesendeten und empfangenen Pakete auf dem Bildschirm aus. Wenn Sie Snort abbrechen wollen, drücken Sie <Strg>-<Untbr>.

Nun können Sie Snort mit der Konfigurationsdatei starten. Snort lässt sich zwar über die Parameter /SERVICE /INSTALL als Windows-Dienst konfigurieren, doch für erste Tests sollten Sie das noch nicht tun. Rufen Sie also folgende Kommandozeile auf:

snort -c c:\snort\etc\snort.conf -l c:\snortog -i<Nummer der Schnittstelle>

Damit weisen Sie Snort an, die Konfigurationsdatei snort.conf aus c:\snort\etc zu lesen und Log-Dateien in das Verzeichnis c:\snortog zu schreiben.

IDS Policy Manager

Zwar haben Textdateien zur Konfiguration von Programmen den nicht zu unterschätzenden Vorteil, dass man per Suchen und Ersetzen komfortabel Änderungen vornehmen kann, aber gerade bei der Funktionsvielfalt von Snort wird das Ganze schnell unübersichtlich.

Aus diesem Grund hat Jeff Dell die Freeware IDS Policy Manager programmiert. Dies ist ein Windows-Tool, mit dem sich alle Aspekte von Snort komfortabel in einer GUI konfigurieren lassen.

Nach der Installation rufen Sie das Programm ISDPolicyMan.exe im Installationsverzeichnis auf. Zunächst sollten Sie sich von snort.org einen so genannten Oinkmaster-Code besorgen. Nur mit einem solchen können Sie automatisiert aktuelle Regelsätze herunterladen. Dazu registrieren Sie sich auf snort.org, und in den User-Preferences erhalten Sie auf Anforderungen kostenlos den Code. Diesen tragen Sie im Dialogfeld von „Options / Settings“ unter Version Info ein, indem Sie das Feld für Snort 2.3.3 editieren und <oinkcode here> durch den Code ersetzen.

Zusätzlich sollten Sie bei „Policy Manager Settings“ den Pfad zur lokalen Snort-Installation (C:\Snort\bin\snort.exe) eintragen und unter „Acid/Base URL“ die URL zur WHAX-Installation konfigurieren: http://<IP des Whax-Rechners>/base/.

Policy erstellen

Schließen Sie nun den Konfigurationsdialog und wechseln auf den Tabulator „Policy Manager“ des Hauptprogramms. Dort gilt es nun, eine neue Policy anzulegen. Dies erledigen Sie über „Policy / Add Policy“. Unter „Policy Location“ tragen Sie den Pfad zur Datei snort.conf ein. Vergeben Sie zusätzlich einen Namen und gegebenenfalls eine Beschreibung. Anhand der eingestellten Version erkennt der Policy Manager, welche Regeldateien er von snort.org herunterladen soll und welche Kommandos verwendet werden dürfen.

Achtung: Aus einem nicht nachvollziehbaren Grund erwartet IDSPolMan die Regeldateien nicht im konfigurierten Verzeichnis C:\Snort\rules, sondern in C:\Snort\etc - unabhängig davon, was in der Variable RULE_PATH in der snort.conf eingestellt ist. Wenn Sie den Policy Manager verwenden wollen, kopieren Sie also alle Dateien von C:\Snort\rules nach C:\Snort\etc und passen die Variable RULE_PATH in der snort.conf entsprechend an, damit Snort die Regeln auch findet.

Regeln bearbeiten

Nun können Sie den „Policy Editor“ öffnen, um die Regeln der Policy zu bearbeiten. Zunächst werden Sie gefragt, ob Sie die neuesten Regeln herunterladen wollen. Dies funktioniert allerdings nur, wenn Sie sich wie zuvor beschrieben einen Oinkmaster-Code geholt und ihn eingetragen haben.

Im nächsten Schritt sollten Sie die für Ihre Umgebung nicht passenden Regeln deaktivieren. So macht es beispielsweise wenig Sinn, Angriffe auf Oracle-Datenbanken zu entdecken, wenn im LAN keine entsprechende Datenbank vorhanden ist.

Wenn die Policy Ihrem Netzwerk entsprechend angepasst ist, muss sie nur noch auf die verschiedenen Sensoren verteilt werden. Dazu dient der Reiter „Sensor Manager“. Hier erstellen Sie einen Sensor und teilen dem Programm mit, wie es die Regeln auf diesen Sensor kopiert.

Dazu stehen die Methoden ftp, scp, vcp und lokales Kopieren der Datei zur Verfügung. Werden die Regeln auf einen entfernten Server kopiert, bietet das Programm zusätzlich die Möglichkeit, auf dem Server ein Script auszuführen, das Snort neu startet. Zudem legen Sie für den Sensor fest, welche Policy für ihn gelten soll.

Einschränkungen

Im Prinzip könnte man den IDS Policy Manager also dazu benutzen, um eine zentrale Policy für alle Sensoren zu erstellen und zu verwalten. In der Praxis scheitert das allerdings daran, dass - wie schon beschrieben - Snort für Windows und Snort für Linux verschiedene Pfadangaben nutzen.

Leider bietet das Programm keine Möglichkeit, diese Tatsache automatisch zu berücksichtigen. Ein weiteres Problem besteht darin, dass bestimmte Einstellungen wie etwa der Parameter sensor_name für die Log-Ausgabe in eine Datenbank je nach Sensor vergeben werden müssten. Diese Möglichkeit bietet IDS Policy Manager jedoch derzeit nicht.

Dementsprechend bleibt in einer gemischten Umgebung nur eine Möglichkeit: Legen Sie im IDSPM zunächst zwei Profile an: eines für Linux und eines für Windows. Dazu wechseln Sie bei Windows können Sie gleich auf die lokale Snort-Installation verweisen.

Ausblick

Snort ist ein extrem mächtiges Werkzeug zur Überwachung des Netzwerks. Es kann allerdings immer nur so gut sein, wie es gepflegt wird. Eine regelmäßige Aktualisierung mit neuesten Regeln, die auch aktuelle Exploits beinhalten, ist ein absolutes Muss. Zudem sollten Sie regelmäßig überprüfen, ob die Verteilung der Sensoren noch den Anforderungen entspricht.

Zusätzliche Hinweise zum Erstellen eigener Regeln oder zur Definition von Aktionen, die bei Eintreten bestimmter Zustände auszuführen sind, finden Sie zum einen in der sehr guten Dokumentation zu Snort und zum anderen in diversen Büchern. (mha)

Diesen und weitere Artikel zum Thema finden Sie im tecCHANNEL-Compact "IT Sicherheit". Sie können die Ausgabe versandkostenfrei in unserem Online-Shop bestellen.