LUKS – Verschlüsselte Datenfestplatte

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

LUKS – Verschlüsselte Datenfestplatte

LUKS (Linux Unified Key Setup) ist der Standard zur Festplattenverschlüsselung unter Linux. In diesem Artikel wird eine zweite Festplatte verschlüsselt eingebunden. Die Verschlüsselung erfolgt direkt auf der Partition – ohne LVM.

Szenario

  • Zweite Festplatte: /dev/sdb
  • Eine Partition: /dev/sdb1 (20 GB)
  • Mountpoint: /mnt/data
  • Einhängen beim Systemstart mit Passwortabfrage

Voraussetzungen

  • apt-get install cryptsetup plymouth

Partition anlegen

Falls /dev/sdb noch keine Partition hat:

  • fdisk /dev/sdb

Im fdisk-Dialog:

n   → neue Partition
p   → primär
1   → Nummer 1
    → Enter (Standard-Start)
    → Enter (Standard-Ende, gesamte Disk)
w   → schreiben und beenden

Ergebnis prüfen:

  • fdisk -l /dev/sdb
Device     Boot Start      End  Sectors Size Id Type
/dev/sdb1        2048 33556479 33554432  16G 83 Linux

LUKS-Container erstellen

  • cryptsetup luksFormat -c aes-xts-plain64 -s 512 -h sha512 /dev/sdb1
WARNING!
========
This will overwrite data on /dev/sdb1 irrevocably.

Are you sure? (Type uppercase yes): YES
Enter passphrase for /dev/sdb1:
Verify passphrase:
Option Bedeutung
aes-xts-plain64 AES-Verschlüsselung im XTS-Modus (Standard für Blockgeräte)
-s 512 Schlüssellänge 512 Bit (ergibt effektiv AES-256)
-h sha512 SHA-512 zur Schlüsselableitung aus dem Passwort

LUKS-Container öffnen

  • cryptsetup open /dev/sdb1 crypt-data
Enter passphrase for /dev/sdb1:

Der Container ist jetzt unter /dev/mapper/cryptdata verfügbar.

Dateisystem erstellen

  • mkfs.ext4 /dev/mapper/cryptdata

Mountpoint erstellen

  • mkdir /mnt/data

Manuell einhängen (Test)

  • mount /dev/mapper/crypt-data /mnt/data
  • df -h /mnt/data
Filesystem                Size  Used Avail Use% Mounted on
/dev/mapper/crypt-data    16G   28M   15G   1% /mnt/data

Zum Testen wieder aushängen:

  • umount /mnt/data
  • cryptsetup close crypt-data

Automatisch einhängen beim Systemstart

UUID ermitteln

  • blkid /dev/sdb1
/dev/sdb1: UUID="ed724c90-84e3-4236-8417-4fd34c760bdb" TYPE="crypto_LUKS"

/etc/crypttab

  • Eintragen des LUKS-Container ein, damit er beim Booten geöffnet wird:
echo crypt-data UUID=ed724c90-84e3-4236-8417-4fd34c760bdb none luks >> /etc/cryptab
Feld Bedeutung
crypt-data Name des Mappers unter /dev/mapper/
UUID=... UUID der verschlüsselten Partition
none Passwort wird interaktiv beim Boot abgefragt
luks Format-Typ

/etc/fstab

Hängt das Dateisystem nach dem Öffnen ein:

/dev/mapper/cryptdata   /mnt/data   ext4   defaults   0 2

Systemstart

Beim nächsten Booten erscheint eine Passwortabfrage für /dev/sdb1. Nach korrekter Eingabe wird /mnt/data automatisch eingehängt.

Datei:Luks-boot.png

Ergebnis prüfen

  • df -h /mnt/data
Filesystem                Size  Used Avail Use% Mounted on
/dev/mapper/cryptdata    16G   28M   15G   1% /mnt/data
  • cryptsetup status crypt-data
/dev/mapper/cryptdata is active and is in use.
  type:    LUKS2
  cipher:  aes-xts-plain64
  keysize: 512 bits
  key location: keyring
  device:  /dev/sdb1

Nützliche Befehle

Befehl Bedeutung
cryptsetup luksDump /dev/sdb1 LUKS-Header anzeigen (Slots, Algorithmen)
cryptsetup luksAddKey /dev/sdb1 Weiteres Passwort hinzufügen (bis zu 8 Slots)
cryptsetup luksChangeKey /dev/sdb1 Passwort ändern
cryptsetup open /dev/sdb1 crypt-data Container manuell öffnen
cryptsetup close crypt-data Container manuell schließen

Links