LUKS-Container einrichten

Gespeichert von rsaalmueller am Sa., 2020-12-05 - 14:53

Wie man einen LUKS-Container, also ein verschlüsseltes Dateisystem, erstellt und handhabt. Der harte, sichere Weg:

In diesen Beispiel erstelle ich einen LUKS-Container der maximal 32MB belegt. Als (temporärer) Speicherplatz dient ein Verzeichnis Vaults innerhalb meines Home-Verzeichnisses. Anschließend passen wir (als root oder mittels sudo) die Rechte an.

~/Vaults$ dd if=/dev/urandom of=mysafe.luks.img iflag=fullblock bs=1M count=32
~/Vaults$ sudo chmod go= mysafe.luks.img
~/Vaults$ ls -lha
insgesamt 33M
drwxrwxr-x  2 ich ich 4,0K Dez  5 15:07 .
drwxr-xr-x 51 ich ich 4,0K Dez  5 14:42 ..
-rw-------  1 ich ich  32M Dez  5 15:07 mysafe.luks.img

Jetzt wird aus dieser Datei mit zufälligem Inhalt ein Verschlüsselter Container:

~/Vaults$ sudo cryptsetup --verbose --verify-passphrase luksFormat mysafe.luks.img
WARNING!
========
Hiermit werden die Daten auf »mysafe.luks.img« unwiderruflich überschrieben.

Are you sure? (Type uppercase yes): YES
Geben Sie die Passphrase für »mysafe.luks.img« ein:
Passphrase bestätigen:
Schlüsselfach 0 erstellt.
Befehl erfolgreich.

ACHTUNG!!! Ich darf daran erinnern, dass das hier eingegebene Passwort unbedingt und auf Dauer benötigt wird, um mit dem LUKS-Container zu arbeiten. Also entweder ein Passwort nehmen, dass man unter Garantie nicht vergisst, oder dann doch aufschreiben.

Wir haben jetzt zwar einen verschlüsselten LUKS-Container, aber praktisch ohne nutzbaren Inhalt. Um in dem Container nun ein Dateisystem anzulegen, müssen wir den Container anmelden. Die Anmeldung und das Erstellen des Dateisystems weiterhin als root oder mittels sudo. Als Dateisystem nehme ich ext4. Man nutze was gefällt.

~/Vaults$ sudo cryptsetup --verbose luksOpen mysafe.luks.img mysafe
Geben Sie die Passphrase für »mysafe.luks.img« ein:
Schlüsselfach 0 entsperrt.
Befehl erfolgreich.
~/Vaults$ sudo mkfs.ext4 /dev/mapper/mysafe
mke2fs 1.45.5 (07-Jan-2020)
Ein Dateisystem mit 4096 (4k) Blöcken und 4096 Inodes wird erzeugt.

beim Anfordern von Speicher für die Gruppentabellen: erledigt
Inode-Tabellen werden geschrieben: erledigt
Das Journal (1024 Blöcke) wird angelegt: fertig
Die Superblöcke und die Informationen über die Dateisystemnutzung werden
geschrieben: erledigt

 

Bestimmen wir für den LUKS-Container und das darin enthaltene Dateisystem ein Verzeichnis zum einbinden und ändern die notwendigen Rechte. Ich bevorzuge das mit dem Anmeldenamen angelegte Unterverzeichnis unter /media. Sie können auch ein Verzeichnis unter /mnt nehmen oder in ihrem /home Verzeichnis. Weiterhin als root oder mit sudo.

~/Vaults$ sudo mkdir /media/ich/mysafe
~/Vaults$ sudo mount -t ext4 -o journal_checksum /dev/mapper/mysafe /media/ich/mysafe
~/Vaults$ sudo chown ich: /media/ich/mysafe
~/Vaults$ sudo chmod go= /media/ich/mysafe

Ab jetzt sollte man das eingebundene Dateisystem aus dem LUKS-Container ohne root oder sudo nutzen können. Als Test wird ein Verzeichnis angelegt.

~/Vaults$ mkdir /media/ich/mysafe/passwords
~/Vaults$ ls /media/ich/mysafe/
lost+found passwords

Bleibt die Frage: Wie gehe ich jetzt damit alltäglich um?

Wer jetzt cryptsetup nutzt um den LUKS-Container zu schließen, wird enttäuscht werden, denn der Container wird ja noch genutzt. Richtig, noch ist das Dateisystem eingebunden. Also …

~/Vaults$ sudo umount /media/ich/mysafe
~/Vaults$ sudo cryptsetup close mysafe

Unter Ubuntu ist man darauf angewiesen zumindest sudo zum Einbinden zu nutzen, da wir den device-mapper benötigen, der nur mit root rechten läuft.

Machen wir es gemütlich, schreiben wir ein script zum Einbinden und eines zum Abmelden.

In mount_mysafe.sh steht:
#!/bin/bash
cd /home/ich/Vaults
sudo cryptsetup --verbose open mysafe.luks.img mysafe && sudo mount -t ext4 -o journal_checksum /dev/mapper/mysafe /media/ich/mysafe

In umount_mysafe.sh steht:
#!/bin/bash
cd /home/ich/Vaults
sudo umount /media/ich/mysafe && sudo cryptsetup close mysafe