Puffy

Festplattenverschlüsselung mit OpenBSD

OpenBSD ist ein auf Netzwerk-Sicherheit getrimmtes Betriebssystem. Aber wie sieht es da eigentlich mit der lokalen Sicherheit aus? Wie kann man etwa Festplattenpartitionen unter OpenBSD verschlüsseln?

Warum verschlüsseln?

Zunächst mal: Festplattenverschlüsselung ist kein Allheilmittel zum Datenschutz. Jedes Mittel wirkt gegen eine bestimmte Gefahr und gegen andere nicht. Festplattenverschlüsselung ist dann sinnvoll, wenn man Angst hat das die Festplatte (z. B. durch Diebstahl) in fremde Hände gelangt und sich wichtige Daten auf der Festplatte befinden. Eine gute Verschlüsselung ist zwar nicht knackbar, aber umgehbar: Die Verschlüsselung nutzt nichts, wenn im eingeschalteten Zustand, also nachdem der Benutzer sein Entschlüsselungspasswort eingegeben hat, ein Trojaner über das Netzwerk in den Rechner eindringt und die Festplatte ausliest. Festplattenverschlüsselung ist also vor allem ein Schutz der Daten bei ausgeschalteten Rechner.

Typischerweise schützt man daher vor allem Laptops, die oft gerne gestohlen werden, mit dieser Methode.

Wie verschlüsseln

OpenBSD ist in der Lage außer echten Festplattenpartitionen auch Dateien wie ein Gerät zu behandeln und als Datenträger zu mounten. Die Datei selbst muß dazu ein gültiges Dateisystem enthalten. Mit dieser Methode lassen sich z. B. auch Images von CD-Roms mounten, auch wenn die eigentliche CD gar nicht im Laufwerk ist. Das Tool das dies ermöglicht heißt vnconfig. Durch diese Zwischenschicht, wird damit auch gleich eine Ebene geschaffen, auf der man mit einer Verschlüsselung ansetzen kann. vnconfig kennt zum verschlüsseln die Parameter -k und -K, welche alle Daten die auf das mit vnconfig definierte Gerät geschrieben werden mit einer Blowfish-Verschlüsselung verschlüsselt und Daten die gelesen werden wieder entschlüsselt.

VND-Geräte sind /dev/[r][s]vnd[0-4][a-c]. Wobei ein führendes r jeweils für das Rawdevice steht. Für die Verschlüsselung werden immer svnd Geräte genutzt.

Wie kann ich nun damit mein Heimatverzeicnis verschlüsseln?

Vorab: Wer bereits Daten in seinem /home hat, sollte diese natürlich vor den folgenden Schritten erst sichern um sie später wieder herzustellen. Am besten ist es jedoch, diese Schritte auf einem frischen System durchzuführen, auf dem noch gar keine Benutzeraccounts angelegt wurden.

Da ich nun für die Partition in die mein Heimatverzeichnis kommt keine wirkliche Partition, sondern eine Datei benötige, brauche ich eine Partition in der diese große Datei dann liegt. Ich kann dazu sowohl eine spezielle Partition verwenden, die als Inhalt ausschließlich nur diese eine große Datei enthält, oder ich kann natürlich auch eine bestehende Partition mit ausreichend großen freien Platz verwenden. Eine leere Datei kann dann mit dd erstellt werden. Erstelle ich die Datei in einer speziell dafür angelegten Partition, könnte der Aufruf etwa so aussehen:

# dd if=/dev/zero of=/mnt/home/disk.img

Wenn ich hingegen eine Datei in einer bestehenden Partition erstellen will, die eine bestimmte Größe hat und nicht die ganze Partition einnehmen soll, dann kann der Aufruf etwa so aussehen:

# dd if=/dev/zero of=/var/home.disk bs=4096 count=2500000

Dies erzeugt eine Datei die 10 GB groß ist, da bs für die Blockgröße die geschrieben wird steht und 4096 heißt das 4096 Byte große Blöcke jeweils auf einmal geschrieben werden. count=2500000, heißt das dies dann 2500000 mal geschieht (in Worten zwei millionen fünf hunderttausend). Das ergibt dann ca. 10 GB.

Als nächstes verbinden wir diese Datei mit einem svnd-Gerät und einer Verschlüsselung:

# vnconfig -k svnd0 /mnt/home/disk.img

Dieser Befehl fragt dann nach dem Verschlüsselungspasswort. Achtung! Dieses Passwort das Sie hier eingeben kann später nicht mehr geändert werden. Sollten Sie es vergessen gibt es auch keine Möglichkeit mehr an Ihre Daten heranzukommen (außer sie besitzen ein unverschlüsseltes Backup).

Als nächstes kann nun auf dem neuen Gerät ein Dateisystem angelegt werden:

# newfs /dev/rsvnd0c

Die Formatierung geschieht auf dem Rawdevice. Nach dem formatieren kann die neue Homepartition gemountet und ganz normal benutzt werden:

# mount /dev/svnd0c /home

Beim Booten

Damit man nun nicht nach dem booten jedesmal als root diese Befehle erneut auf einer Konsole eingeben muß, empfiehlt es sich diese Befehle in die /etc/rc.local einzufügen. Auf meinem OpenBSD-Laptop sieht das etwa so aus:

vnconfig -k svnd0 /mnt/home/homedisk
fsck -p /dev/rsvnd0c
mount /home

Desweiteren steht in meiner /etc/fstab:

/dev/svnd0c /home ffs rw,noauto,nodev,nosuid 0 0

Außerdem findet sich zum herunterfahren in meiner /etc/rc.shutdown auch noch:

umount /home
vnconfig -u svnd0

Backups

Ein oft vergessenes Problem bei verschlüsselten Partitionen stellen Backups dar. Generell schützt man mit Verschlüsselung nur Daten von einem gewissen Wert, also solche Daten von denen man auch unbedingt ein Backup anfertigen sollte. Speichert man allerdings sein Backup unverschlüsselt, dann existiert eine unverschlüsselte Kopie der geschützten Daten. Für dieses Dilemma gibt es nur 2 Lösungen: Entweder man verschlüsselt auch die Backups, das ist die absolut konsequente Lösung, oder aber wenn es z. B. um Laptops geht, die vor Diebstahl unterwegs geschützt werden sollen, kann man auch damit Leben das es eine unverschlüsselte Kopie der Daten hinter verschlossenen Bürotüren gibt. An diese Daten käme dann ein eventueller Dieb von unterwegs nicht dran. Auch hier stellt sich eben die Frage, vor was genau ich mich schützen will und mit welchen Risiko ich leben will. Auch sollte man sich die Frage stellen ob Datenverlust oder Datendiebstahl für einen das schlimmere Übel ist.


Creative Commons Attribution 2.0 Germany License
Copyright (c) René Maroufi, 2007