Partition verschlüsseln mit dm-crypt und LUKS unter Debian

Das folgende Tutorial beschreibt die Einrichtung einer verschlüsselten Partition unter Debian mit dm-crypt und LUKS.

Schritt 1: System auf den neuesten Stand bringen

apt-get update && apt-get upgrade --show-upgraded

Schritt 2: Installation von cryptsetup und pv

Zunächst muss cryptsetup installiert werden. Um den Verschlüsselungsprozess überwachen zu können wird zusätzlich pv (pipe-viewer), benötigt.

apt-get install cryptsetup pv

Schritt 3: Eine LUKS Partition konfigurieren

ACHTUNG: Der folgende Befehl entfernt alle Daten von der gewählten Partition.

Vorrausgesetzt es existiert bereits eine Partition auf dem System die verschlüsselt werden soll, reicht folgender Befehl um die Partition als verschlüsselte Partition anzulegen bzw. zu initialisieren.

cryptsetup -y -v luksFormat /dev/sdaX

cryptsetup sollte Folgendes ausgeben:

WARNING!
========
This will overwrite data on /dev/sdaX irrevocably.
Are you sure? (Type uppercase yes): YES
Enter LUKS passphrase:
Verify passphrase:
Command successful.

Alle Daten der Partition werden nun verschlüsselt.

Schritt 4: Partition entschlüsseln und prüfen

Ist die verschlüsselte Partition angelegt kann sie mit folgendem Befehl geöffnet werden. Der Name „verschluesselte_partition“ ist dabei frei wählbar.

cryptsetup luksOpen /dev/sdaX verschluesselte_partition

cryptsetup fragt daraufhin nach dem Passwort:

Enter passphrase for /dev/sdaX:

Wurde das Passwort akzeptiert, wird im Ordner /dev/mapper/ ein Link mit dem Namen „verschluesselte_partition“ angelegt. Das kann folgendermaßen überprüft werden:

ls -l /dev/mapper/verschluesselte_partition

Der Befehl sollte folgende Ausgabe liefern:

lrwxrwxrwx 1 root root 7 Feb  2 12:35 /dev/mapper/verschluesselte_partition -> ../dm-0

Um den Status der verschlüsselten Partition abzufragen wird folgender Befehl verwendet:

cryptsetup -v status verschluesselte_partition

Der Befehl sollte eine ähnliche Ausgabe wie folgende liefern:

/dev/mapper/cryptdata is active and is in use.
type: LUKS1
cipher: aes-cbc-essiv:sha256
keysize: 256 bits
device: /dev/sdaX
offset: 4096 sectors
size: 2895194112 sectors
mode: read/write
Command successful.

Schritt 5: Verschlüsselte Partition überschreiben

Um sicher zu gehen, dass die Daten der verschlüsselten Partition nicht lokalisiert werden können wird empfohlen die Partition vor der Nutzung mit Zufallszahlen beschrieben wird. Das lässt sich mit folgendem Befehl erledigen:

pv -tpreb /dev/urandom | dd of=/dev/mapper/verschluesselte_partition bs=128M

dd kann je nach Größe der Partition eine ganze Weile brauchen, bis der Schreibvorgang abgeschlossen ist. An dieser Stelle ist Zeit für einen Kaffee…

Schritt 6: Dateisystem erstellen

Im Anschluss benötigt die Partition noch ein Dateisystem. Im Beispiel wird ext4 verwendet, es kann aber natürlich jedes beliebige Dateisystem verwendet werden.

mkfs.ext4 /dev/mapper/verschluesselte_partition

Schritt 7: Partition mounten

Ist das Dateisystem angelegt, kann ein Ordner für die Partition angelegt, und die Partition gemountet werden.

mkdir /mnt/verschluesselte_partition
mount /dev/mapper/verschluesselte_partition /mnt/verschluesselte_partition

Fertig. Nun können Daten auf die verschlüsselte Partition geschrieben werden.

Verschlüsselung im täglichen Gebrauch

Partition öffnen und mounten

cryptsetup luksOpen /dev/sdaX verschluesselte_partition
mount /dev/mapper/verschluesselte_partition /mnt/verschluesselte_partition

Alternativ kann zum öffnen und mounten einer verschlüsselten Partition folgendes Script verwendet werden:

#!/bin/bash
set -e

cryptsetup luksOpen /dev/sda11 cryptdata && mount /dev/mapper/cryptdata /data

if [[ $? -ne 0 ]]; then
echo "Drive could not be mounted."
exit 1 # exit unsuccessful
fi

if [[ $? -ne 1 ]]; then
echo "Drive successfully mounted."
exit 0 # exit successful
fi

Partition unmounten und schließen

umount /mnt/verschluesselte_partition
cryptsetup luksClose verschluesselte_partition

Alternativ kann zum unmounten und schließen einer verschlüsselten Partition folgendes Script verwendet werden:

#!/bin/bash
set -e

umount /data && cryptsetup luksClose cryptdata

if [[ $? -ne 0 ]]; then
echo "Drive could not be unmounted."
exit 1 # exit unsuccessful
fi

if [[ $? -ne 1 ]]; then
echo "Drive successfully unmounted."
exit 0 # exit successful
fi

Passwort einer verschlüsselten Partition ändern

Eine verschlüsselte Partition kann mehrere Passwörter haben. Diese werden in Key Slots gespeichert. Um die Key Slots und deren Belegung anzuzeigen, wird folgender Befehl verwendet:

cryptsetup luksDump /dev/sdaX

Um das Passwort einer verschlüsselten Partition zu ändern, muss zuerst ein neues Passwort angelegt werden.

cryptsetup luksAddKey /dev/sdaX

Es wird nun eines der bereits vergebenen Passwörter abgefragt. Danach kann das neue Passwort eingegeben werden.

Enter any passphrase:
Enter new passphrase for key slot:

Im Anschluss wird das alte Passwort mit folgendem Befehl entfernt:

cryptsetup luksRemoveKey /dev/sdaX

Es wird das Passwort abgefragt, welches gelöscht werden soll. Hier muss nochmals das alte Passwort angegeben werden:

Enter LUKS passphrase to be deleted:

2 Gedanken zu „Partition verschlüsseln mit dm-crypt und LUKS unter Debian

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.