Nov 11 29

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: , , , , ,