DM-Crypt/Daten-Partition verschlüsseln
Aus Gentoo Linux Wiki
Als erstes benötigen wir eine Partition, in meinem Beispiel ist es eine S-ATA Festplatte mit einer Partition.
Achtung: Soll sowieso eine komplette Platte verschlüsselt werden, wird natürlich KEINE Partition benötigt. Statt z.B. /dev/sda1 wird dann /dev/sda verwendet.
[Bearbeiten] LUKS Partiton erstellen
Sämtliche Daten auf dieser Partition müssen vorher gesichert werden!
Als erstes braucht man eine zu verschlüsselnde Partition, in meinem Fall habe ich /dev/sda1 gewählt. Wer alle vorhandenen Daten komplett unwiederherstellbar vernichten will, führt folgendes aus:
shred /dev/sda1
Wenn es die komplette Festplatte sein darf, dann /usr/bin/shred /dev/sda.
Diese Partition wird nun initialisiert. Im Beispiel ist AES mit dem Chiffriermodus XTS-PLAIN gewählt. Die Schlüsselgröße beträgt demnach 256, 384 oder 512 bit. Bei der Initialisierung muss man ein Passwort angeben, mit dem man später die Partition öffnen kann. Natürlich ist eine Verschlüsselung unnütz, wenn man Standardpasswörter aus anderen Bereichen verwendet. Mehr zu Thema sichere Passwörter gibt es hier
cryptsetup -c aes-xts-plain -y -s 384 luksFormat /dev/sda1
Statt einem Passwort kann auch ein Keyfile übergeben werden welches sich zum Beispiel auf einem USB Stick befindet oder anderweitig gesichert ist. Dadurch wird eine Passwortabfrage umgangen
head -c1024 /dev/urandom >/mnt/usb/key.sda1 cryptsetup -c aes-xts-plain -s 384 luksFormat /dev/sda1 /mnt/usb/key.sda1
Auf dem Device-Mapper-Blockdevice muss nun ein Dateisystem erstellt werden, dazu muss man sie zuerst öffnen bzw. freigeben:
cryptsetup luksOpen /dev/sda1 media
Solltest du dem Key Beispiel folgen musst du nun
cryptsetup luksOpen /dev/sda1 media --key-file /mnt/usb/key.sda1
Dabei wird das Mapper-Device /dev/mapper/media angelegt. Persönlicher Kreativität sind keine Grenzen gesetzt.Nun das Anlegen des Dateisystems, in meinen Fall mit ext3:
mke2fs -j /dev/mapper/media
Voila, die Datenpartition ist fertig und bereit zum mounten:
mount -t ext3 /dev/mapper/media /mnt/media
Nach einem Unmounten ist es ratsam, die Partition zu schließen:
umount /mnt/media cryptsetup luksClose media
Zum erneuten Öffnen und Mounten:
cryptsetup luksOpen /dev/sda1 media mount -t ext3 /dev/mapper/media /mnt/media
[Bearbeiten] Täglicher Gebrauch
Ärgerlich ist es im täglichen Gebrauch, dass man dazu Root sein muss. Ich habe mir einen sudo Eintrag erstellt:
EDIT: Dies kann durch benutzung von pam_mount umgangen werden! LINK: pam_mount[1]
visudo
%users ALL= NOPASSWD: /sbin/cryptsetup
Für Mehrbenutzersysteme ist das unsicher. Restriktiver sind folgende Einträge:
%users ALL= NOPASSWD: /sbin/cryptsetup luksOpen * %users ALL= NOPASSWD: /sbin/cryptsetup luksClose * %users ALL= NOPASSWD: /sbin/cryptsetup -y luksAddKey * %users ALL= NOPASSWD: /sbin/cryptsetup luksDelKey *
Und einen passenden fstab Eintrag:
nano -w /etc/fstab
/dev/mapper/media /mnt/media ext3 noatime,noexec,nodev,noauto,user 0 0
Und nun folgendes Bash-Skript:
#! /bin/sh
##### Config #####
SUDO="/usr/bin/sudo"
CRYPTSETUP="/sbin/cryptsetup"
DEV="/dev/sda1"
MAPPER="media"
MOUNT="/mnt/media"
##### Do Not Change Below #####
if [[ "$UID" == "0" ]] ; then
SUDO=""
fi
case $1 in
-m) $SUDO $CRYPTSETUP luksOpen $DEV $MAPPER
mount $MOUNT
;;
-u) umount $MOUNT
$SUDO $CRYPTSETUP luksClose $MAPPER
;;
-a) $SUDO $CRYPTSETUP -y luksAddKey $DEV
;;
-d) if [[ -z "$2" ]] ; then
echo "usage: -d <nr> - del key"
else
$SUDO $CRYPTSETUP luksDelKey $DEV $2
fi
;;
*) echo "usage: -m - mount and open encrypted device"
echo " -u - umount and close encrypted device"
echo " -a - add key"
echo " -d <nr> - del key"
;;
esac
Diese Vorgehensweise ist nicht die sicherste, ein Angreifer mit Benutzerrechten kann durch Entfernen sämtlicher Key Slots die LUKS Partition unbrauchbar machen. Wer auf Nummer sicher gehen will, lässt das Recht einen Key zu entfernen weg. Dies kann man durch entsprechende Einträge in /etc/sudoers verwirklichen:
# Host_Alias SYSTEM # User Alias Specification User_Alias PUSERS = ...,<cryptuser>,... User_Alias CRYPTUSERS = <cryptuser> ... # Cmnd_Alias Specification Cmnd_Alias CRYPTSETUP = /sbin/cryptsetup luksOpen *, /sbin/cryptsetup luksClose * Cmnd Alias CRYPTSETUP_KEY = /sbin/cryptsetup -y luksAddKey *, /sbin/cryptsetup luksDelKey * # User privilege specification root ALL=(ALL) ALL PUSERS SYSTEM = ..., CRYPTSETUP,... CRYPTUSER SYSTEM = CRYPTSETUP_KEY
Dann kann man auch auf ein bash skript verzichten
[Bearbeiten] Partition automatisch einbinden
Möchte man eine Partition während des Systemstarts automatisch entschüsseln (und einbinden), so kann man dies bequem in /etc/conf.d/dmcrypt konfigurieren:
/etc/conf.d/dmcrypt
target=home-partition source='/dev/hda5'
Obiger Eintrag fragt beim Bootprozess automatisch nach einem Passwort für die (mit LUKS verwaltete) Partition /dev/hda5 und legt für diese ein Mapping names /dev/mapper/home-partition an.
Hinweis: Bei der Passworteingabe ist noch kein deutscher Tastaturtreiber geladen! Deshalb Vorsicht mit Sonderzeichen.
Hinweis: Die alte Konfigurationsdatei /etc/conf.d/cryptfs wurde in /etc/conf.d/dmcrypt umbenannt. Sollte es wider Erwarten Probleme geben hilft ein
# ln -s /etc/conf.d/dmcrypt /etc/conf.d/cryptfs
