Einrichten eines mit LUKS verschlüsselten Volumes unter (K)ubuntu

Warum ich ecryptfs durch LUKS (Linux Unified Key Setup) ersetzt habe:

Vor einiger Zeit habe ich wichtige Daten meines Heimatverzeichnisses verschlüsselt. Hierfür habe ich das mit ecryptfs verschlüsselte Private-Verzeichnis unter Kubuntu verwendet.
Im Großen Ganzen war ich damit auch zufrieden. Es gab allerdings zwei Probleme mit denen ich immer wieder zu kämpfen hatte:

  • Nach dem Ausloggen aus KDE wurde beim erneuten Einloggen das Private Verzeichnis nicht mehr gemountet (siehe auch: https://bugs.launchpad.net/ubuntu/+bug/779308)
  • Das Starten von digikam (> 13000 Bilder) dauerte eine Ewigkeit ( ca. 5 Minuten).

Die Digikam Performanceprobleme habe ich mit strace analysiert und dabei ist mir aufgefallen, dass Digikam bei jedem Start für jedes Foto ein stat64 Aufruf macht. Dies scheint unter ecryptfs sehr I/O Intensiv und damit langsam zu sein.

Aus dem oben genannten Gründen habe ich deshalb mein /home logical Volume über LUKS mit AES verschlüsselt.

So richtet man unter Kubuntu die Verschlüsselung eines Volumes nachträglich ein

Zunächst wird eine Partition bzw. ein Logical Volume benötigt. Im Beispiel verwende ich ein Logical Volume. Anlegen des Logical Volumes mit lvcreate:

root@kiste:/home/volker# lvcreate -n testcrypt -L 1G datavg
Logical volume "testcrypt" created

Anschließend muss das Logical Volume für die Verwendung mit LUKS initialisiert werden. Hierbei muss die Passphrase angegeben werden, die auch beim Entschlüsseln benötigt wird:

root@kiste:/home/volker# cryptsetup luksFormat /dev/datavg/testcrypt
WARNING!
========
This will overwrite data on /dev/datavg/testcrypt irrevocably.
Are you sure? (Type uppercase yes): YES
Enter LUKS passphrase:
Verify passphrase:

Um mit dem Volume arbeiten zu können muss dies nun geöffnet werden. Hierfür muss die oben angegeben Passphrase angegeben werden:

root@kiste:/home/volker# cryptsetup luksOpen /dev/datavg/testcrypt cryptedtest
Enter passphrase for /dev/datavg/testcrypt:

Unter /dev/mapper gibt es nun ein Gerät mit dem oben angegebenen Namen cryptedtest (falls nicht, dann evtl folgendes ausführen: /etc/init.d/cryptdisks reload):

root@kiste:/home/volker# ls -ltrs /dev/mapper/
total 0
0 crw------- 1 root root 10, 236 2011-05-29 18:38 control
0 lrwxrwxrwx 1 root root 7 2011-05-29 18:38 datavg-datalv -> ../dm-1
0 lrwxrwxrwx 1 root root 7 2011-05-29 18:38 datavg-swaplv -> ../dm-2
0 lrwxrwxrwx 1 root root 7 2011-05-29 19:00 cryptedtest -> ../dm-7

Auf diesem Gerät kann nun ein Dateisystem erstellt werden:

root@kiste:/home/volker# mkfs.ext4 /dev/mapper/cryptedtest
mke2fs 1.41.14 (22-Dec-2010)
[...]
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 39 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.

Und das Dateisystem kann nun gemountet werden:

root@kiste:/tmp# mkdir cryptmount
root@kiste:/tmp# mount /dev/mapper/cryptedtest cryptmount
root@kiste:/tmp# df -h /tmp/cryptmount
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/cryptedtest
1007M 18M 939M 2% /tmp/cryptmount

Damit das Dateisystem nun beim Neustart automatisch gemountet wird, muss das logical Volume in der /etc/fstab und /etc/crypttab eingetragen werden.

/etc/crypttab

# <target name> <source device> <key file> <options>
cryptedtest /dev/datavg/testcrypt none luks

/etc/fstab

/dev/mapper/cryptedtest /mnt/testmount ext4 defaults 1

Anschließend sollte die initial Ramdisk neu geschrieben werden (bin mir nicht 100% sicher ob das wirklich nötig ist – geschadet hats nicht)

root@kiste:/tmp# dpkg-reconfigure initramfs-tools
update-initramfs: Generating /boot/initrd.img-2.6.38-8-generic

Beim Reboot wird nun vor dem start des KDM / GDM nach der Passphrase für das LUKS Volume gefragt und dies anschließend gemountet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: