linux-ubuntu-debian security encryption luks dm-crypt

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:
    cryptsetup benchmark
    Dies zeigt Ihnen, wie schnell Ihre CPU verschlüsseln kann.
  • SSD Trim: LUKS blockiert standardmäßig TRIM (aus Sicherheitsgründen, um das Belegungsmuster zu verbergen). Wenn Performance wichtiger ist, nutzen Sie die Option allow-discards in der crypttab.

# 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