Intrusion Detection mit AIDE
Artikel erschienen in Swiss IT Magazine 2004/13
Nichts ist sicher, so lautet ein Grundsatz für Serveradministratoren. Sobald man eine Maschine ans Internet hängt, startet man einen Wettlauf zwischen Administrator und potentiellen Angreifern.
So ist die beste Freundin eines Serveradministrators wohl oder übel Paranoia. Denn bei der grossen Anzahl von täglich auftauchenden Sicherheitslücken oder der teils komplexen Konfiguration einiger Software, muss man immer damit rechnen, dass eine kleine Ritze offen bleibt, durch die sich ein Angreifer Zutritt zum System verschaffen kann. Verhält sich dann ein System aus irgendeinem, vielleicht sogar harmlosen Grund etwas anders, muss untersucht werden, ob es sich nur um eine Amok laufende Software, eine vollgelaufene Festplatte oder einen Angreifer handelt, dessen Rootkit sich bereits still und heimlich im Kernel eingenistet hat.
Genauso, wie es Intrusion-Detection-Systeme für Netzwerke gibt, existieren auch derartige Lösungen für einzelne Server. Diese Software kann bei der Analyse und Verifizierung von Systemzuständen helfen. Zu dieser Klasse der Host-based-Intrusion-Detection-Systeme gehört auch das freie AIDE, das den designierten Nachfolger des Urgesteins Tripwire darstellt.
Die Funktionsweise von AIDE, was für Advanced Intrusion Detection Environment steht, ist vergleichsweise einfach: In einer zentralen Konfigurationsdatei (aide.conf) werden die zu überwachenden Verzeichnisse und Dateien spezifiziert. Dabei lassen sich unter anderem die Rechte, Inode-Nummern, Benutzer- und Gruppenzugehörigkeit oder die Dateigrösse überwachen. Dazu gibt es noch weitere Optionen, welche die Zustände der Datei genauer unter die Lupe nehmen.
Anhand dieser Konfigurationsdatei wird eine Datei erzeugt, welche kryptografische Prüfsummen aller definierten Dateien und Ordner enthält. Dabei wird einer der folgenden Hashing-Algorithmen verwendet: SHA1, MD5, RMD160 oder Tiger. Sobald dieser Vorgang abgeschlossen ist, der meist nur wenige Sekunden dauert, ist AIDE einsatzbereit. Mit einem aide --check lässt sich dann die Integrität des Systems verifizieren. Werden Unterschiede zum Hash-File gefunden, berichtet AIDE diese.
Bei der Erstellung der Konfigurationsdatei ist darauf zu achten, dass häufig wechselnde Verzeichnisse und Dateien von der Überwachung ausgeklammert werden. Dazu gehören beispielsweise /home oder /var/spool/mail. Das Log-Verzeichnis /var/log, in dem sich Dateien ebenfalls häufig ändern, kann man dagegen mit einer angepassten Regel überwachen. Logfiles haben es nämlich an sich, zu wachsen und rotiert zu werden. Dies lässt sich mit den Einstellungen berücksichtigen, womit auch die Logfiles überwacht werden. Sollte ein Angreifer seine Spuren verwischen wollen, indem er die Logfiles frisiert, kann auch dies entdeckt werden.
Bei einem klassischen Angriff werden die Standardwerkzeuge (ps, ls, netstat, who...) entweder umgeschrieben, damit die korrumpierten Daten und verräterischen Prozesse nicht entdeckt werden können, oder unbrauchbar gemacht. Während man letzteres recht schnell merkt, ist eine Manipulation viel schwieriger zu bemerken. Da setzt AIDE an. Verändert man eine Datei, verändert man ihren Fingerprint. Dabei ist es bei der heutigen Rechenkapazität so gut wie unmöglich, eine bösartige Datei so zu erstellen, dass ihr Fingerprint genau gleich aussieht wie derjenige der Originaldatei.
Allerdings bleibt ein Problem zurück: Wie kann man die Integrität von AIDE garantieren? Während Tripwire sowohl die Konfigurations- als auch die Hash-Dateien mit einem Passwort sichert, sind sowohl die Dateien als auch die Binaries von AIDE momentan noch ungesichert. Erst in den zukünftigen Versionen soll sich AIDE auch selber schützen können.
Ein erster Schritt zur Absicherung ist sicher, dass nur ein privilegierter Benutzer, also root, Zugriff auf AIDE, die Konfigurations- sowie die Hash-Dateien hat. Ebenfalls gilt es, sowohl die Konfigurations- als auch die Hash-Datei auf einem Read-Only-Medium, d.h. einer CD-ROM oder auf einem anderen Computer zu sichern, damit man eine vertrauenswürdige Vergleichsmöglichkeit hat. So kann man zum Beispiel mit Hilfe des Werkzeugs md5sum die Konfigurations- sowie die Hash-Datei auf Unterschiede mit der lokalen Kopie vergleichen. Die AIDE-Binaries lassen sich, sofern man sich entscheidet, sie überhaupt auf dem Server zu belassen, ebenfalls mit md5sum auf Manipulationen kontrollieren.