Debsums: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
(Die Seite wurde neu angelegt: „=Grundsätzliches= *Mit dem Kommando debsums können die Checksummen von Dateien überprüft werden, die über Debian Pakete auf dem System installiert wurden.…“) |
|||
| (4 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 1: | Zeile 1: | ||
=Grundsätzliches= | =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 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 ...) | + | *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). | *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). | ||
| + | |||
| + | =Quellen= | ||
| + | *https://debiananwenderhandbuch.de/debsums.html | ||
| + | *https://sleeplessbeastie.eu/2015/03/02/how-to-verify-installed-packages/ | ||
Aktuelle Version vom 30. September 2026, 17:34 Uhr
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).