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 für 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 nebst anderen wichtigen Dateiattributen und schlägt bei einer Abweichung Alarm. 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: Neben dem klassischen Logfile verschickt es seine Protokolle unter anderem auch an einen zentralen Log-Server oder per E-Mail an den Administrator.
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, also beispielsweise 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.
Samhain steht unter der GPL auf seiner Homepage [1] zum Download bereit. Zwar findet man häufig auch ein passendes Paket in den Repositories der eigenen Distribution, von dem man aber möglichst Abstand nehmen sollte. 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 schwierig 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 man auf der Platte, woraufhin das eigentliche Quellcodepaket sowie dessen PGP-Signatur herauspurzeln. Letztere sollte man 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, der Fingerprint steht auf den Downloadseiten [1] und in der Anleitung. Stimmt alles überein, folgt der üblichen Dreisatz an:
./configure make make install
Soll Samhain zukünftig direkt beim Bootvorgang als Daemon mit starten, übernimmt
make install-boot
die nötigen Schritte. Gemeinerweise war das jedoch erst der Anfang, was die Samhain-Dokumentation nach und nach enthüllt: Bis die Konfiguration insbesondere auf mehreren unterschiedlichen Rechnern steht, sieht man sich meist mehrfach gezwungen, Samhain noch einmal mit weiteren »configure
«
-Optionen zu übersetzen – übrigens noch ein dritter Grund, warum man auf den Quellcode und nicht die fertigen Pakete der Distribution zurückgreifen sollte. Mit dem oben gezeigten Configure-Aufruf bleibt Samhain weiterhin im Speicher sichtbar, ignoriert neu geladene Kernelmodule und kann seine Meldungen auch nicht an einen Log-Server abgeben. Tabelle 1 nennt weitere wichtige »configure
«
-Parameter. Bevor man sie jedoch alle gedankenlos aktiviert, sollte man sich kurz mit der Konfigurationsdatei vertraut machen.
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 » |
--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 (» |
--enable-nocl=ABC |
Samhain führt Aktionen nur dann aus, wenn das jeweils erste Kommandozeilenargument ABC heißt. Einen Prüfdurchgang startet beispielsweise » |
--enable-micro-stealth=Zahl |
Zeichenketten im Quellcode sind für den Befehl » |
--enable-stealth=Zahl |
Im Gegensatz zu » |
--enable-khide=/boot/System.map-$(uname -r) |
Erzeugt ein Kernelmodul, das alle Prozesse und Dateien mit der Zeichenkette » |
--enable-static |
Linkt Samhain statisch. Damit wächst zwar die Dateigröße, kompromittierte dynamische Bibliotheken haben damit jedoch keine Auswirkungen auf Samhain. |