Verschlüsselung von USB-Festplatte

Bei neuen USB Datenträger als nächstes sollte eine neue Partition mit einem Partitions-Programm erstellt werden.

sudo gparted /dev/sdX
# oder über Konsole
sudo parted /dev/sdX mklabel gpt
sudo parted -a optimal -- /dev/sdX mkpart primary 0% 100%
sudo mkfs.ext4 /dev/sdX1

Gerät -> Partitionstabelle -> dabei sollte als Typ gpt gewählt werden als Dateisystem sollte ext4 gewählt werden. Anschließend kann eine LUKS-Partition mit cryptsetup angelegt werden:

sudo cryptsetup -c aes-xts-plain -y -s 512 luksFormat /dev/sdX1
# auf Frage ob die Festplatte überschrieben werden soll mit YES beantworten und danach Entschlüsselung Passwort eingeben.  
sudo cryptsetup luksOpen /dev/sdX1 usb1
# danach die Festplatte mit ext4 Formatieren 
sudo mkfs.ext4 /dev/mapper/usb1

Die neue Partition kann nun in einen beliebigen Verzeichnispfad eingebunden werden:

# wenn Verzeichnis nicht existiert dann ein einlegen. 
sudo mkdir /mnt/usb
# ans
sudo mount /dev/mapper/usb1 /mnt/usb
# 
sudo umount /mnt/usb
sudo cryptsetup luksClose /dev/mapper/usb1

Moderne Linux-Systeme wie Linux Mint erkennen automatisch verschlüsselte Datenträger (z.B. USB-Sticks oder externe Festplatten) und öffnen ein entsprechendes Dialog-Fenster zur Passworteingabe.
Von Hand lässt sich eine bestehende LUKS-Partition nach folgendem Schema in ein laufendes System einbinden („mounten“):

sudo cryptsetup luksOpen /dev/sdX1 usb1
sudo mount /dev/mapper/usb1 /media/crypt

Hierbei muss wiederum anstelle von X1 die konkrete Device-Bezeichnung angegeben werden. Sowohl der beim Öffnen der Partition vergebene Crypt-Name als auch der beim Mounten festgelegte Einhänge-Punkt sind frei wählbar. Das Aushängen einer – von keinem Programm benutzten – LUKS-Partition erfolgt durch ein Anklicken des Datenträger-Icons auf dem Desktop mit der rechten Maustaste oder in einem Shell-Fenster nach folgendem Schema:

sudo umount /media/crypt
sudo cryptsetup luksClose /dev/mapper/usb1

Auto Mount – Damit Server die USB Festplatte automatisch Moute kann folgende schritte gemacht werden.

# mit Befehl wir eine Schlüsse erzeugte und unter root Verzeichnis gespeichert  
dd if=/dev/urandom of=/root/usb_secret_key bs=512 count=8
cryptsetup -v luksAddKey /dev/sdX1 /root/usb_secret_key
sudo cryptsetup luksDump /dev/sdX1
# To verify that the key is working, the following command can be executed manually
cryptsetup -v luksOpen /dev/sdX1 usb1 --key-file=/root/usb_secret_key
mount /dev/mapper/usb2 /mnt/crypt/
sudo cryptsetup luksDump /dev/sdd1 | grep "UUID"
cryptsetup -v luksClose usb2

Using the UUID and the key file name, the volume can be added to the crypttab. Edit the /etc/crypttab configuration file and add the encrypted volume in the following format.
cat /etc/crypttab

# <target name>	<source device>		<key file>	<options>
usb1 UUID=1aa4eb77-bd42-4165-a7c3-adcf2e98d412 /root/usb_secret_key luks
usb2 UUID=b0f2dfed-231c-47fe-8089-b1229febdeca /root/usb_secret_key luks

Danach kann Einbindung automatisch gestartet oder gestoppt werden.

chmod 600 /root/disk_secret_key
sudo cryptdisks_start usb1
sudo cryptdisks_stop usb1

Anzeigen welche USB Festlatte an System angeschlossen ist:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/bin/bash
usbuuid=`blkid | grep crypto | awk '{print $2}' | sed 's/"//g'`
crypttab=`grep -Ev '^(#|$)' /etc/crypttab | grep usb1 | awk '{print $2}'`
 
echo "$usbuuid"
echo "$crypttab"
 
if [ "$usbuuid" == "$crypttab" ]
then
echo "usb1"
cryptdisks_start usb1
mount /dev/mapper/usb1 /mnt/usb
 	if [ -d /mnt/usb/lost+found ]
 	then
 	rsync -av -H --delete /backup /mnt/usb
 	fi
/bin/bash /backup/etc/usb/me.usb.sh
sleep 4
umount /mnt/usb
cryptdisks_stop usb1
echo "exit"
 
else
echo "usb2"
cryptdisks_start usb2
mount /dev/mapper/usb2 /mnt/usb
 	if [ -d /mnt/usb/lost+found ]
 	then
 	rsync -av -H --delete /backup/ /mnt/usb/backup/
 	fi
 
/bin/bash /backup/etc/usb/me.usb.sh
sleep 4
 
umount /mnt/usb
 
fi