MiniTipp: Festplatte verschlüsseln
Inhalt
1. Einleitung
Sicheres root-Passwort, eingeschaltete Firewall, noscript im Browser und auch sonst an alle Vorsichtsmaßnahmen gedacht. Wird der Laptop oder Dektop-PC aber gestohlen, besteht Zugriff auf
die Festplatte. Auch ein Bios-Passwort hilft da nicht viel, schließlich kann die Festplatte ausgebaut werden. Die Daten selbst sind nicht verschlüsselt. Unter Windows kommt zur
Festplattenverschlüsselung meistens TrueCrypt zum Einsatz. Wie aber lässt sich eine Linux-Partition verschlüsseln? Diese Frage beantwortet dieser kleine Artikel.
2. Einige Überlegungen vorab...
Bevor wir ans Verschlüsseln gehen, einige Überlegungen zum Layout
Was muss verschlüsselt werden?
Sensible Daten liegen bei Linux normalerweise nicht über den ganzen Verzeichnisbaum verteilt, sondern konzentrieren sich in den Bereichen, in denen Benutzer Daten ablegen. In den Beispielen sollen das die Bereiche /home und /data sein.
Ein weiterer sensibler Bereich kann der swap-Bereich sein. Dieser kann durchaus größere Datenmengen im Klartext enthalten. Deshalb sollte dieser auch verschlüsselt werden. Das Linux-Grundsystem dagegen ist ohnehin kein Geheimnis und kann durchaus unverschlüsselt bleiben.
An welcher Stelle wird die Verschlüsselung angesetzt?
Eigentlich scheint die Frage bereits durch die vorigen Überlegungen beantwortet. Doch aus Gründen der Übersichtlichkeit und Performance kommt dieser Frage weitere Bedeutung zu. Als Beispiel sei ein über ein Raid verteiltes System angeführt: Man kann entweder alle Partitionen, aus denen ein Raid gebildet werden soll, einzeln verschlüsseln und dann aus den verschlüsselten Partitonen ein Raid bilden -oder- man bildet zuerst das Raid aus den unverschlüsselten Partitonen und verschlüsselt das darüberliegende md-Device. Letztere Variante schont die Prozessor-Ressourcen deutlich, da nur einmal beim Schreiben verschlüsselt werden muss. Deshalb verschlüsseln wir in den Beispielen /dev/md3.
Ebenso können einzelne Logical Volumes verschlüsselt werden oder die ganze Volume Group. Der Einfachheit halber legen wir deshalb die Volume Group auf das bereits verschlüsselte
Device. Auf diese Weise wird beim Starten des Computers nur einmal das Verschlüsselungspasswort abgefragt.
3. Festplatte verschlüsseln
Verschlüsselt werden nur Daten, die auf die Festplatte geschrieben werden, unbeschriebene Bereiche bleiben als solche zu erkennen. Dies erleichtert einem Dieb die Arbeit, da er weiß, welchen Bereich der Festplatte er entschlüsseln muss. Um dem Dieb die Arbeit zu erschweren, beschreiben wir die gesamte Partiton /dev/md3 mit Zufallszahlen:
root# dd if=/dev/urandom of=/dev/md3
Je nach Größe der Partiton kann das eine ganze Weile dauern.
Nun können wir die Partition "verschlüsseln". Dies geschieht mit dem Befehl cryptsetup:
root# cryptsetup -s 256 -y luksFormat /dev/md3 root# cryptsetup luksDump /dev/md3 root# cryptsetup luksOpen /dev/md3 crypt0
Durch das cryptsetup wird ein neues Device /dev/mapper/crypt0 erzeugt. Daten, die auf dieses Device geschrieben werden, werden automatisch durch den Kernel verschlüsselt. Man könnte also auf /dev/mapper/crypt0 direkt ein Dateisystem anlegen - etwa mit mkfs.ext4 /dev/mapper/crypt0 und das ganze in der Datei /etc/fstab verankern.
Wir wollen aber das Device nicht direkt nutzen, sondern eine Volume Group "datavg" darauf anlegen:
root# pvcreate /dev/mapper/crypt0 root# vgcreate -s 8M datavg /dev/mapper/crypt0
In der so erzeugten Volume Group können nun beliebig viele Logical Volumes angelegt werden - alle sind automatisch verschlüsselt!
Dies gilt auch für einen swap-Bereich, dieser würde wie folgt angelegt werden:
root# lvcreate -L 4G -n swap datavg root# mkswap /dev/datavg/swap root# swapon /dev/datavg/swap
In der Datei /etc/fstab wird der swap-Bereich dann wie folgt verankert:
/dev/datavg/swap swap swap defaults 0 0
Damit die verschlüsselten Partitionen beim Booten automatisch geöffnet werden, müssen sie in eine Datei /etc/crypttab eingetragen werden:
#Format: #mappedname devicename password options crypt0 /dev/md3
A. Weiterführende Informationen