Thematischer Schwerpunkt dieser Ausgabe ist die kontinuierliche Überwachung von Servern, Clients und anderen Geräten im Netzwerk: mit dem IPMI-Plugin, dem ... (mehr)

OSSEC

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 ).

Abbildung 2: Das Installations- und Konfigurationstool von Ossec übernimmt auch fortgeschrittene Einstellungen, zum Beispiel die Kombination mit Firewalls und Active Response.

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 ).

Abbildung 3: Das Skript manage_agents stellt ein einfaches Menü zur Verfügung, mit dem Admins die Client-Agenten auf dem Server registrieren.

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.

Abbildung 4: Bei der Installation des Windows-Agenten für OSSEC sollte der Admin alles außer dem Quellcode auswählen.

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.

Abbildung 5: Im Gegensatz zur Syslog-Anbindung überträgt der Windows-Agent seine Informationen bereits in der Default-Einstellung sicher verschlüsselt.

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:

Abbildung 6: Korrelationsalarme erfassen Angriffe auch dann, wenn der Hacker zum Beispiel versucht mehrere unterschiedliche Geräte anzugreifen, hier am Beispiel eines Portscan.
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.

Eigene Plugins

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.

Abbildung 7: Erkennt das System einen Portscan von Snort oder OSSEC, dann erhält der Admin wenig später in der Liste der Alarme den Eintrag Geographical Information for portscanning host.
comments powered by Disqus
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2023