Ich habe neulich auf Cowboy´s Linux-Blog ein Tutorial über “Verschlüsselte Container” unter Linux gefunden. Da es mir sehr gut gefallen hat gibt es nun hier ein Backup davon:
Ziel:
Ein verschlüsselter Container, den man bei Bedarf in das Dateisystem einbindet. Dies soll ohne Neukompilieren des Kernels funktionieren und keine besonderen Pakete benötigen – sowie in meinem Fall auch unter Debian Testing lauffähig sein.
Pakete:
Wir installieren cryptsetup und loop-aes-utils.
1. Erstellen der Containerdatei
An einem beliebigen Ort legen wir die Datei an, die unsere Daten speichern soll – hier 10 GB groß (mit Zufallsdaten gefüllt):
dd if=/dev/urandom of=/home/user/daten.safe bs=1M count=10240
2. Loop-Device
Als root legen wir ein Device an, das einfach auf diese Datei verweist:
losetup /dev/loop0 /home/user/daten.safe
3. Verschlüsselung einrichten
Wir richten nun die Verschlüsselung (Standard: AES mit 256 Bit) auf diesem Device ein – dabei muss das Kennwort angegeben werden:
cryptsetup -y create datensafe /dev/loop0
4. Formatierung
Der Container ist nun im System unverschlüsselt unter /dev/mapper/datensafe vorhanden. Nun richten wir das Dateisystem ein (hier ext4):
mkfs.ext4 /dev/mapper/datensafe
5. Mount
Nach der Formatierung können wir das Device unter einem beliebigen Verzeichnis einhängen (das existieren muss):
mount -t ext4 /dev/mapper/datensafe /mnt/datensafe
Nun kann man auf /mnt/datensafe ganz normal arbeiten, also speziell auch Zugriffsberechtigungen (restriktiv) setzen.
6. Aushängen
umount funktioniert ganz normal, danach noch den Container schließen und das Loopdevice freigeben:
umount /mnt/datensafe/
cryptsetup remove datensafe
losetup -d /dev/loop0
Tipp: Automatisierung mit sudo
Der mount/umount-Prozess inklusive Öffnen/Schließen des Loopdevices und des Containers kann man in ein Skript packen (und auf einem Ubuntu-System dem User mit sudo die Rechte dafür geben).
1
2
3
4
5
6
7
8
9
10
11
12
|
#!/bin/sh
# datensafe_mount.sh
LOOPDEV=/dev/loop0
SAFE=/home/user/datensafe
CRYPTNAME=datensafe
MNT=/mnt/datensafe
FS=ext4
/sbin/losetup $LOOPDEV $SAFE
/sbin/cryptsetup create $CRYPTNAME $LOOPDEV
/bin/mount -t $FS /dev/mapper/$CRYPTNAME $MNT
|
und
1
2
3
4
5
6
7
8
9
10
11
|
#!/bin/sh
# datensafe_umount.sh
LOOPDEV=/dev/loop0
SAFE=/home/user/datensafe
CRYPTNAME=datensafe
MNT=/mnt/datensafe
/bin/umount $MNT
/sbin/cryptsetup remove $CRYPTNAME
/sbin/losetup -d $LOOPDEV
|
written by d45id
\\ tags: AES, container, crypto, cryptsetup, Linux, Security