Benutzer-Werkzeuge

Webseiten-Werkzeuge


linux:allgemein:system:dm-crypt_mit_luks

dm-crypt mit LUKS

Einführung

Der Linux-Devicemapper ist eine Softwareschicht, die man zwischen der Dateisystemebene und den darunterliegenden Geräten und Partitionen einschieben kann. Er kann nicht nur für Verschlüsselung verwendet werden, sondern bildet auch die Grundlage für DM-RAID und den Logical Volume Manager (LVM)

Der Devicemapper verknüpft vorhandene Partitionen mit virtuellen Blockgeräten. Im Betrieb, zum Beispiel beim Mounten, greift man nun auf die virtuellen Geräte zu, alle Zugriffe auf diese werden dann durch den Devicemapper geschleust. Bei dm-crypt findet an dieser Stelle die Verschlüsselung und Entschlüsselung statt. Beim Erstellen der Verknüpfung zu einer verschlüsselten Partition wird das Passwort oder der Schlüssel angegeben. Diesen behält der Devicemapper im Speicher und kann so ohne weiteren Eingriff alle Zugriffe abwickeln bis die Partition wieder gesperrt oder das System neu gestartet wird.

LUKS (das Linux Unified Key Setup) ist eine Erweiterung für verschlüsselte Partitionen, die einen Nachteil älteren Methoden zur Plattenverschlüsselung wie cryptoloop beseitigt: Bei LUKS kann man das Passwort oder den Schlüssel der Partition ändern, ohne die Partition neu zu verschlüsseln. Zudem kann man mehrere gleichberechtigte Passwörter und Schlüssel für eine Partition verwenden. [1]

Benötigte Pakete

Benötigt wird:

  • cryptsetup
  • cryptmount (optional)

Vorbereitungen

Am sichersten ist es die zu verschlüsselnde Partition vorher mit Zufallswerten zu überschreiben. Dies erschwert später von außen Rückschlüsse auf die Verschlüsselung ziehen zu können. Hier wird urandom als Quelle benutzt. Der Befehl läuft solange, bis die Partition voll ist.

# dd if=/dev/urandom of=/dev/sdaX bs=10M

Verschlüsselung einrichten

Nachdem die Partition vorbereitet wurde muss sie nun über cryptsetup initialisiert werden. Der Standard key-size (-s) ist 256 (Stand 2021).

# cryptsetup -c aes-xts-plain -s 512 luksFormat <Gerät>
bzw.
# cryptsetup -s 512 luksFormat --type luks2 /dev/sdc2

cryptsetup fragt nach einem Passwort für die Partition, welches insgesamt dreimal eingegeben werden muss. Abschließend entsperrt es die Partition, legt ein ext3-Dateisystem an und sperrt sie dann wieder. Damit ist die Verschlüsselung eingerichtet und kann verwendet werden.

Weitere Passphrase hinzufügen:

cryptsetup luksAddKey /dev/sdaX

Verschlüsseltes LVM mit mehreren Partitionen in einer Volume Group einrichten

# pvcreate /dev/mapper/cryptsda2
# vgcreate Magrathea /dev/mapper/cryptsda2
# lvcreate -n Wurzel -L 40G Magrathea
# lvcreate -n Swap -L 8G Magrathea
# lvcreate -n Home -L 80G Magrathea
# lvcreate -n Daten -L 2G Magrathea
# mkfs.ext4 /dev/Magrathea/Wurzel
# mkfs.ext4 /dev/Magrathea/Home
# mkfs.ext4 /dev/Magrathea/Daten
# mkswap /dev/Magrathea/Swap

Volume Group umbenennen

# vgrename <alter Name> <neuer Name>

Informationen zur Verschlüsselung

# cryptsetup luksDump /dev/sda2

Partition benutzen

Manuell

Einzelne Partition

Die Partition wird manuell folgendermaßen mit cryptsetup entschlüsselt

# cryptsetup luksOpen /dev/sdaX sdaX_crypt

Nach Eingabe des Schlüssels werden alle Aufrufe von /dev/mapper/sdaX_crypt durch den device-mapper geleitet. Daher kann sie wie gewohnt eingehängt werden.

# mount /dev/mapper/sdaX_crypt /mnt/custom

Nach der Benutzung wird sie mit

# umount /mnt/custom

ausgehangen und mit

# cryptsetup luksClose /dev/mapper/sdaX_crypt

wieder gesperrt.

Verschlüsseltes LVM mit mehreren Partitionen in einer Volume Group benutzen

  • Entschlüsseln des Laufwerks:
# cryptsetup luksOpen /dev/sdaX sdaX_crypt
  • Bekanntmachen der Volume_Group:
# vgchange -a y NAME_VOLUME_GROUP
  • Einhängen der Partitionen nach Bedarf:
# mount /dev/mapper/VOLUME_GROUP-NAME /mnt/backup

Einbinden mit crypttab automatisieren

Auf die oben beschriebene Art und Weise kann man die verschlüsselten Partitionen von Hand aktivieren und deaktivieren. Auf die Dauer ist das aber sehr lästig. cryptsetup sieht allerdings eine Möglichkeit vor, Partitionen automatisch beim Hochfahren des Systems zu entsperren. Dazu trägt man diese in der Datei /etc/crypttab ein. Folgende Informationen können dort eingetragen werden:

  • Der Name der Device-Mapper-Verknüpfung, hier also sdaX_crypt
  • Der Name der verschlüsselten Partition, hier /dev/sdaX
  • Der Pfad zu einer Schlüsseldatei, oder bei Verwendung eines Passwortes stattdessen „none“
  • Angaben über die verwendete Verschlüsselung - da diese Informationen bei LUKS im Anfangsbereich der Partition gespeichert werden in diesem Fall einfach nur luks

Die komplette Zeile für das oben genannte Beispiel würde also so aussehen:

# <target name> <source device>  <key file> <options> 
     sdaX_crypt         /dev/sdaX           none         luks

Beim nächsten Neustart des Systems wird cryptsetup automatisch die Partition entsperren und dabei nach dem Passwort fragen. Um die Partition beim Systemstart automatisch einzuhängen muss nur noch ein Eintrag in der /etc/fstab angelegt werden, zum Beispiel: /dev/mapper/sdaX_crypt /mnt ext3 auto,defaults 0 0

Quellen

linux/allgemein/system/dm-crypt_mit_luks.txt · Zuletzt geändert: 07.05.2021 07:17 von marc