Einbruchsversuche erkennen mit Snort
Spürnase
Präprozessor
In das eigene Netzwerk einfließenden Traffic behandelt Snort über Präprozessoren. Ein- und ausgeschaltet werden sie in »snort.conf«
. Von Haus aus sind einige Präprozessoren aktiviert, die sich zum Beispiel um fragmentierte Pakete, zustandsbehaftete Überprüfungen, Performance-Überwachung, RPC, FTP, Telnet, SMTP, DNS, Samba und Portscans kümmern. Es gibt sogar einen extra Präprozessor für den Trojaner Back Orifice. Jeder Präprozessor besitzt eigenen Einstellungsoptionen. Die Defaults funktionieren, aber beschäftigen Sie sich ruhig noch ein bisschen mit diesen Einstellungen, wenn Sie das IDS wirklich optimieren wollen. Insbesondere kann der »sfPortscan«
-Präprozesor falsche Positivmeldungen erzeugen, wenn er nicht richtig konfiguriert ist. Stört Sie das, können Sie den Präprozessor auch einfach ausschalten.
Verfügt der IDS-Server nur über wenig Hauptspeicher, lassen sich die Speicheranforderungen der Präprozessoren anpassen. Beispielsweise verwendet der Präprozessor von Haus aus »frag3«
64 MByte RAM, um fragmentierten Traffic zu speichern und wieder zusammenzusetzen. Obwohl das angesichts heutiger Hardware wenig erscheint, kann mit mehreren Präprozessoren einiges zusammenkommen. Umgekehrt können Sie den Speicherverbrauch der Präprozessoren auch erhöhen, wenn der Server über genug Speicher verfügt.
Logs und Alarme
Das IDS läuft, loggt den Traffic und speichert die Alarmmeldungen in der MySQL-Datenbank. Eine super Sache, so eine Datenbank mit verdächtigem Traffic und Alerts, besser wäre es allerdings noch, direkt benachrichtigt zu werden, wenn man gerade Opfer eines Portscans wird. Dummerweise kann Snort selbst keine Benachrichtigungen auf den Desktop schicken. Jedoch ist das IDS, der Unix-Philosophie folgend, leicht mit anderen Tools zusammenzuschalten. Zwei Kandidaten dafür sind Swatch [3] und Logsurfer [4].
Einige andere Pakete stellen Snort-Daten in Form von Statistiken und Diagrammen dar. Besonders beliebt ist BASE (Basic Analysis and Security Engine) [5], das neben dem Apache-Webserver auch PHP voraussetzt. Zusätzlich erfordert es das ADOdb-Paket [5], um per PHP auf eine Datenbank zuzugreifen. Aus Sicherheits- und Performance-Erwägungen installiert man BASE besser auf einem anderen Server als das eigentliche IDS. Eine Management-Console bringt nämlich wenig, wenn man sie nicht aufrufen kann, weil das IDS gerade mit anderen Dingen ausgelastet ist. In manchen Fällen ist es sogar sinnvoll, nur für Management und Monitoring einen zweiten Snort-Sensor im Netzwerk zu platzieren.
Sind Apache, PHP und ADOdb installiert, entpacken Sie den BASE-Code in »/var/www/base«
beziehungsweise, je nach Distribution »/srv/www/htdocs/base«
. Stellen Sie fürs erste die Rechte des Verzeichnisses auf world-writable (chmod 777). Das ist aus Security-Perspektive furchtbar, ist aber nur für die Dauer der Installation erforderlich. Navigieren Sie mit dem Browser zur Adresse »http:///base«
, um den Zugang zur MySQL-Datenbank einzurichten. Dazu müssen Sie den Pfad zu den ADOdb-Dateien angeben, ebenso MySQL-Servername, -Benutzer und -Passwort.
Meldet die BASE-Seite, dass die Konfigurationsdateien nicht schreibbar sind, überprüfen Sie deren Rechte. Klappt der MySQL-Zugang nicht, müssen Sie eventuell die Extension »mysql.so«
in der »php.ini«
aktivieren. Im Normalfall fügt BASE der Datenbank seinen Informationen hinzu, und das Setup ist erledigt. Und nicht vergessen: Die Rechte von »/var/www/base«
wieder so restriktiv einstellen, dass gerade mal der Webserver daraus lesen darf. BASE bringt ansonsten keinerlei Sicherheitsmaßnahmen mit, sodass es sich empfiehlt, SSL-Verschlüsselung (HTTPS) einzurichten und das Verzeichnis mit einer Datei ».htpasswd«
abzusichern.
Text Logs und Alarmmeldungen finden Sie außer in der Datenbank auch in »/var/log/snort«
. Die Dateien enthalten die kompletten Traffic-Logs im Tcpdump-Format. Es ist also ein Leichtes, ein Skript zu schreiben, das Sie darüber unterrichtet, wenn Snort einen Alarm loggt. Die Tcpdump-Files lassen sich über den Aufruf »snort -r«
in ein leichter lesbares Format verarbeiten. Die Schalter »-vd«
führen zu etwas ausführlicheren Berichten. Snort beherrscht auch das Filterformat der Berkeley Packet Filter (BPF) [7], um Ausgaben direkt auf der Kommandozeile zu verarbeiten:
snort -vd -r snort.log.1206804587 tcp and ↩ src port 22 snort -vd -r snort.log.1206804587 not host ↩ 192.168.0.1
Die erste der obigen Zeilen filtert nur SSH-Traffic aus dem Log, die zweite Zeile alle Pakete, die nicht vom oder zum Host 192.168.0.1 fließen.
Alle Angebote zum ADMIN-Magazin im Online-Shop
Versandartikel |
Onlineartikel |




