Wer Wert auf Plattformunabhängigkeit legt, verwendet das Host-basierte IDS OSSEC. Dessen aktuelle Version findet sich auf [7], »aptitude install libprelude-dev
«
installiert die fürs Kompilieren notwendigen Entwicklerbibliotheken von Prelude. Nach dem Entpacken des Tarballs ins Unterverzeichnis »src
«
aktiviert dort »make setprelude
«
die Prelude-Unterstützung, »install.sh
«
startet die Installation. Die angebotene lokale Installation reicht für Anwender aus, die keine Anbindung von Hardware-Endgeräten oder anderen Clients planen. In der Regel sollte der Admin hier jedoch »server
«
wählen und den Integrity Check Daemon sowie die Rootkit Detection Engine aktivieren. Gegen Brute-Force-Attacken hilft es, durch Active Response und Firewall-Drop die attackierenden Hosts automatisch zu blockieren, je nach System via IPtables, IPchains oder IPfw (Abbildung 2).
Damit False Positives nicht zu Problemen im Netzwerk führen, hilft eine Whitelist mit IP-Adressen. Im darauf folgenden Schritt kann der Admin den Empfang von Syslog-Nachrichten aktivieren, wenn er zum Beispiel plant Hardware-Appliances per Syslog anzubinden.
Jetzt korrigiert er noch die Datei »/var/ossec/etc/ossec.conf
«
, damit OSSEC die Informationen an Prelude übergibt:
<ossec_config> <global> <email_notification>no</email_notification> <prelude_output>yes</prelude_output> </global>
Zu guter Letzt muss der Admin auch OSSEC in Prelude registrieren:
prelude-admin register OSSEC "idmef:wadmin:r" Listen-IP_des_Prelude-Managers-uid ossec -gid ossec
Hier muss er bei UID und GID »ossec
«
verwenden, da der Analysedienst unter diesem Benutzeraccount läuft. Nach der Installation startet das HIDS-System mit »/var/ossec/bin/ossec-control start
«
.
Bevor sich ein Agent an OSSEC anbinden lässt, muss der Admin ihn auf dem Server registrieren. Das erledigt der Befehl »/var/ossec/bin/manage_agents
«
mit einem tastaturgesteuerten Konsolenmenü (siehe Abbildung 3).
Nach der Angabe des Namens gibt der Admin hier die IP-Adresse ein. Ist die dynamisch vergeben, gibt er das Klasse-C-Netzwerk an, in dem sich der Agent befindet (zum Beispiel 10.21.81.0/24). Dann wählt er eine ID für den Agenten, wobei er den Standardvorschlag für den ersten Agenten »001
«
ohne Weiteres beibehalten kann. Um ihn am Endgerät anzubinden, ist noch ein Authentifikationsschlüssel notwendig. Den gibt es mit »/var/ossec/bin/manage_agents -e 001
«
.
Um einen Windows-Client an OSSEC und Prelude anzubinden, bedarf es auf dem System der Libprelude [13]. Deren Installation ist mit wenigen Klicks beendet, wobei der Admin außer »Source Code
«
alle Komponenten der Software auswählt (Abbildung 4). Im Anschluss führt der Windows-Administrator den Eintrag »Manage Agent
«
(im Startmenü im Ordner »OSSEC
«
) aus. Nach Eingabe der »OSSEC Server IP
«
und des Schlüssels kann der Windows-Rechner eine Verbindung mit dem IDS-System herstellen.
Ein Klick auf »Save
«
speichert die angegeben Daten, das Feintuning der Konfiguration findet sich unter »View | Config
«
(Abbildung 5). Nach dem nächsten Neustart stellt OSSEC die Anbindung über einen Windows-Dienst her.
Für Hardware-Appliances wie Ciscos PIX-Firewalls eignet sich die Syslog-Funktionalität von OSSEC. Zwar ist sie bei der oben beschriebenen Installation aktiviert, doch standardmäßig empfängt der Server keine Syslog-Nachrichten. Vorher müssen die IP-Adressen, von denen ein Empfang dieser Nachrichten erlaubt ist, noch in der Konfigurationsdatei »/var/ossec/etc/ossec.conf
«
landen:
<remote> <connection>syslog</connection> <allowed-ips>10.21.81.4</allowed-ips> <allowed-ips>10.21.81.9</allowed-ips> <port>5140</port> </remote>
In dieser Konfiguration verarbeitet OSSEC die Syslog-Nachrichten der beiden Rechner mit den Adressen 10.21.81.4 und 10.21.81.9.
Besonders hilfreich beim Aufspüren von Angreifern ist die Korrelator-Engine von Prelude [14]. Sie bietet die Möglichkeit, IDMEF-Ereignisse miteinander in Verbindung zu setzen und so einen Korrelations-Alarm zu erzeugen, der alle betreffenden Einzelalarme enthält (Abbildung 6). Die Installation des Prelude-Correlator erfolgt unter Debian mit »aptitude install prelude-correlator
«
, registrieren lässt sich der Agent mit:
prelude-admin register prelude-correlator"idmef:rw" Listen-IP_des_Prelude-Managers-uid 0 -gid 0
Der Prelude-Correlator liefert bereits einige eigene Plugins mit, sie sind unter Debian im Ordner »/usr/share/pyshared/PreludeCorrelator/plugins/
«
zu finden und lassen sich über einen Eintrag in »/etc/prelude-correlator/prelude-correlator.conf
«
aktivieren. Die Zeilen
[BruteForcePlugin] disable = false
aktivieren beispielsweise das Bruteforce-Plugin. Anschießend startet »/etc/init.d/prelude-correlator start
«
den Correlator.
Wer selbst Plugins erstellen möchte, braucht Python-Grundkenntnisse und sollte das Kapitel 4.2 des IDMEF-RFC eingehend studieren [1]. Dieser Abschnitt des RFC behandelt die Nachrichtenklassen, die Plugin-Programmierer verwenden dürfen.
Das von dem Autor dieses Artikels extra geschriebene Beispiel-Plugin Portscangeoinfo (Listing 2) steht unter [15] zum Download. Es reagiert auf Portscans, die Snort und OSSEC erkannt haben, und macht es möglich, über einen Korrelationsalarm geografische Informationen des Angreifers auszugeben. Damit Snort die Portscans auch erkennt, muss der Portscan-Präprozessor in der »snort.conf
«
aktiviert sein.
Listing 2
main.py
Der Korrelationsalarm »Network Information for scanning host
«
enthält sowohl die Geo-IP-Informationen als auch die zugehörigen Alarme der Snort-OSSEC-Sensoren. Das Plugin wartet 5 Minuten, sammelt alle Portscan-Ereignisse innerhalb dieses Zeitraums und packt sie gesammelt in einen Korrelationsalarm. Damit das klappt, muss der Admin vorher mit »aptitude install geoip-python libgeoip1
«
Geo-IP für Python installieren. Wer sich mit den Länderinformationen nicht zufriedengibt, dem hilft die Geo-IP-City-Lite-Datenbank von [16] weiter.