====== 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 ;) !