19. August 2013

Linux: Verschlüsselte LVM-Volumes automatisch entsperren

In diesem Post soll gezeigt werden, wie verschlüsselte LVM-Volumes beim Booten eines Linux-Systems automatisch entsperrt werden können. Dies ist beispielsweise sinnvoll, um eine externe Festplatte, deren Partitionen mittels LVM verschlüsselt wurden, automatisch zu entsperren, so dass sie ohne explizite Eingabe eines Passworts sofort zu Verfügung steht. Statt der manuellen Entschlüsselung durch eine Passwortabfrage wird hierfür eine Datei genutzt, die einen entsprechenden Schlüssel enthält. Um die Sicherheit zu bewahren muss diese Datei ebenfalls verschlüsselt auf der Root-Partition des Systems abgespeichert werden. Der Zugang zu einem System mit verschlüsselter Root-Partition wird in der Regel über eine Passwortabfrage abgesichert, weshalb die Sicherheit erhalten bleibt. Lediglich weitere manuelle Passworteingaben können auf diese Weise vermieden werden.

Erstellen des Schlüssels


Der Schlüssel, der das manuell einzugebende Passwort ersetzt wird in einer Datei auf der Root-Partition abgespeichert. Es bietet sich an, diesen Schlüssel durch zufällige Werte zu generieren. Der folgende Befehl erzeugt hierfür eine Datei mit einer Größe von 4 kB, die unter /root/keyfile abgelegt wird:
 $ sudo dd if=/dev/urandom of=/root/keyfile bs=1024 count=4  
Um die Sicherheit weiter zu erhöhen, sollte diese Datei nur durch den Root-Benutzer lesbar sein. Um die Zugriffsrechte dementsprechend anzupassen kann der folgende Befehl genutzt werden:
 $ sudo chmod 0400 /root/keyfile  

Verwendung des Schlüssels


Um anschließend zu konfigurieren, dass das entsprechende LVM-Volume nicht nur durch das Passwort, sondern ebenfalls durch den, im vorherigen Schritt erzeugten, Schlüssel entschlüsselt werden kann, muss nun der folgende Befehl ausgeführt werden. Der Vorgang muss dabei durch Eingabe des Passworts des LVM-Volumes authorisiert werden.
 $ sudo cryptsetup luksAddKey /dev/sdb1 /root/keyfile  
Die Bezeichnung /dev/sdb1 entspricht dabei der Bezeichnung der Partition, die entschlüsselt werden soll. Auf diese Weise können bis zu 10 Schlüssel hinzugefügt werden.

Crypttab konfigurieren


Um das LVM-Volume automatisch beim Booten des Systems anhand des Schlüssels zu entsperren, ist es notwendig, eine entsprechende Konfiguration in der Datei /etc/crypttab vorzunehmen. Diese Datei kann über den folgenden Befehl in einem Editor geöffnet werden:
 $ sudo nano /etc/crypttab
Anschließend muss ein neuer Eintrag in die Datei hinzugefügt werden. Dieser könnte etwa folgendermaßen aussehen:
 name  /dev/sdb1  /root/keyfile  luks,nofail  
Die Spalte mit dem Wert "name" kann dabei durch einen beliebigen Namen ersetzt werden und der Wert /dev/sdb1 enthält wiederum die Bezeichnung zu entschlüsselnden Partition. In der dritten Spalte wird auf die zuvor erstellte Datei mit dem Schlüssel verwiesen und die letzte Spalte definiert, dass es sich um eine Verschlüsselung mittels Luks handelt und dass eventuelle Fehler ignoriert werden sollen. Dies bietet sich besonders für die automatische Entschlüsselung von externen Festplatten an, bei denen es vorkommen kann, dass sie während des Bootens auch manchmal nicht angeschlossen sind.

Statt einer Bezeichnung wie /dev/sdb1 für die zu entschlüsselnde Partition kann auch deren UUID verwendet werden. Dies hat den Vorteil, dass diese eindeutig ist und auch erhalten bleibt, wenn eine unterschiedliche Konstellation von Peripherie an dem System angeschlossen ist. Hierfür muss die Spalte "/dev/sdb1" durch den Wert "/dev/disk/by-uuid/<UUID>" ersetzt werden. Die jeweilige UUID der Partition erhält man beispielsweise über den folgenden Befehl, der alle UUIDs der vorhandenen Partitionen ausgibt.
 $ sudo blkid  

Eine beispielhafte Crypttab-Konfiguration (Klicken zum Vergrößern)

Beim nächsten Bootvorgang sollte die jeweilige Partition automatisch entschlüsselt werden, ohne dass eine Passworteingabe notwendig ist. Dies ist dadurch zu sehen, dass ein entsprechender Eintrag in dem Verzeichnis /dev/mapper vorhanden ist. Sie kann anschließend gemountet werden, um auf die darauf enthaltenen Dateien zuzugreifen. Wie die entschlüsselte Partition ebenfalls während des Bootvorgangs automatisch gemountet werden kann, wird in diesem Artikel erklärt.

Weiterführende Links:

Keine Kommentare:

Kommentar veröffentlichen