Winterferien waren eine gute Gelegenheit, Dinge zu erledigen, die viel zu lange aufgeschoben wurden. Eins davon war, die Festplattenverschlüsselung auf meinem Arbeitslaptop zu aktivieren.
Ich benutze Debian Linux, also war LUKS (Linux Unified Key Setup) eine offensichtliche Wahl.

Bild mit freundlicher Genehmigung von Linux.com
Der einfachste Weg, die Festplattenverschlüsselung zu aktivieren, ist (offensichtlich) während einer Systemneuinstallation, aber ich habe viel Zeit damit verbracht, eine komfortable Arbeitsumgebung einzurichten, also habe ich versucht (und es geschafft - Spoiler!), das bestehende System zu verschlüsseln.
Der Prozess basierte weitgehend auf dem ausgezeichneten Beitrag von William Desportes, aber da meine Erfahrung etwas anders war, habe ich mich entschieden, sie hier zu veröffentlichen.
Bevor es weitergeht
- Verwenden Sie nicht luksipc (LUKS In-place Conversion) - es ist ein veraltetes Werkzeug, und sogar der Autor empfiehlt, cryptsetup (Teil des Pakets mit demselben Namen) auf die neueste Version des Pakethandbuchs zu verwenden.
- Sichern Sie wichtige Dateien, bevor Sie fortfahren (Das ist offensichtlich, schadet aber nie, es zu wiederholen).
Die Zielmaschine vorbereiten
Notwendige Pakete installieren:
sudo apt install cryptsetup cryptsetup-initramfsFügen Sie die folgende Zeile zu /etc/default/grub hinzu:
GRUB_ENABLE_CRYPTODISK=yEin bootfähiges Gerät vorbereiten
Ich habe eine Xfce-Version aus dem Debian Live Repo genommen, aber Sie können jedes andere vernünftige moderne Live-CD-Image nehmen (Sie können eine Ubuntu Live-CD verwenden, um Debian zu verschlüsseln, oder umgekehrt, oder sogar ein RedHat-basiertes Image nehmen).
Das Verschlüsselungsskript vorbereiten
Speichern Sie das folgende Script als encryptdrive.sh auf einem anderen USB-Stick (Live-Images sind normalerweise schreibgeschützt), um das Tippen während der Nutzung von Debian Live zu vermeiden:
#!/bin/bash
set -euo pipefail
# Zum Debuggen/Überprüfen der Befehle auskommentieren
#set -x
# Eine bestehende Partition mit LUKS2 auf Debian 12 verschlüsseln
# HAFTUNGSAUSSCHLUSS: BENUTZEN AUF EIGENE GEFAHR UND MACHEN SIE BACKUPS
# Für meinen persönlichen Gebrauch gemacht und hat fast KEINE Fehlertests!!
# Basierend auf Anweisungen von:
# https://wiki.archlinux.org/index.php/dm-crypt/Device_encryption#Encrypt_an_existing_unencrypted_filesystem
DISK="${1:-}"
if [ -z "$DISK" ]; then
echo "Verwendung: $ /dev/sdXY"
exit 1
fi
# Führen Sie eine Überprüfung des Dateisystems durch
e2fsck -f "$DISK"
# Machen Sie das Dateisystem etwas kleiner, um Platz für den LUKS-Header zu schaffen
BLOCK_SIZE=`dumpe2fs -h $DISK | grep "Blockgröße" | cut -d ':' -f 2 | tr -d ' '`
BLOCK_COUNT=`dumpe2fs -h $DISK | grep "Blockanzahl" | cut -d ':' -f 2 | tr -d ' '`
SPACE_TO_FREE=$((1024 * 1024 * 32)) # 16MB sollten ausreichen, aber fügen Sie eine Sicherheitsmarge hinzu
NEW_BLOCK_COUNT=$(($BLOCK_COUNT - $SPACE_TO_FREE / $BLOCK_SIZE))
resize2fs -p "$DISK" "$NEW_BLOCK_COUNT"
# Führen Sie den Verschlüsselungsprozess durch
# MAN: https://man7.org/linux/man-pages/man8/cryptsetup-reencrypt.8.html
cryptsetup reencrypt --encrypt --reduce-device-size 16M "$DISK"
# Vergrößern Sie das Dateisystem, um den verbleibenden Platz auszufüllen (d.h. entfernen Sie die Sicherheitsmarge von früher)
cryptsetup open "$DISK" recrypt
resize2fs /dev/mapper/recrypt
cryptsetup close recrypt
# Vergessen Sie nicht, /etc/crypttab und /etc/fstab bei Bedarf zu aktualisieren!
#
# Beispiel:
/etc/crypttab
# crypt_root UUID=xxx none luks
# /etc/fstab
# /dev/mapper/crypt_root / ext4 errors=remount-ro 1
#
# Denken Sie daran, "update-initramfs -u -k all" nach dem Aktualisieren des rootfs crypttab auszuführenJetzt mit dem vorbereiteten Gerät in das Live-Debian booten, um das Mounten Ihrer Hauptdateisysteme zu überspringen
Schritte, die beim Booten in Debian Live durchgeführt werden müssen
Finden Sie die Partition(en), die Sie verschlüsseln möchten:
sudo fdisk -lAuf neueren Laptops mit SSDs lauten die Festplatt-Namen möglicherweise so etwas wie /dev/nvme, auf älteren /dev/sda, /dev/sdb etc.
Starten Sie die Verschlüsselung mit encrypdrive.sh, das zuvor gespeichert wurde
Bei mir war es /dev/nvmen1p2 (/dev/nvmen1p1 ist für die EFI-Partition reserviert). Ab jetzt nehmen wir an, dass dies auch bei Ihnen der Fall ist. Wenn Ihre Hauptpartition anders ist, ersetzen Sie einfach entsprechend den Gerätenamen)
sudo /bin/bash encryptdrive.sh /dev/nvmen1p2Dies wird einige Zeit in Anspruch nehmen, abhängig von der Geschwindigkeit Ihres Systems und der Größe der Festplatte
Wichtig: Wandeln Sie das Laufwerk in das LUKS1-Format um
GRUB unterstützt das LUKS2-Format nicht gut genug, daher ist es besser, bei der sichereren Version zu bleiben.
Diese Vorgänge sind viel schneller als die Verschlüsselung selbst, da sie nur den Verschlüsselungsheader ändern.
sudo cryptsetup luksConvertKey --pbkdf pbkdf2 /dev/nvmen1p2
sudo cryptsetup convert --type luks1 /dev/nvmen1p2Einstellungen zum Booten auf dem verschlüsselten Laufwerk anpassen:
export DEVICE_NAME="root_crypt"
cryptsetup open /dev/nvmen1p2 ${DEVICE_NAME}
mkdir /mnt/${DEVICE_NAME}
mount /dev/mapper/${DEVICE_NAME} /mnt/${DEVICE_NAME}
mount -t proc none /mnt/${DEVICE_NAME}/proc
mount -t sysfs none /mnt/${DEVIC-bind /dev /mnt/${DEVICE_NAME}/devChroot zum verschlüsselten Laufwerk
chroot /mnt/${DEVICE_NAME}Durchzuführende Schritte in der Chroot-Umgebung
- Wenn Sie eine EFI-Partition haben (/boot/efi), mounten Sie diese:
mount /dev/nvmen1p1 /boot/efi(prüfen Sie den Gerätenamen mitsudo fdisk -l) - Führen Sie
blkid -o value -s UUID2 aus und behalten Sie den Wert/dev/nvmen1p - Bearbeiten Sie
/etc/crypttabund fügen Sie die folgende Zeile hinzu:root_crypt UUID=none luks - Beispiel:
root_crypt UUID=24bfb42b-007d-4777-9889-46d3e016e60b none luks
- Beispiel:
- Re-installieren Sie grub
sudo grub-install /dev/nvme(wie William, bin ich mir nicht sicher, ob dieser Schritt erforderlich ist) - Update initramfs:
sudo update-initramfs -k all -u - Update des Bootloaders mit
sudo update-grub - Verlassen Sie das Chroot mit
exit
Abschließende Bereinigung
sudo umount /mnt/${DEVICE_NAME}/proc
sudo umount /mnt/${DEVICE_NAME}/sys
sudo umount /mnt/${DEVICE_NAME}/dev
sudo umount /mnt/${DEVICE_NAME}/boot/efi
sudo umount /mnt/${DEVICE_NAME}
sudo cryptsetup close ${DEVICE_NAME}
sudo rmdir -v /mnt/${DEVICE_NAME}Das sollte es gewesen sein. Sie sollten bereit sein, in eine sicherere Umgebung zu starten.
Viel Spaß!