LUKS (Linux Unified Key Setup) ist der Standard für Festplattenverschlüsselung unter Linux. Es baut auf dm-crypt auf und bietet ein standardisiertes On-Disk-Format, mehrere Passphrasen pro Volume und sicheres Schlüsselmanagement. Ob Sie eine Datenpartition auf einem Server verschlüsseln, eine Laptop-Festplatte sichern oder Compliance-Anforderungen für ruhende Daten erfüllen müssen – LUKS ist das Werkzeug, das jeder Linux-Administrator kennen sollte.
Dieser Leitfaden behandelt das Verschlüsseln von Partitionen mit LUKS2, das Verwalten von Keyslots, das Konfigurieren des automatischen Entsperrens beim Booten und das Beheben häufiger Probleme.
Voraussetzungen
- Linux-System mit Kernel 4.12+ (für LUKS2- und Argon2id-Unterstützung)
cryptsetup2.0+ installiert- Root- oder sudo-Zugriff
- Eine freie Partition oder Festplatte zum Verschlüsseln (LUKS-Formatierung ist destruktiv)
- Backup aller Daten auf dem Zielgerät
LUKS vs. andere Linux-Verschlüsselungsoptionen
Bevor wir einsteigen, hier ein Vergleich von LUKS mit Alternativen:
| Feature | LUKS/dm-crypt | eCryptfs | fscrypt | VeraCrypt |
|---|---|---|---|---|
| Umfang | Komplette Partition/Festplatte | Pro Verzeichnis | Pro Verzeichnis | Komplette Partition/Container |
| Performance | Nahezu nativ (AES-NI) | Langsamer (gestapeltes FS) | Nahezu nativ | Nahezu nativ |
| Schlüsselverwaltung | Bis zu 32 Keyslots | Pro-User-Wrapping | Pro-Verzeichnis-Schlüssel | Einzelnes Passwort |
| Boot-Verschlüsselung | Ja (mit initramfs) | Nein | Nein | Ja (eigener Bootloader) |
| Standard unter Linux | Ja (Standard) | Veraltet | Nur Ext4/F2FS | Plattformübergreifend |
LUKS ist die richtige Wahl für Server-Partitionen, vollständige Festplattenverschlüsselung und jedes Szenario, in dem Sie mehrere Entsperrmethoden benötigen (Passphrase + Schlüsseldatei + Wiederherstellungsschlüssel).
Eine Partition mit LUKS2 verschlüsseln
Schritt 1: Zielgerät identifizieren
lsblk -f
NAME FSTYPE SIZE MOUNTPOINT
sda 100G
├─sda1 ext4 50G /
├─sda2 swap 4G [SWAP]
└─sda3 46G
In diesem Beispiel ist /dev/sda3 die unformatierte Partition, die wir verschlüsseln werden. Überprüfen Sie den Gerätenamen doppelt — luksFormat wird alle Daten darauf zerstören.
Schritt 2: cryptsetup installieren
Unter Debian/Ubuntu:
sudo apt update && sudo apt install -y cryptsetup
Unter RHEL/Fedora/AlmaLinux:
sudo dnf install -y cryptsetup
Überprüfen Sie, ob die Version LUKS2 unterstützt:
cryptsetup --version
Sie benötigen Version 2.0.0 oder höher. Jede moderne Distribution ab 2018 enthält diese.
Schritt 3: LUKS-Verschlüsselung initialisieren
sudo cryptsetup luksFormat --type luks2 /dev/sda3
Sie sehen eine Bestätigungsaufforderung und werden aufgefordert, eine Passphrase festzulegen:
WARNING: Device /dev/sda3 already contains a 'ext4' superblock signature.
WARNING!
========
This will overwrite data on /dev/sda3 irrevocably.
Are you sure? (Type 'yes' in capital letters): YES
Enter passphrase for /dev/sda3:
Verify passphrase:
Wählen Sie eine starke Passphrase. Dies ist Ihre primäre Entsperrmethode. Wenn Sie sie verlieren und keinen Backup-Keyslot haben, sind die Daten verloren – das ist der Zweck der Verschlüsselung.
Was luksFormat unter der Haube macht:
- Schreibt einen LUKS2-Header (standardmäßig 16 MB) an den Anfang der Partition
- Generiert einen zufälligen Master-Schlüssel (standardmäßig 256-Bit AES)
- Verschlüsselt den Master-Schlüssel mit Ihrer Passphrase unter Verwendung der Argon2id-Schlüsselableitung
- Speichert den verschlüsselten Master-Schlüssel in Keyslot 0
Schritt 4: Das verschlüsselte Volume öffnen
sudo cryptsetup open /dev/sda3 data_crypt
Dies fordert Ihre Passphrase an und erstellt dann /dev/mapper/data_crypt — ein virtuelles Blockgerät, das alle I/O transparent ver-/entschlüsselt.
Überprüfen Sie, ob es geöffnet ist:
ls -la /dev/mapper/data_crypt
Schritt 5: Ein Dateisystem erstellen und mounten
sudo mkfs.ext4 /dev/mapper/data_crypt
sudo mkdir -p /mnt/encrypted
sudo mount /dev/mapper/data_crypt /mnt/encrypted
Testen Sie es:
echo "Encryption works" | sudo tee /mnt/encrypted/test.txt
cat /mnt/encrypted/test.txt
Die Daten sind jetzt im Ruhezustand verschlüsselt. Jeder, der die Festplatte ohne die Passphrase entfernt, sieht nur zufällige Bytes.
LUKS-Keyslots verwalten
LUKS2 unterstützt bis zu 32 Keyslots. Jeder Keyslot enthält eine unabhängig verschlüsselte Kopie des Master-Schlüssels. Das bedeutet, Sie können mehrere Passphrasen, Schlüsseldateien oder Wiederherstellungsschlüssel haben – alle öffnen dasselbe Volume.
Eine Backup-Passphrase hinzufügen
sudo cryptsetup luksAddKey /dev/sda3
Sie geben zuerst die bestehende Passphrase ein, dann die neue. Diese geht in den nächsten verfügbaren Keyslot.
Eine Schlüsseldatei hinzufügen
Schlüsseldateien ermöglichen automatisches Entsperren (Skripte, Boot-Sequenzen) ohne Eingabe einer Passphrase:
sudo dd if=/dev/urandom of=/root/luks-keyfile bs=4096 count=1
sudo chmod 400 /root/luks-keyfile
sudo cryptsetup luksAddKey /dev/sda3 /root/luks-keyfile
Speichern Sie Schlüsseldateien sicher. Wenn sich die Schlüsseldatei auf derselben unverschlüsselten Festplatte befindet, macht das den Zweck zunichte. Bewahren Sie sie auf einer separaten verschlüsselten Root-Partition oder einem Hardware-Token auf.
Keyslots auflisten
sudo cryptsetup luksDump /dev/sda3 | grep -A5 "Keyslots:"
Für eine übersichtlichere Ansicht:
sudo cryptsetup luksDump /dev/sda3 | grep "Key Slot"
Einen Keyslot entfernen
sudo cryptsetup luksRemoveKey /dev/sda3
Geben Sie die Passphrase ein, die Sie entfernen möchten. Oder entfernen Sie nach Slot-Nummer:
sudo cryptsetup luksKillSlot /dev/sda3 1
Entfernen Sie niemals alle Keyslots. Wenn Sie den letzten entfernen, wird das Volume dauerhaft unzugänglich. cryptsetup wird Sie warnen, aber verlassen Sie sich nicht darauf.
LUKS beim Booten automatisch entsperren
Für Server-Partitionen, die automatisch gemountet werden müssen, haben Sie zwei Optionen:
Option A: Schlüsseldatei auf Root-Partition
Dies funktioniert, wenn die Root-Partition bereits verschlüsselt ist (oder eine vertrauenswürdige Boot-Festplatte ist) und Sie möchten, dass sekundäre Partitionen ohne Passphrase-Aufforderung entsperrt werden.
- Erstellen Sie die Schlüsseldatei (falls noch nicht geschehen):
sudo dd if=/dev/urandom of=/root/luks-keyfile bs=4096 count=1
sudo chmod 400 /root/luks-keyfile
sudo cryptsetup luksAddKey /dev/sda3 /root/luks-keyfile
- Ermitteln Sie die UUID der LUKS-Partition:
sudo blkid /dev/sda3
/dev/sda3: UUID="a1b2c3d4-e5f6-7890-abcd-ef1234567890" TYPE="crypto_LUKS"
- Zu
/etc/crypttabhinzufügen:
echo 'data_crypt UUID=a1b2c3d4-e5f6-7890-abcd-ef1234567890 /root/luks-keyfile luks' | sudo tee -a /etc/crypttab
- Zu
/etc/fstabhinzufügen:
echo '/dev/mapper/data_crypt /mnt/encrypted ext4 defaults 0 2' | sudo tee -a /etc/fstab
- Die initramfs neu erstellen:
Unter Debian/Ubuntu:
sudo update-initramfs -u
Unter RHEL/Fedora:
sudo dracut -f
Option B: Passphrase-Aufforderung beim Booten
Wenn Sie die Sicherheit benötigen, bei jedem Booten eine Passphrase einzugeben, fügen Sie nur dies zu /etc/crypttab hinzu:
echo 'data_crypt UUID=a1b2c3d4-e5f6-7890-abcd-ef1234567890 none luks' | sudo tee -a /etc/crypttab
Das Schlüsselwort none weist das System an, während des Bootens zur Eingabe einer Passphrase aufzufordern. Dies ist die Standardeinstellung für verschlüsselte Root-Partitionen.
Zustand des LUKS-Volumes überprüfen
Volume-Details anzeigen
sudo cryptsetup luksDump /dev/sda3
Dies zeigt die LUKS-Version, Cipher, Hash, Keyslots und Header-Größe an. Nützlich zur Überprüfung der Verschlüsselungsparameter.
Verschlüsselungs-Performance benchmarken
cryptsetup benchmark
# Tests are approximate using memory only (no storage IO).
PBKDF2-sha256 1547453 iterations per second for 256-bit key
PBKDF2-sha512 987231 iterations per second for 256-bit key
Argon2id 8 iterations, 1048576 memory per thread for 256-bit key
# Algorithm | Key | Encryption | Decryption
aes-xts 256b 3512.0 MiB/s 3498.7 MiB/s
aes-xts 512b 2845.3 MiB/s 2830.1 MiB/s
Mit AES-NI-Hardware-Beschleunigung (auf jeder modernen x86-CPU vorhanden) sehen Sie einen Durchsatz von 2-3 GB/s — Verschlüsselung fügt vernachlässigbaren Overhead hinzu.
Den LUKS-Header sichern
Wenn der LUKS-Header beschädigt ist (defekte Sektoren, versehentliches Überschreiben), verlieren Sie den Zugriff auf das gesamte Volume. Sichern Sie ihn immer:
sudo cryptsetup luksHeaderBackup /dev/sda3 --header-backup-file /root/sda3-luks-header.bak
Speichern Sie diese Sicherung außerhalb des Systems — auf einem USB-Laufwerk, einer sicheren Netzwerkfreigabe oder in einem Tresor. Jeder mit dem Header-Backup und einer gültigen Passphrase kann das Volume entschlüsseln.
Bei Bedarf wiederherstellen:
sudo cryptsetup luksHeaderRestore /dev/sda3 --header-backup-file /root/sda3-luks-header.bak
Schließen und Aushängen
Wenn Sie fertig sind, hängen Sie das Volume sauber aus und schließen Sie es:
sudo umount /mnt/encrypted
sudo cryptsetup close data_crypt
Die Partition ist jetzt gesperrt. Die Daten auf /dev/sda3 sind unzugänglich, bis Sie sie erneut mit der richtigen Passphrase oder Schlüsseldatei öffnen.
Fehlerbehebung
“Device /dev/sda3 is in use” beim Formatierungsversuch: Die Partition ist gemountet oder wird von einem anderen Prozess gehalten. Führen Sie lsof /dev/sda3 oder fuser -mv /dev/sda3 aus, um herauszufinden, was sie verwendet.
Boot hängt beim Warten auf Passphrase: Wenn Sie ein LUKS-Volume zu /etc/crypttab ohne Schlüsseldatei hinzugefügt haben und das Volume nicht kritisch ist, fügen Sie nofail zu den Optionen hinzu: data_crypt UUID=... none luks,nofail. Dies lässt den Boot nach einem Timeout fortfahren.
“No key available with this passphrase”: Entweder falsche Passphrase oder der Keyslot wurde entfernt. Probieren Sie alle Passphrasen aus, die Sie festgelegt haben. Wenn keine funktioniert, stellen Sie von einem Header-Backup wieder her.
Langsames luksFormat auf großen Festplatten: Die Formatierung selbst ist schnell (schreibt nur den Header). Aber wenn Sie die Partition zuerst sicher löschen möchten, führen Sie sudo cryptsetup open --type plain /dev/sda3 wipe && sudo dd if=/dev/zero of=/dev/mapper/wipe bs=1M status=progress && sudo cryptsetup close wipe vor der Formatierung aus.
Kann verschlüsselte Partition nicht vergrößern: Schließen Sie zuerst das Volume, verwenden Sie dann cryptsetup resize nach dem Vergrößern der zugrunde liegenden Partition mit parted oder fdisk.
Zusammenfassung
- LUKS2 ist der Linux-Standard für Festplattenverschlüsselung — verwenden Sie
cryptsetup luksFormat --type luks2, um jede Partition zu verschlüsseln - Die Verschlüsselung ist transparent: einmal mit
cryptsetup opengeöffnet, werden alle Lese- und Schreibvorgänge automatisch ver-/entschlüsselt - LUKS unterstützt bis zu 32 Keyslots — verwenden Sie mehrere Passphrasen und Schlüsseldateien für Flexibilität und Wiederherstellung
- Automatisches Entsperren beim Booten über
/etc/crypttabmit einer Schlüsseldatei, die auf einer verschlüsselten Root-Partition gespeichert ist - Sichern Sie immer den LUKS-Header mit
luksHeaderBackup— Header-Beschädigung bedeutet totalen Datenverlust - Performance-Overhead ist auf modernen CPUs mit AES-NI-Hardware-Beschleunigung vernachlässigbar
- Sie können eine Partition nicht in-place verschlüsseln — sichern Sie immer Daten, bevor Sie
luksFormatausführen
SSL-Zertifikate mit Let’s Encrypt und Certbot automatisieren | UFW-Firewall auf Ubuntu Server konfigurieren | Restic-Backups zu verschlüsseltem Cloud-Speicher