Debsums
Version vom 30. September 2026, 17:34 Uhr von Thomas.will (Diskussion | Beiträge)
Grundsätzliches
- Mit dem Kommando debsums können die Checksummen von Dateien überprüft werden, die über Debian Pakete auf dem System installiert wurden.
- Mit diesem Werkzeug kann der Systemadministrator Veränderungen an den Dateien des Systems feststellen.
- Diese Veränderungen können gewollt sein (Konfigurationsdateien etc ...)
- Sie können aber auch von einem Angreifer stammen, der Dateien im System gegen veränderte Binaries ausgetauscht hat (beispielsweise /bin/login).
Funktionsweise
- Jedes Debian-Paket bringt eine Liste mit MD5-Checksummen seiner Dateien mit.
- Bei der Installation legt dpkg diese Liste unter /var/lib/dpkg/info/PAKET.md5sums ab.
- debsums berechnet die Checksummen der installierten Dateien neu und vergleicht sie mit dieser Liste.
- Konfigurationsdateien (unter /etc) werden standardmäßig nicht geprüft, da sie fast immer angepasst werden.
Grenzen
- Die Vergleichslisten liegen auf demselben System wie die geprüften Dateien.
- Ein Angreifer mit Root-Rechten kann also nicht nur /bin/login austauschen, sondern auch die passende Checksumme in /var/lib/dpkg/info ändern oder gleich debsums selbst manipulieren.
- Ein Rootkit im Kernel kann debsums außerdem beim Lesen der Dateien den Originalinhalt vorspielen.
- Auf einem möglicherweise kompromittierten System ist das Ergebnis daher nur ein Hinweis. Verlässlich ist erst die Prüfung vom Rettungssystem aus (siehe unten).
Installation
- apt install debsums
Optionen
- Dem Programmaufruf können neben den Optionen noch Paketnamen übergeben werden, die gezielt überprüft werden sollen.
- Werden keine Paketnamen angegeben, so werden alle auf dem System installierten Pakete überprüft.
-a, --all
- Überprüft auch die Checksummen der Konfigurationsdateien eines Pakets.
-e, --config
- Überprüft ausschließlich die Konfigurationsdateien.
-c, --changed
- Gibt nur die Namen der veränderten Dateien aus.
- Schließt -s automatisch ein.
-s, --silent
- Zeigt ausschließlich Fehlermeldungen an.
- Informationen über korrekte Checksummen werden unterdrückt.
-l, --list-missing
- Zeigt Pakete an, die keine md5sums-Datei mitbringen. Deren Dateien können nicht geprüft werden.
- Die fehlenden Checksummen können mit der Option -g erzeugt werden.
-g, --generate=[all][,keep[,nocheck]]
- Erzeugt fehlende Checksummen aus den .deb-Dateien (standardmäßig aus /var/cache/apt/archives).
- Die Checksummen werden aus dem Paket berechnet, nicht aus den installierten Dateien. Das Paket muss daher aus einer vertrauenswürdigen Quelle stammen, z.B. frisch per apt geladen.
-m, --md5sums=FILE
- Liest die Checksummen der Pakete aus der Datei FILE statt aus der Debian Datenbank.
-r, --root=DIR
- Legt das Wurzelverzeichnis des zu prüfenden Systems fest (Standard /).
- Damit lässt sich ein eingehängtes fremdes System prüfen, z.B. vom Rettungssystem aus.
- Die dpkg-Datenbank wird automatisch unterhalb dieses Verzeichnisses gesucht.
-d, --admindir=DIR
- Ändert das Admin-Verzeichnis für dpkg (normalerweise /var/lib/dpkg/) auf den angegebenen Wert.
-p, --deb-path=DIR[:DIR...]
- Ändert das Suchverzeichnis für Debian Pakete.
Beispiele
Alle Pakete prüfen, ohne Konfigurationsdateien
- sudo debsums
/usr/lib/accountsservice/accounts-daemon OK /usr/lib/accountsservice/accounts-daemon-pam-password-helper OK /usr/share/dbus-1/interfaces/org.freedesktop.Accounts.User.xml OK /usr/share/dbus-1/interfaces/org.freedesktop.Accounts.xml OK /usr/share/dbus-1/system-services/org.freedesktop.Accounts.service OK /usr/share/doc/accountsservice/README OK [..]
Alle Pakete prüfen, mit Konfigurationsdateien
- sudo debsums -a
/usr/lib/accountsservice/accounts-daemon OK /usr/lib/accountsservice/accounts-daemon-pam-password-helper OK /usr/share/dbus-1/interfaces/org.freedesktop.Accounts.User.xml OK /usr/share/dbus-1/interfaces/org.freedesktop.Accounts.xml OK /usr/share/dbus-1/system-services/org.freedesktop.Accounts.service OK /etc/dbus-1/system.d/org.freedesktop.Accounts.conf OK [..]
Nur Fehler melden
- sudo debsums -s
debsums: changed file /usr/share/initramfs-tools/scripts/casper-bottom/01integrity_check (from casper package) debsums: changed file /usr/share/initramfs-tools/scripts/casper-bottom/15autologin (from casper package) debsums: changed file /usr/share/cups/data/default-testpage.pdf (from cups-filters package) debsums: changed file /sbin/start-stop-daemon (from dpkg package) debsums: changed file /usr/share/applications/evince.desktop (from evince-common package) debsums: missing file /usr/lib/firefox/distribution/searchplugins/locale/en-US/google.xml (from firefox package) [..]
Nur veränderte Dateien anzeigen
- sudo debsums -c
/usr/share/initramfs-tools/scripts/casper-bottom/01integrity_check /usr/share/initramfs-tools/scripts/casper-bottom/15autologin /usr/share/cups/data/default-testpage.pdf /sbin/start-stop-daemon /usr/share/applications/evince.desktop debsums: missing file /usr/lib/firefox/distribution/searchplugins/locale/en-GB/google.xml (from firefox-locale-en package) [..]
Veränderte Dateien inklusive Konfigurationsdateien anzeigen
- sudo debsums -ca
/usr/share/initramfs-tools/scripts/casper-bottom/01integrity_check /usr/share/initramfs-tools/scripts/casper-bottom/15autologin /usr/share/cups/data/default-testpage.pdf /sbin/start-stop-daemon /usr/share/applications/evince.desktop /etc/default/cups [..]
Nur veränderte Konfigurationsdateien anzeigen
- sudo debsums -ce
/etc/acpi/powerbtn.sh /etc/lsb-release /etc/issue.net /etc/issue /etc/default/cups /etc/grub.d/10_linux [..]
Ein bestimmtes Paket mit Konfigurationsdateien prüfen
- sudo debsums -a bash
/bin/bash OK /usr/bin/bashbug OK /usr/bin/clear_console OK /usr/share/doc/bash/COMPAT.gz OK debsums: missing file /etc/skel/.bashrc (from bash package) /etc/bash.bashrc FAILED [..]
Manipulation simulieren
- Ein Binary verändern (hier wird nur ein Byte angehängt, ls funktioniert weiter):
echo >> /usr/bin/ls
- Paket prüfen:
debsums -s coreutils debsums: changed file /usr/bin/ls (from coreutils package)
- Datei aus dem Originalpaket wiederherstellen:
apt install --reinstall coreutils
Prüfung vom Rettungssystem
- Das verdächtige System wird vom Rettungssystem gebootet, das Kernel und debsums des verdächtigen Systems werden also nicht benutzt.
- Siehe Erstellen eines Rettungssystems
- Root-Dateisystem einhängen, ggf. weitere Dateisysteme wie /usr darunter:
mount /dev/sda1 /mnt
- Prüfen:
debsums -r /mnt -s
- Die Checksummen stammen hier immer noch vom verdächtigen System. Wer sichergehen will, lädt die Pakete neu und erzeugt die Checksummen daraus (Option -g).