====== Crypto-Container mit cryptsetup Luks ======
Diese Anleitung beschreibt die Erstellung und Nutzung einer verschlüsselten Datei unter Debian. Dabei kommt [[https://gitlab.com/cryptsetup/cryptsetup|cryptsetup-luks]] zum Einsatz.
^ Variable ^ Bedeutung ^ Beispiel ^
| $DATEI | Pfad für Abbild der verschlüsselten Partition | ''/data/plastikpackung'' |
| $MB | Grösse von $DATEI in Megabyte | 100 |
| $CRYPTODATEI | Name deiner Cryptodatei in ''/dev/mapper'' | gouda |
| $MOUNT | Verzeichnis, wo Partition eingehängt wird | ''/mnt/kuehlschrank'' |
===== Container erstellen =====
Die Verschlüsselung baut auf dem sogenannten //Device Mapping// auf, welches ab Kernel 2.6.4 implementiert ist. Laut deren Entwickler ist es um einiges besser fuer Crypto-Zwecke geeignet als die [[http://www.tldp.org/HOWTO/Cryptoloop-HOWTO/|Cryptoloop-Variante]]. Für die folgende Schritte benötigst du root-Rechte:
* Stell sicher, dass die folgenden Module geladen sind:
modprobe loop
modprobe dm_crypt
* Installiere nun die notwendige Pakete:
apt install cryptsetup hashalot
* Als erstes erstellst du eine neue Datei. Du kannst ''/dev/urandom'' benutzen, um zufällige Werte in diese Datei zu schreiben:
dd if=/dev/urandom of=$DATEI bs=1M count=$MB
* Anschliessend richtest du das loop-device ein:
losetup /dev/loop0 $DATEI
* Jezt wird aus dem loop-device eine Cryptodatei:
cryptsetup luksFormat /dev/loop0
* Danach kannst du die neue Partition mappen:
cryptsetup luksOpen /dev/loop0 $CRYPTODATEI
* Noch schnell die Datei mit einem Dateisystem formatieren:
mkfs.ext4 /dev/mapper/$CRYPTODATEI
* Mounten und fertig:
mount /dev/mapper/$CRYPTODATEI $MOUNT
===== Täglicher Gebrauch =====
Das folgende Skript vereinfacht den Umgang mit dem Container:
#!/bin/sh
set -eu
DATEI=$1
MOUNTPOINT="$2"
CRYPTODATEI=$(basename "$DATEI")
case "$1" in
start)
losetup /dev/loop0 "$DATEI"
cryptsetup luksOpen /dev/loop0 "$CRYPTODATEI"
mount -t ext3 -o defaults,user "/dev/mapper/$CRYPTODATEI" "$MOUNTPOINT"
;;
stop)
umount "$MOUNTPOINT"
cryptsetup luksClose "$CRYPTODATEI"
;;
restart)
"$0" stop
"$0" start
;;
*)
echo "Usage: $(basename "$0") {start|stop|restart} DATEI MOUNTPOINT"
;;
esac
exit 0
Luks ermöglicht es dir, mit verschiedenen Schlüsseln auf die Partition zuzugreifen. Mit folgendem Befehl fügst du einen weiteren hinzu:
cryptsetup luksAddKey /dev/$DEVICE
Dazu musst du das Passwort eines schon vorhandenen Schlüssels eingeben. Analog dazu kannst du mit ''luksDelKey'' ein Schlüssel wieder entfernen.
===== Paranoia =====
Mit ''dmsetup info'' lassen sich benutzte devicemappings anzeigen. Taucht hier ein Teil als ''ACTIVE'' auf, so hat jedermensch darauf Zugriff (auch wenn es nicht gemountet ist, könnte - wer die nötigen Rechte hat - das Teil ohne passendes Cryptokennwort mounten) - es ist in diesem Zustand quasi entschlüsselt!
Deswegen immer nach dem unmounten, das mapping entfernen (sonst gibt's (erfahrene Beamte vorausgesetzt) evtl. Stress bei der Hausdurchsuchung):
umount $MOUNT
cryptsetup luksClose $CRYPTODEVICE
Du kannst alle mappings gleichzeitig entfernen mit:
dmsetup remove_all
Denk dran: ''cryptsetup luksClose'' niemals nicht vergessen oder aber Stecker ziehen ;) !