Cryptsetup mit systemd und Schlüssel auf externem USB-Stick
Baustelle: Dieser Artikel ist eine Baustelle. Das heißt, jemand hat sich dieses Artikels angenommen und überarbeitet ihn gerade. |
Review: Dieser Artikel ist für das Review freigegeben.
|
Wenn du dein System mit Cryptsetup verschlüsselt und den Key auf einem externen USB-Speicherstick hast, der beim Booten eingesteckt sein muss, damit dein System automatisch entschlüsselt werden kann, dann bist du hier richtig.
Einführung
Folgende Anleitung funktionierte bis vor systemd viele Jahre ausgezeichnet: Entschlüsseln mit Key auf USB-Stick - wiki.ubuntuusers.de Seit systemd fällt diese Anleitung aber am keyscript, welches systemd nicht unterstützt.
Allgemeines
systemd arbeitet mit unit-Files, welche teilweise durch Parsen von Konfigurationsfiles erstellt werden. Mit diesen unit-Files arbeiten wir hier und verändern diese, wie auch die Konfigurationsfiles /etc/fstab und /etc/crypttab
Installation
Du legst deine verschlüsselten Partitionen und auch den Key auf dem externen USB-Speicherstick genauso wie im oben genannten Wiki-Artikel auf wiki.ubuntuusers.de an. Allerdings geht es ab (inklusive) dem Punkt "Anlegen der nötigen Konfigurationsdateien" hier anders weiter.
Konfiguration
Die id des USB-Sticks, auf dem du den Schlüssel abgelegt hast, ermittelst du mit diesem Befehl. (Dazu musst du wissen, welches Gerät dem Stick zugewiesen wurde. Hier ist es /dev/sdb)
user@debian:~$ ls -l /dev/disk/by-id/
lrwxrwxrwx 1 root root 9 2011-12-20 21:36 usb-XyzFlash_XYZDFGHIJK_XXYYZZ00AA-0:0 -> ../../sdb
lrwxrwxrwx 1 root root 10 2011-12-20 21:36 usb-XyzFlash_XYZDFGHIJK_XXYYZZ00AA-0:0-part1 -> ../../sdb1
Anpassen von /etc/crypttab
Der wesentliche Unterschied zur oben genannten Anleitung findet sich in der crypttab. Diese muss nun folgendermaßen angepasst werden:
# <target name> <syntaxhighlight device> <key file> <options> lvm UUID=xxYYzz0011-xyz4-1x2y-xxxx-xyxyxyxyxyxyzzz /dev/disk/by-id/usb-XyzFlash_XYZDFGHIJK_XXYYZZ00AA-0:0 luks,tries=3,keyfile-size=2048,keyfile-offset=512
Besonderheiten
Mit diesen Angaben wird das selbe erreicht wie im ubuntuusers-Artikel. Nur hier müssen direkt die Bytes angegeben werden, da systemd offenbar nicht mit dd arbeitet.
Das Offset beträgt 512 Byte (entspricht Offset 1 bei bs=512), und die Schlüssellänge sind 2048 Byte (entspricht DECRYPTKEYDEVICE_READBLOCKS="4" aus dem Skript "decryptdevice.sh" aus der originalen Anleitung)
systemd-Unitfile
Hast du die crypttab entsprechend angepasst, kannst du mit einem beherzten
root@debian:~# systemctl --system daemon-reload
die systemd die neuen Unitfiles erzeugen lassen.
Für das lvm findest du dieses unter /run/systemd/generator/systemd-cryptsetup@lvm.service mit folgendem Inhalt
[Unit] Description=Cryptography Setup for %I Documentation=man:systemd-cryptsetup@.service(8) man:crypttab(5) SourcePath=/etc/crypttab Conflicts=umount.target DefaultDependencies=no BindsTo=dev-mapper-%i.device After=systemd-readahead-collect.service systemd-readahead-replay.service Before=cryptsetup.target RequiresMountsFor=/dev/disk/by-id/usb-XyzFlash_XYZDFGHIJK_XXYYZZ00AA-0:0 BindsTo=dev-disk-by\x2duuid-xxYYzz0011\x2dxyz4\x2d1x2y\x2xxxx\x2dxyxyxyxyxyxyzzz.device After=dev-disk-by\x2duuid-xxYYzz0011\x2dxyz4\x2d1x2y\x2dxxxx\x2dxyxyxyxyxyxyzzz.device Before=umount.target [Service] Type=oneshot RemainAfterExit=yes TimeoutSec=0 ExecStart=/lib/systemd/systemd-cryptsetup attach 'lvm' '/dev/disk/by-uuid/xxYYzz0011-xyz4-1x2y-xxxx-xyxyxyxyxyxyzzz' '/dev/disk/by-id/usb-XyzFlash_XYZDFGHIJK_XXYYZZ00AA-0:0' 'luks,tries=3,keyfile-size=2048,keyfile-offset=512' ExecStop=/lib/systemd/systemd-cryptsetup detach 'lvm'
Dieses File kannst du nach /etc/systemd/system kopieren und dort entsprechend deinen Bedürfnissen anpassen. Die Verschlüsselung des Systems mit einem externen Key funktioniert aber auch mit der angepassten crypttab alleine auch.
Manpages
man systemd-cryptsetup@.service man systemd-cryptsetup-generator
Weblinks
Entschlüsseln mit Key auf USB-Stick - wiki.ubuntuusers.de