In diesem Beitrag zeigen wir, wie du deine gesamte Root-Partition in Debian GNU/Linux nachträglich verschlüsseln kannst, indem du eine Live-CD wie SystemRescue einsetzt. Wir nutzen rsync, um das Root-Verzeichnis zu sichern und cryptsetup, um die Verschlüsselung einzurichten. Die separaten Partitionen /boot und /boot/efi bleiben dabei weiterhin unverschlüsselt. Wir passen die Konfiguration in /etc/fstab und /etc/crypttab sowie /etc/cryptsetup-initramfs/conf-hook an. Abschließend aktualisieren wir den Grub-Bootloader sowie Kernel via chroot, sodass automatisch eine Passwortabfrage für die Entschlüsselung der Root-Partition beim Starten von Debian erscheint.
Vorbereitungen
Überprüfe, ob die Anwendung "cryptsetup" installiert ist:
Die meisten neuen Distributionen haben cryptsetup und cryptsetup-initramfs bereits vorinstalliert. Bitte überprüfe dies mit deinem aktuellen Betriebssystem.
SystemRescue herunterladen und bootfähig machen:
Lade SystemRescue von der offiziellen Website herunter und erstelle ein bootfähiges Medium (USB-Stick oder CD).
Backup erstellen:
Stelle sicher, dass du ein vollständiges Backup aller wichtigen Daten hast. Beispielsweise mit Clonezilla via SystemRescue.
Überprüfe, ob die Boot- und EFI-Verzeichnisse ihre eigenen Partitionen haben:
Wir gehen davon aus, dass du das Betriebssystem mit Grub via EFI startest.
Wenn die Verzeichnisse /boot und /boot/efi nicht bereits ihre eigenen unverschlüsselten Partitionen haben, sollte dies vorher mit GParted via SystemRescue eingerichtet werden. Kurzgesagt: Nach der Partitionierung mit GParted die Datei /etc/fstab anpassen und via grub-update den GRUB-Bootloader aktualisieren. Hierzu gibt es reichlich Anleitung im Web.
Anleitung
1. Booten von der SystemRescue-Live-CD
Starte deinen Computer von der SystemRescue-Live-CD.
2. Sichern des Root-Verzeichnisses
Verbinde ein externes Speichermedium, um dein Root-Verzeichnis zu sichern.
Finde heraus, welche Gerätebezeichnung das Root-Verzeichnis und das externe Speichermedium hat:
lsblksdX 259:5 0 500G 0 disk
├─sdXX 259:6 0 50G 0 part # Root-Verzeichnis
├─sdX2 259:7 0 1G 0 part # EFI-Verzeichnis
├─sdX3 259:8 0 1G 0 part # Boot-Verzerchnis
└─sdXY 259:9 0 448G 0 part
sdX 259:5 0 500G 0 disk
└─sdXZ 259:10 0 500G 0 part # Externes Speichermedium
Führe die folgenden Schritte im Terminal der Live-Umgebung aus:
mkdir /mnt/original_root mount /dev/sdXX /mnt/original_root # Ersetze sdXY durch das Quellmedium mkdir /mnt/backup_root mount /dev/sdXZ /mnt/backup_root # Ersetze sdXZ durch das Zielmedium rsync -aX /mnt/original_root/ /mnt/backup_root/ umount /mnt/original_root
3. Einrichten der Verschlüsselung auf der Root-Partition
Aus Konformitätsgründen überschreiben wir direkt die Daten der originalen Root-Partition. Überprüfe, dass du eine wiederherstellbare Sicherung hast!
Ersetze /dev/sdXY mit dem korrekten Gerätenamen deiner Home-Partition.
- Verschlüsselung einrichten:
cryptsetup luksFormat /dev/sdXX cryptsetup open /dev/sdXX encrypted_root
- Dateisystem erstellen:
mkfs.ext4 /dev/mapper/encrypted_root
4. Rücksicherung des Root-Verzeichnisses
- Neue Partition einhängen:
mkdir /mnt/new_root mount /dev/mapper/encrypted_root /mnt/new_root
- Daten zurückkopieren:
rsync -aX /mnt/backup_root/ /mnt/new_root/ umount /mnt/new_root cryptsetup close encrypted_root
5. Anpassen von /etc/crypttab und /etc/fstab
Beim Startvorgang wird /etc/crypttab zuerst gelesen und entsprechend die Entschlüsselung eingeleitet, danach wird die entschlüsselte Partition durch /etc/fstab mit dem Betriebssystem eingebunden.
- Root-Partition einhängen, worin die Konfigurationsdateien /etc/crypttab und /etc/fstab vorhanden sind:
mkdir /mnt/root mount /dev/sdXX /mnt/root # Ersetze sdXX durch die Root-Partition
- UUID der Root-Partition herausfinden:
blkid /dev/sdXX
/dev/sdXX: UUID="123e4567-e89b-12d3-a456-426614174000" TYPE="ext4" - Eintrag in /etc/crypttab hinzufügen:
Öffne die Datei mit einem Editor:nano /mnt/root/etc/crypttab
Füge folgende Zeile hinzu:encrypted_root UUID=123e4567-e89b-12d3-a456-426614174000 none luks
- Eintrag in /etc/fstab hinzufügen:
Öffne die Datei mit einem Editor:nano /mnt/root/etc/fstab
Finde die Zeile, welche das Root-Verzeichnis erwähnt und ändere diese:/dev/mapper/encrypted_root / ext4 defaults 0 2
6. Grub-Bootloader und Kernel anpassen
-
Boot-Partition einhängen:
Erstelle das Boot-Verzeichnis im Root-Verzeichnis, falls nicht vorhanden und hänge die Boot-Partition ein:mkdir /mnt/root/boot mount /dev/sdX3 /mnt/root/boot # Ersetze sdX3 mit der tatsächlichen Boot-Partition
-
EFI-Partition einhängen:
Erstelle das EFI-Verzeichnis innerhalb des Boot-Verzeichnisses, falls nicht vorhanden und hänge die EFI-Partition ein:mkdir /mnt/root/boot/efi mount /dev/sdX2 /mnt/root/boot/efi # Ersetze sdX2 mit der tatsächlichen EFI-Partition
- Bearbeite die Kernel-Konfigurationsdatei, mit welcher die automatische Passwortabfrage beim initiieren des Kernels ermöglicht wird.
nano /mnt/root/etc/cryptsetup-initramfs/conf-hook
Suche nach der Zeile #ASKPASS=y und entferne den Kommentar (#), um sicherzustellen, dass sie wie folgt aussieht:ASKPASS=y
- Binde die notwendigen Systemverzeichnisse ein, um einen chroot-Zugriff zu ermöglichen:
mount --bind /sys /mnt/root/sys mount --bind /proc /mnt/root/proc mount --bind /dev /mnt/root/dev
- In das Root-Dateisystem wechseln:
chroot /mnt/root
-
Kernel und Grub aktualisieren:
update-initramfs -u -k all update-grub
-
Gegebenenfalls den GRUB-Bootloader auf der Festplatte neuinstallieren:
grub-install /dev/sdX # Ersetze sdX mit der Gerätebezeichnung der gesamten Festplatte, nicht die Partition.
-
Gegenprüfen der UUID in der GRUB-Konfiguration:
Öffne die Datei /boot/efi/EFI/grub/grub.cfg und stelle sicher, dass die korrekte UUID der Root-Partition eingetragen ist. Anschließend die chroot-Umgebung schließen.exit
7. Erstellen eines Header-Backups mit cryptsetup
Im Falle von Problemen mit deiner verschlüsselten Partition solltest du ein Backup des Headers erstellen. Dies kann helfen, Datenverluste zu vermeiden.
Header-Backup mit cryptsetup anlegen:
Verwende den folgenden Befehl, um das Header-Backup zu erstellen. Ersetze /dev/sdXX durch deine tatsächliche verschlüsselte Partition und passe den Pfad der Backup-Datei entsprechend an:
cryptsetup luksHeaderBackup /dev/sdXX --header-backup-file luks-header-backup.bin
8. Neustart
Entferne die Live-CD und starte neu:
reboot
Wenn alles korrekt eingerichtet ist, sollte das System automatisch die verschlüsselte Partition mit einer Passwortabfrage öffnen und Root bereitstellen.
Nachträgliche Verschlüsselung der gesamten Root-Partition via Grub und EFI in Debian GNU/Linux