Intrusion Detection mit Samhain

Wachmann

Schon seit nunmehr fast zehn Jahren dreht Samhain auf zahlreichen Linux-Rechnern seine Runden. Die freie Software meldet Einbruchsversuche und schickt ihre Protokolle auf Wunsch sogar an einen speziellen Server – eine in dieser Preisklasse eher seltene Funktion.

Große Unternehmen schließen nach Feierabend nicht nur ihre Türen ab, sondern beschäftigen auch einen Nachtwächter. Der dreht regelmäßig seine Runden durch das Gebäude und schlägt bei ungewöhnlichen Ereignissen Alarm. Auf Computern geht man gewöhnlich nicht so weit. Dort verschließt man alle Eingangstüren mit einer Firewall und hofft darauf, dass regelmäßige Updates eventuell verbliebene Sicherheitslücken stopfen.

Moderne Systeme sind jedoch komplexe Anlagen, bei denen Angreifer immer wieder gekippte Fenster finden. Ist der Gegner einmal im Haus, versucht er sich geschickt vor den Augen der Anwender und Administratoren zu verstecken, bevorzugt durch die Installation eines Rootkits. Dabei hinterlässt er jedoch Spuren, die der elektronische Wachmann Samhain gezielt aufspürt.

Das kleine Werkzeug stellt die Integrität eines Linux-Systems sicher, indem es regelmäßig Dateien auf Veränderungen untersucht. Dazu generiert Samhain für jede zu überwachende Datei eine eindeutige Prüfsumme. Dieser Fingerabdruck ändert sich, sobald eine Schadsoftware die Datei manipuliert. Samhain kontrolliert in regelmäßigen Abständen die Prüfsumme sowie andere wichtige Dateiattribute und schlägt bei einer Abweichung Alarm.

Kernel-Watchdog

Auf Wunsch beobachtet es zusätzlich noch alle Login- und Logout-Vorgänge, durchsucht das System nach SUID-Programmen und überwacht den Kernel auf mögliche Veränderungen. Alle verdächtigen Ereignisse kann Samhain verschiedenen Stellen melden: Es führt nicht nur ein klassisches Logfile, sondern verschickt auf Wunsch seine Protokolle auch an einen zentralen Logserver oder per E-Mail an den Systemverwalter.

Samhain beobachtet ausschließlich den lokalen Computer und arbeitet damit als so genanntes Host-basiertes Intrusion Detection System (HIDS). Im Gegensatz zu einem Netzwerk-basierten IDS (NIDS) ignoriert Samhain den ein- und ausgehenden Netzwerkverkehr. Das Werkzeug schreit folglich immer erst dann lauthals auf, wenn der Angreifer bereits auf dem eigenen System sein Unwesen treibt. Damit ist Samhain jedoch bei Weitem nicht überflüssig: Sollte ein Angreifer die Eingangskontrollen überwunden haben, kann ihn nur noch ein solcher, regelmäßig patrouillierender Wachmann enttarnen. So entlarvt nur ein HIDS neuartige und unbekannte Einbruchsmethoden sowie Angriffe, die aus dem LAN selbst kommen, also etwa von Mitarbeitern aus der eigenen Firma.

Intrusion-Detection-Systeme sind Kriminellen natürlich ein Dorn im Auge und somit selbst begehrtes Ziel für Angriffe. Samhain schützt sich dagegen gleich mit mehreren Maßnahmen. So kann es seinen eigenen Prozess vor anderen verbergen und nimmt – entsprechend konfiguriert – Kommandos nur noch zusammen mit einem Passwort entgegen.

Wiederholung

Samhain steht unter der GPL auf seiner Homepage [1] zum Download bereit. Zwar ist häufig auch ein passendes Paket in den Repositories der eigenen Distribution zu finden, doch ist Vorsicht bei deren Einsatz geboten. Zum einen sind diese Pakete meist veraltet (wie etwa unter Ubuntu 9.04) und zum anderen lässt sich die Herkunft und Unversehrtheit des Programms nur schwer bis gar nicht überprüfen.

Wer gewissenhaft der Anleitung folgt, dem erscheint die Installation von Samhain auf den ersten Blick recht einfach: Das heruntergeladene Archiv entpackt der Benutzer auf der Platte, woraufhin das eigentliche Quellcodepaket sowie dessen PGP-Signatur herauspurzeln. Letztere sollte er vor allen weiteren Schritten kurz überprüfen:

gpg --keyserver pgp.mit.edu --recv-key 0F571F6C
gpg --verify samhain-<version>.tar.gz.asc samhain-Version.tar.gz

Unterschrieben hat der Samhain-Autor Rainer Wichmann, sein Fingerprint ist auf den Downloadseiten [1] und in der Anleitung zu finden. Stimmt alles überein, folgt der üblichen Dreisatz zur Installation:

./configure
make
make install

Soll Samhain zukünftig direkt beim Bootvorgang als Daemon starten, übernimmt das Kommando

make install-boot

die nötigen Schritte. Gemeinerweise war das jedoch nur der Anfang – was die Samhain-Dokumentation erst nach und nach enthüllt: Bis die Konfiguration insbesondere auf mehreren unterschiedlichen Rechnern steht, sieht sich der Installateur meist mehrfach gezwungen, Samhain noch einmal mit weiteren »configure« -Optionen zu übersetzen – übrigens noch ein dritter Grund, lieber auf den Quellcode und nicht die fertigen Pakete der Distribution zurückzugreifen. Mit dem oben gezeigten Configure-Aufruf bleibt Samhain weiterhin im Speicher sichtbar, ignoriert neu geladene Kernelmodule und kann seine Meldungen auch nicht an einen Logserver abgeben. Tabelle 1 nennt weitere wichtige »configure« -Parameter. Bevor der Admin sie jedoch alle gedankenlos aktiviert, sollte er sich kurz mit der Konfigurationsdatei vertraut machen.

Abbildung 1: Configure erzeugt schon beim Übersetzen des Quellcode einen so genannten Base Key, mit dem es die verschickten E-Mails signiert. Der Befehl »samhain -M Datei« kann dann die Herkunft der gespeicherten Post prüfen.

Tabelle 1

Sicherheitsrelevante Configure-Parameter

Parameter Bedeutung
--with-kcheck=/boot/System.map-$(uname -r) Samhain überwacht den Kernel. Das klappt allerdings nur, wenn die Datei »/dev/kmem« zugänglich ist.
--enable-login-watch Samhain protokolliert jeden Login beziehungsweise Logout.
--enable-suidcheck Samhain meldet Dateien, bei denen plötzlich das SUID- oder SGID-Bit gesetzt ist.
--enable-install-name=Name Samhain heißt ab sofort »Name« , alle zugehörenden Dateien und Ordner sind entsprechend angepasst (»/etc/Namerc« , etc).
--enable-nocl=ABC Samhain führt Aktionen nur dann aus, wenn das jeweils erste Kommandozeilen-Argument »ABC« heißt. Einen Prüfdurchgang startet beispielsweise »samhain ABC -t check« . Damit können andere Programme Samhain nicht fernsteuern.
--enable-micro-stealth=Zahl Zeichenketten im Quellcode sind für den Befehl »strings« unsichtbar. Ein Angreifer findet damit Samhain nicht so schnell. »Zahl« muss eine ganze Zahl zwischen 127 und 255 sein.
--enable-stealth=Zahl Im Gegensatz zu »--enable-micro-stealth« verändern sich auch Zeichenketten in der Logdatei und der Samhain-Datenbank. Um die Logdatei anzusehen, verwendet man den Befehl »samhain -jL /Pfad/zu/Logdatei | less« . Zudem muss die Konfigurationsdatei in einem Postscript-Bild steganografisch versteckt sein. Letzteres übernimmt das Hilfsprogramm »samhain_stealth« . »Zahl« muss wieder eine ganze Zahl zwischen 127 und 255 sein.
--enable-khide=/boot/System.map-$(uname -r) Erzeugt ein Kernelmodul, das alle Prozesse und Dateien mit der Zeichenkette »samhain« versteckt.
--enable-static Linkt Samhain statisch. Damit wächst zwar die Dateigröße, kompromittierte dynamische Bibliotheken haben damit jedoch keine Auswirkungen auf Samhain.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Preis € 1,99
(inkl. 19% MwSt.)



Im ADMIN Online-Archiv

Abonnieren Sie das ADMIN Online-Archiv, und Sie erhalten Zugriff auf alle ADMIN-Artikel im HTML- und/oder PDF-Format.

comments powered by Disqus

Ausgabe 03/2013: Web Security

Anzeige