home Sonstiges Linux OpenBSD Links

Partitionen verschlüsseln mit LUKS

Wenn man einen Laptop hat, will man verhindern das im Falle eines Diebstahls die Daten lesbar sind. Am besten verschlüsselt man dazu die Datenpartition. Die Partition mit der Betriebssystem läßt man unverschlüsselt und legt auf ihr keine wichtigen Daten ab. Bei mir ist die Datenpartition /dev/hda2 und das Betriebssystem liegt auf /dev/hda3.

Zur Verschlüsselung bietet sich das LUKS Projekt an. Dieses ist transparent für das darüber liegende Dateisystem. Außerdem können bis zu acht verschiedene Schlüssel für eine Partition erstellt werden. Dies ist praktisch wenn zum Beispiel mehrere Benutzer den Laptop nutzen und jeder sein eigenes Passwort haben soll.
Als erstes braucht man den device-mapper. Ich verwende die Version 1.02.28, diese kann zum Beispiel von ftp://sources.redhat.com/pub/dm/ runter geladen werden. Je nach Distribution ist der device-mapper schon installiert, wenn nicht:

root@pd6000:~ # cd /usr/src
root@pd6000:/usr/src # tar xfz /von/wo/auch/immer/device-mapper.1.02.28.tgz
root@pd6000:/usr/src # cd device-mapper.1.02.28
root@pd6000:/usr/src/device-mapper.1.02.28 # ./configure
root@pd6000:/usr/src/device-mapper.1.02.28 # make
root@pd6000:/usr/src/device-mapper.1.02.28 # make install
Als nächstes braucht man die LUKS Tools von http://code.google.com/p/cryptsetup/downloads/list. Verwendet habe ich die Version 1.2.0:
root@pd6000:/usr/src/device-mapper.1.02.28 # cd ..
root@pd6000:/usr/src # tar xfj /von/wo/auch/immer/cryptsetup-luks-1.2.0.tar.bz2
root@pd6000:/usr/src # cd cryptsetup-luks-1.0.4
root@pd6000:/usr/src/cryptsetup-luks-1.2.0 # ./configure
root@pd6000:/usr/src/cryptsetup-luks-1.2.0 # make
root@pd6000:/usr/src/cryptsetup-luks-1.2.0 # make install
Weiter geht es mit dem Kernel, da ohne seine Unterstützung nichts läuft. Verwenden tue ich dafür die Version 2.6.23.17. Wie man seinen Kernel konfiguriert, sollte jeder selbst wissen. Folgende Optionen müssen aktiviert werden, damit LUKS funktioniert:
Device Drivers  --->
 Multi-device support (RAID and LVM)  --->
  [*] Multiple devices driver support (RAID and LVM)
  <*>   Device mapper support
  <*>     Crypt target support
Nach der Installation und Booten mit dem neuen Kernel kann es los gehen. Im Idealfall hat man schon eine Partition parat, die verschlüsselt werden soll. Man sollte sich vergewissern, das man eventuell vorhandene Daten vorher sichert. Beim erstellen einer LUKS Partition werden alle vorhandenen Daten überschrieben! Bei mir soll /dev/hda2 mit 256 Bit verschlüsselt werden:
root@pd6000:~ # cryptsetup -y -s 256 luksFormat /dev/hda2
WARNING! ======== This will overwrite data on /dev/hda2 irrevocably.
Are you sure? (Type uppercase yes): YES Enter LUKS passphrase: Passwort, nicht zu kurz usw... Verify passphrase: zur Sicherheit noch mal
Mit folgenden Befehl kann man gucken, was eigentlich angelegt wurde:
root@pd6000:~ # cryptsetup luksDump /dev/hda2
LUKS header information for /dev/hda2
Version: 1 Cipher name: aes Cipher mode: cbc-plain Hash spec: sha1 Payload offset: 2056 MK bits: 256 MK digest: 11 3f 17 bf c9 ea b8 95 0c 47 88 a2 08 ab 6d 35 d4 1c a8 14 MK salt: 1f 4a a5 08 7e 76 32 3f 17 fb 9c ea 5a ab 6d 11 a5 27 5c c9 cf 00 11 a8 bf a5 08 7e 76 32 3f 28 MK iterations: 10 UUID: 4a5633ac-c487-423f-814a-ca93e22bd760
Key Slot 0: ENABLED Iterations: 20921 Salt: c0 47 3e 8f 11 71 99 b5 d7 dd 2e f4 f8 cf 6d 1a 10 b4 b1 f0 42 95 8a af 85 eb b8 5b ea b8 95 01 Key material offset: 8 AF stripes: 4000 Key Slot 1: DISABLED Key Slot 2: DISABLED Key Slot 3: DISABLED Key Slot 4: DISABLED Key Slot 5: DISABLED Key Slot 6: DISABLED Key Slot 7: DISABLED
Damit die Partition auch gemountet werden kann, muß sie als Gerät bereit stehen:
root@pd6000:~ # cryptsetup luksOpen /dev/hda2 verschluesselt
Enter LUKS passphrase: das Passwort
key slot 0 unlocked.
Ein Dateisystem braucht die Partition auch:
root@pd6000:~ # mke2fs /dev/mapper/verschluesselt
Nun kann die Partition normal gemountet werden:
root@pd6000:~ # mount /dev/mapper/verschluesselt /mnt
Die Daten können nun normal gelesen und geschrieben werden in /mnt.

Will man die Partition wieder schliessen, geht man wie folgt vor:

root@pd6000:~ # umount /mnt
root@pd6000:~ # cryptsetup luksClose /dev/mapper/verschluesselt
Zum Mounten und Unmounten empfiehlt es sich, ein kleines Script zu schreiben um die Tipparbeit zu ersparen.

zurück zur Linuxübersicht
Letzte Aktualisierung dieser Seite: 1. März 2011