LUKS Encryption: Disk & Partition Encryption (Artikel 021)
Umfassender Guide zur Verschlüsselung von Festplatten und Partitionen mit LUKS. Einrichtung, Schlüsselverwaltung (Key Slots) und Automatisierung beim Bootvorgang via crypttab.
# LUKS Encryption: Datensicherheit auf physischer Ebene
TL;DR / Management Summary In einer Zeit, in der Server in gemieteten Rechenzentren (Colocation) stehen oder Laptops verloren gehen können, ist LUKS (Linux Unified Key Setup) der Goldstandard für “Data at Rest” Sicherheit. Es nutzt den Kernel-Treiber dm-crypt, um Daten transparent zu verschlüsseln. Wer LUKS beherrscht, kann einzelne Partitionen oder ganze Festplatten so absichern, dass sie ohne den korrekten Schlüssel (Passphrase oder Keyfile) absolut wertlos für Dritte sind.
# 1. Einführung & Architektur
Wo die Verschlüsselung sitzt.
LUKS liegt zwischen dem Block-Device (HDD/SSD) und dem Dateisystem (oder LVM). Der Kernel entschlüsselt Daten im RAM beim Lesen und verschlüsselt sie beim Schreiben.
# Der Crypto-Stack (Mermaid)
graph TD
A[Hardware: /dev/sdb] --> B[LUKS Header]
B --> C[dm-crypt Mapper: /dev/mapper/secret_data]
C --> D[LVM oder Filesystem]
D --> E[Datenzugriff]
# 2. Einrichtung: Partition verschlüsseln
Vom rohen Device zum sicheren Tresor.
# Schritt 1: LUKS Formatieren
Achtung: Alle bestehenden Daten auf dem Device gehen verloren!
sudo cryptsetup luksFormat /dev/sdb1
Sie werden aufgefordert, ein starkes Passwort einzugeben.
# Schritt 2: Device öffnen (Mapping)
Dies erstellt ein virtuelles Gerät unter /dev/mapper/.
sudo cryptsetup open /dev/sdb1 secure_storage
# Schritt 3: Dateisystem erstellen
Wir arbeiten nun mit dem “entschlüsselten” Device im Mapper.
sudo mkfs.ext4 /dev/mapper/secure_storage
sudo mount /dev/mapper/secure_storage /mnt/secret
# 3. Schlüsselverwaltung (Key Slots)
Mehr als nur ein Passwort.
LUKS hat bis zu 8 “Slots” für Schlüssel. Das bedeutet, man kann 8 verschiedene Passwörter oder Keyfiles für das gleiche Gerät vergeben.
# Passwort hinzufügen/ändern
# Fügt ein zweites Passwort hinzu
sudo cryptsetup luksAddKey /dev/sdb1
# Entfernt ein Passwort (Vorsicht: Nicht das letzte löschen!)
sudo cryptsetup luksRemoveKey /dev/sdb1
# Nutzung eines Keyfiles (für Automatisierung)
Ideal für Backup-Platten, die automatisch gemountet werden sollen.
# Keyfile generieren
dd if=/dev/urandom bs=512 count=4 of=/root/secret.key
chmod 400 /root/secret.key
# Keyfile dem LUKS Device hinzufügen
sudo cryptsetup luksAddKey /dev/sdb1 /root/secret.key
# 4. Day-2 Operations: Automatisches Entsperren
Die crypttab verstehen.
Damit ein verschlüsseltes Gerät beim Booten (oder beim Einstecken) automatisch erkannt wird, brauchen wir zwei Dateien:
# 1. /etc/crypttab
Hier wird definiert, welches Device wie entsperrt wird.
# Name Device-UUID Keyfile Options
secure_storage UUID=550e8400-e29b-... /root/secret.key luks
# 2. /etc/fstab
Hier wird das gemappte Device gemountet.
/dev/mapper/secure_storage /mnt/secret ext4 defaults 0 2
# 5. Troubleshooting & “War Stories”
Wenn der Tresor klemmt.
# Story 1: “Passwort vergessen, Keyfile verloren”
Symptom: Der Admin hat keinen Zugriff mehr auf das Volume.
Ursache: Menschliches Versagen.
Lösung: Es gibt keine. Ohne funktionierenden Key-Slot sind die Daten verloren. Lektion: Sichern Sie den LUKS-Header (cryptsetup luksHeaderBackup) und speichern Sie ihn zusammen mit dem Passwort an einem sicheren Ort (Passwortmanager/Safe).
# Story 2: “Boot-Hänger nach Kernel-Update”
Symptom: Der Server fragt beim Booten nicht mehr nach dem Passwort und bleibt hängen.
Ursache: Das Initramfs wurde ohne das cryptsetup Modul gebaut.
Lösung: Über ein Live-System booten, chroot (siehe Artikel 012), und das Initramfs neu bauen:
update-initramfs -u -k all
# 6. Sicherheit & Performance
- Algorithmen: Standard ist AES-XTS-PLAIN64. Das ist sicher und wird von fast allen modernen CPUs hardwarebeschleunigt (AES-NI).
- Performance-Check:
Dies zeigt Ihnen, wie schnell Ihre CPU verschlüsseln kann.cryptsetup benchmark - SSD Trim: LUKS blockiert standardmäßig TRIM (aus Sicherheitsgründen, um das Belegungsmuster zu verbergen). Wenn Performance wichtiger ist, nutzen Sie die Option
allow-discardsin dercrypttab.
# Anhang: Cheatsheet
| Aufgabe | Befehl |
|---|---|
| Status anzeigen | cryptsetup status secure_storage |
| LUKS Header Info | cryptsetup luksDump /dev/sdb1 |
| Device schließen | cryptsetup close secure_storage |
| Header Backup | cryptsetup luksHeaderBackup /dev/sdb1 --header-backup-file /path/to/backup |
| Passwort testen | cryptsetup -v open --test-passphrase /dev/sdb1 |
| Key-Slot löschen | cryptsetup luksKillSlot /dev/sdb1 1 |
| UUID finden | blkid /dev/sdb1 |