Linux Intrusion Detection mit Samhain

Wachschutz

Schon seit nunmehr fast 10 Jahren dreht Samhain auf zahlreichen Linux-Rechnern äußerst erfolgreich seine Runden. Die kostenlose Software meldet Einbruchsversuche und schickt ihre Protokolle auf Wunsch sogar an einen speziellen Server – eine in dieser Preisklasse selten gebotene 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 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.

Schnüffler

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.

Wiederholung!

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 »/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 Kommandozeilenargument 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 Log-Datei 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.

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