Einbruchsversuche erkennen mit Snort
Spürnase
Neulich musste ich für die Webserver-Farm eines Kunden ein Intrusion Detection System (IDS) aufsetzen. Nach der Installation standen erst einmal Konfiguration und Testauf dem Programm. Als das System lief, bemerkten meine Kollegen und ich sehr schnell die Art von Traffic, die eine Firewall normalerweise draußen halten sollte. Der Provider hatte sie offensichtlich falsch konfiguriert, sodass praktisch der ganze Traffic durchkam. Während der kurzen Testphase loggte das IDS eine große Zahl an Portscans und Zugangsversuchen auf den Hauptservern. Aus diesen Logs ging hervor, dass den Servern eine ungewollte Form von Aufmerksamkeit zukam.
Die Moral der Geschichte ist, dass man ein Auge auf sein Netzwerk haben sollte. Selbst wenn die eigene Firewall richtig konfiguriert ist, kann man von der Wachsamkeit eines IDS profitieren. Im einfachsten Fall überwacht ein IDS das Netzwerk und vergleicht den aktuellen Zustand mit Mustern, die einen Missbrauch anzeigen. Stößt das IDS auf so etwas, löst es eine Aktion aus, die von der Konfiguration abhängt, im einfachsten Fall zum Beispiel nur in einem Eintrag in der Logdatei oder der Benachrichtigung des Administrators besteht. Ein IDS-Sensor innerhalb des geschützten Netzwerks überwacht den Traffic, den die Firewall durchlässt; ein Sensor außerhalb erkennt Einbruchsversuche.
Bei Snort [1] handelt es sich um ein Open-Source-IDS, das wie viele andere Open-Source-Projekte mittlerweile einen kommerziellen Variante besitzt, die den Namen Sourcefire trägt [2]. Snort selber bleibt weiterhin unter der GPL-Lizenz erhältlich, für alle, die die extra Features von Sourcefire nicht brauchen oder nicht wollen.
Installation
Normalerweise ist Snort recht einfach zu installieren. Viele Distributionen führen es schon in ihren Repositories, sodass ein Klick im Paketmanager zur Installation genügt. Allerdings kann die Version schon etwas älter sein als die derzeit aktuelle 2.8.3.1. Snort aus dem Quellcode zu installieren, ist etwas schwieriger als mit Apt-get, aber dafür hat man auch mehr Optionen, das System auf seinen Bedarf zuzuschneiden. Der Weg dazu führt zuerst über den Download des Tarballs:
wget http://www.snort.org/dl/snort-↩ 2.8.3.1.tar.gz tar xvf snort-2.8.3.1.tar.gz cd snort-2.8.3.1
Als nächstes überlegen Sie am besten, wo die Logs und die Warnmeldungen (Alerts) liegen sollen. Die einfache Variante ist, alles in »/var/log/snort«
zu speichern. Snort unterstützt eine ganze Reihe von Datenbanken, was recht einfach die zentrale Datenspeicherung ermöglicht. Die Auswahl hängt vom geplanten Ziel und von der Menge des Traffic ab. Eine Daumenregel lautet, den geschätzten Traffic sicherheitshalber mit zehn zu multiplizieren. Meistens sind die Anwender von der schieren Menge an Daten überrascht, die in Windeseile das Logging-System überlasten können.
Das Beispiel hier verwendet MySQL als Datenbank. Wer eine andere Konfiguration haben möchte, kann den Support dafür über entsprechende Switches von Configure einstellen. Eine vollständige Liste von Optionen liefert »./configure -h«
.
./configure --with-mysql make sudo make install
Treten beim Kompilieren Fehler auf, fehlen eventuell Header-Dateien. Insbesondere setzt Snort »pcre.h«
, »pcap.h«
, »pcap-bpf.h«
und »mysql.h«
im Verzeichnis »/usr/include«
voraus. Fehlen diese Files, werden einige Abhängigkeiten vielleicht nicht richtig installiert. Auf einigen Distributionen fehlt möglicherweise »libpcap.so«
. Dann müssen Sie einen symbolischen Link anlegen: »ln -s /usr/lib/libpcap.so. /usr/lib/libpcap.so«
.
Sind »make«
and »sudo make install«
sauber durchgelaufen, geht es an die MySQL-Datenbank. Vorher legen Sie noch einen Systembenutzer für Snort an, schließlich wollen Sie das IDS ja nicht als Root laufen lassen:
groupadd snortgrp useradd -g snortgrp snortusr
Diese Befehle erzeugen die Gruppe »snortgrp«
und den Benutzer »snortusr«
. Bevor es weitergeht, stellen Sie sicher, dass Sie sich im Verzeichnis befinden, das beim Entpacken von Snort entstanden ist. Die folgenden Kommandos legen die für Konfiguration, Regeln und Logfiles nötigen Verzeichnisse an und kopieren die Dateien in das neue Verzeichnis »/etc/snort«
:
mkdir -p /etc/snort/rules mkdir /var/log/snort touch /var/log/snort/snort.log touch /var/log/snort/alert chown -R snortusr.snortgrp /var/log/snort cp etc/* /etc/snort/
Um die neuesten Regeln herunterzuladen, besuchen Sie die Snort-Website [1] und registrieren Sie sich. Sie bietet freie wie auch kostenpflichtige Optionen, abhängig davon wie aktuell Sie das Regelwerk halten wollen. Zahlende Benutzer haben 30 Tage früher Zugang zu aktualisierten Regeln als nur einfach registrierte. Es ist in jedem Fall besser, sich die Regeln von der Website zu laden, als die im Paket enthaltenen zu nutzen, denn die sind im Allgemeinen sehr schnell veraltet. Haben Sie sich registriert, können Sie die neuen Regelsets herunterladen und nach »/etc/snort/rules«
entpacken.
Datenbank
Läuft der MySQL-Server (überprüfen Sie das mit »ps -A | grep mysqld«
), steht der Konfiguration der Datenbank nichts mehr im Weg. Sie teilt sich in einzelne Schritte auf. Zuerst setzen Sie ein Passwort, legen die Datenbank an und definieren die Tabellenstruktur. Verbinden Sie sich als Root-User mit dem MySQL-Server (»mysql -u root -p«
) und geben Sie dann die SQL-Statements aus Listing 1 ein. Achten Sie darauf, jede Zeile mit einem Semikolon abzuschließen. Als Passwort sollten Sie ein Wort mit mindestens acht Buchstaben und Sonderzeichen zu wählen, um die Gefahr eines Brute-Force-Angriffs zu minimieren.
Listing 1
MySQL-Kommandos
create database snort;
grant INSERT, SELECT on root.* to snort@localhost;
set PASSWORD for snort@localhost=PASSWORD('Desired_$n0rt_pa55word');
grant CREATE, INSERT, SELECT, DELETE, UPDATE on snort.* to snort@localhost;
grant CREATE, INSERT, SELECT, DELETE, UPDATE on snort.* to snort;
Der MySQL-Monitor sollte jedes Statement mit einem »Query OK«
quittieren, andernfalls überprüfen Sie die eingegebene Zeile. Im zweiten Schritt lesen Sie das SQL-Schema von Snort ein. Dazu müssen Sie sich wieder im Snort-Installationsverzeichnis befinden:
mysql -u root -p schemas/create_mysql snort
Um zu testen, ob alles passt, rufen Sie den MySQL-Monitor als der Snort-User auf, den Sie vorher angelegt haben:
mysql -u snortusr -p > show databases; > use snort; > show tables;
Wenn keine Meldungen über fehlende Rechte oder ähnliches auftreten, ist die Snort zur weiteren Konfiguration bereit.
Alle Angebote zum ADMIN-Magazin im Online-Shop
Versandartikel |
Onlineartikel |




