Debsums: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
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.  
+
*Mit diesem Werkzeug kann der Systemadministrator Veränderungen an den Dateien des Systems feststellen.
−
*Diese Veränderungen können gewollt sein (Konfigurationsdateien etc ...)  
+
*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=
 
=Optionen=
 
*Dem Programmaufruf können neben den Optionen noch Paketnamen übergeben werden, die gezielt überprüft werden sollen.
 
*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.
 
*Werden keine Paketnamen angegeben, so werden alle auf dem System installierten Pakete überprüft.
−
==Installation==
 
−
*apt install debsums
 
 
==-a, --all==
 
==-a, --all==
 
*Überprüft auch die Checksummen der Konfigurationsdateien eines Pakets.
 
*Überprüft auch die Checksummen der Konfigurationsdateien eines Pakets.
−
*Diese werden normalerweise nicht überprüft, da an diesen Dateien häufig Anpassungen vorgenommen werden.
+
==-e, --config==
−
 
+
*Überprüft ausschließlich die Konfigurationsdateien.
 
==-c, --changed==
 
==-c, --changed==
−
*Zeigt veränderte Dateien an.
+
*Gibt nur die Namen der veränderten Dateien aus.
−
*Dies funktioniert nur zusammen mit der Option -s, da normalerweise alle Ergebnisse angezeigt werden.
+
*Schließt -s automatisch ein.
−
==-l, --list-missing==
 
−
*Zeigt Dateien an, für die keine MD5-Checksumme auf dem System vorhanden ist.
 
−
*Diese kann nachträglich mit der Option -g erzeugt werden.
 
−
*Dies sollte nur geschehen, wenn absolut sicher ist, dass die Dateien nicht zwischenzeitlich bereits von einem Angreifer verändert wurden!
 
 
==-s, --silent==
 
==-s, --silent==
 
*Zeigt ausschließlich Fehlermeldungen an.
 
*Zeigt ausschließlich Fehlermeldungen an.
 
*Informationen über korrekte Checksummen werden unterdrückt.
 
*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==
 
==-m, --md5sums=FILE==
 
*Liest die Checksummen der Pakete aus der Datei FILE statt aus der Debian Datenbank.
 
*Liest die Checksummen der Pakete aus der Datei FILE statt aus der Debian Datenbank.
 
==-r, --root=DIR==
 
==-r, --root=DIR==
−
*Ändert das Startverzeichnis von „/“ auf den angegebenen Wert.  
+
*Legt das Wurzelverzeichnis des zu prüfenden Systems fest (Standard /).
−
*Hiermit kann die Überprüfung der Checksummen auf Teilbereiche des Dateisystems eingegrenzt werden.
+
*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==
 
==-d, --admindir=DIR==
 
*Ändert das Admin-Verzeichnis für dpkg (normalerweise /var/lib/dpkg/) auf den angegebenen Wert.
 
*Ändert das Admin-Verzeichnis für dpkg (normalerweise /var/lib/dpkg/) auf den angegebenen Wert.
 
==-p, --deb-path=DIR[:DIR...]==
 
==-p, --deb-path=DIR[:DIR...]==
 
*Ändert das Suchverzeichnis für Debian Pakete.
 
*Ändert das Suchverzeichnis für Debian Pakete.
−
==-g, --generate=[all][,keep[,nocheck]]==
 
−
*Erzeugt fehlende Checksummen.
 
−
*[[debsum benutzen]]
 
  
 +
=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).
  
−
=Quelle=
+
=Quellen=
 
*https://debiananwenderhandbuch.de/debsums.html
 
*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).

Quellen