Die Integritätsüberwachung hat eine unangenehme Eigenschaft: Sie braucht eine Referenz, die von einem nachweislich sauberen System stammt. Läuft der Server im dritten Jahr und stellt sich die Frage nach einem Einbruch erst heute, ist es für diese Referenz bereits zu spät — Sie würden festschreiben, was gerade da ist.
Unter Debian und Ubuntu existiert die Referenz allerdings schon, und sie ist nicht Ihre: Jedes installierte Paket führt die Prüfsummen seiner eigenen Dateien mit. Der Abgleich damit braucht weder Einrichtung noch vorherigen Schnappschuss und funktioniert auf jedem System zu jedem Zeitpunkt. Das Werkzeug heißt debsums.
Anwendung
sudo apt install debsums
sudo debsums -c
Der Schalter -c gibt nur die Dateien aus, die nicht zur Referenz passen. Ohne ihn ist die Ausgabe ein zeilenweiser Bericht über jede Datei im System, zehntausende Zeilen lang.
Die Prüfung dauert einige Minuten und belastet die Platte, weshalb sie auf einem Arbeitsserver mit gesenkter Priorität laufen sollte:
sudo ionice -c3 nice -n19 debsums -c
Das Ergebnis lesen
Eine leere Ausgabe bedeutet, dass jede geprüfte Datei dem entspricht, was die Distribution installiert hat. Eine nicht leere will untersucht werden, und die Funde zerfallen in zwei sehr verschiedene Klassen.
Konfigurationsdateien unter /etc. Sie zu ändern ist normale Arbeit: Sie haben sshd_config bearbeitet, nginx eingerichtet, Kernel-Parameter ergänzt. Solche Abweichungen sind zu erwarten. Damit sie nicht stören, gibt es einen eigenen Modus:
sudo debsums -e -c
-e prüft ausschließlich Konfigurationsdateien — gelegentlich nützlich, um die Liste dessen zu sehen, was Sie auf dieser Maschine überhaupt geändert haben.
Ausführbare Dateien und Bibliotheken. Eine Abweichung in /usr/bin, /usr/sbin, /bin oder /usr/lib ist genau das, wofür die Prüfung lief. Legitime Ursachen gibt es, aber wenige: Die Datei wurde beim Debuggen von Hand bearbeitet, ein fremder Patch wurde eingespielt, das Paket wurde während der Prüfung gerade aktualisiert. Passt nichts davon, ist ernsthafte Untersuchung angesagt.
Die klassischen Ziele eines Austauschs sind ls, ps, netstat, ss, find, sshd. Eine ausgetauschte Fassung verbirgt die entscheidenden Zeilen in ihrer Ausgabe, und alle Ihre weiteren Prüfungen hören auf, die Wahrheit zu sagen.
Die Abdeckung ist unvollständig — und das muss man wissen
Eine Einschränkung, die meist unerwähnt bleibt: Nicht jedes Paket liefert Prüfsummen mit. Dateien solcher Pakete werden überhaupt nicht geprüft und tauchen unter keinen Umständen im Bericht auf. Die Liste sehen Sie so:
sudo debsums -l
Ein sauberer debsums-Bericht bedeutet folglich „im geprüften Teil ist alles in Ordnung“ und nicht „das System wurde nicht verändert“. Dasselbe gilt für alles, was am Paketmanager vorbei installiert wurde: aus Quellen kompiliert, als Binärdatei heruntergeladen, per Skript von der Seite des Entwicklers eingerichtet — darüber wacht debsums definitionsgemäß nicht, und genau dort wird AIDE gebraucht.
Regelmäßig ausführen
Das Paket bringt einen fertigen Auftrag mit, aktiviert in /etc/default/debsums:
CRON_CHECK=weekly
Einmal wöchentlich ist eine vernünftige Frequenz: Die Prüfung belastet die Platte spürbar, und Systemdateien ändern sich zwischen Updates selten. Ein täglicher Lauf bringt nichts außer Last.
Wenn eine Datei wirklich ausgetauscht wurde
Der erste Impuls ist, das Paket neu zu installieren und das Original zurückzuholen:
sudo apt install --reinstall coreutils
Der Befehl ist richtig, aber nicht als erste Handlung. Eine ausgetauschte Systemdatei bedeutet, dass jemand Root-Rechte hatte, und das Wiederherstellen der Datei löst dieses Problem nicht — es vernichtet nur die Spuren. Die Reihenfolge muss umgekehrt sein: zuerst eine Kopie der verdächtigen Datei und ihre Änderungszeit sichern, ansehen, was sich im selben Zeitraum sonst geändert hat, die Cron-Aufträge, die SSH-Schlüssel und die Benutzerliste prüfen. Erst danach wiederherstellen.
Denken Sie auch an die Grenzen der Methode: Ist das System tief kompromittiert, können debsums selbst und die von ihm genutzten Bibliotheken mit ausgetauscht sein. Eine Prüfung von innen kann keine absolute Gewissheit geben — dafür bootet man von einem externen Medium. Für die tägliche Arbeit reicht es dennoch: Die überwiegende Mehrheit der Angriffe ist automatisiert und nicht derart raffiniert.
Der Platz im Gesamtbild
debsums ist gut, weil es nichts braucht und sofort arbeitet — was es zum bequemen Ausgangspunkt für einen Server macht, dessen Geschichte Sie nicht kennen. Seine Schwäche ist die unvollständige Abdeckung und das fehlende Wissen über alles, was außerhalb der Pakete installiert wurde. Das Paar „debsums plus AIDE“ schließt beide Seiten: die fertige Referenz der Distribution für Systemdateien und Ihren eigenen Schnappschuss für den Rest.
Wie üblich geht es nicht ums Ausführen, sondern darum, das letzte Ergebnis samt Datum vor Augen zu haben. Wie das aussieht, zeigt die Demo unten.