LVM Installation auf LUKS Basis und manueller Partitionierung

 

 Grundlagen

Installation

Sonstiges

VerwendungszweckInstallationsmediumBackups
VoraussetzungenEinrichtung der Partitionen
Devicemapper – DM-CryptEinrichtung des LVM
LUKS-ErweiterungOS Installation auf LUKS in LVM
AlternativenInstallation
Partitionen und LaufwerkeDM-Crypt Container / Partition Datenverschlüsslung im Überblick
———————————————-———————————————-———————————————-

Verwendungszweck

Der Zugriff auf Daten wird über das Betriebsystem und die dadurch definierten Dateirechte geregelt. Diese Rechte greifen allerdings nur, wenn das System aktiv ist. Hat eine Person physischen Zugriff auf den Rechner, können diese Schutzmechanismen leicht umgangen werden. Sollen Daten in dem Fall geschützt werden sind weitere Massnahmen nötig.

Eine Lösung für dieses Problem heißt Kryptographie. Daten werden nicht mehr direkt, sondern nur noch verschlüsselt auf der Festplatte gespeichert. Hat jemand Zugriff auf den Rechner, braucht er so trotzdem noch den Schlüssel oder das Passwort, um die Daten auf der Festplatte zu entschlüsseln. Der Aufwand, den Schlüssel oder das Passwort durch Ausprobieren herauszufinden ist dabei so groß, dass selbst die Chance, durch jahrelanges systematisches Probieren den passenden Schlüssel zu finden astronomisch klein bleibt.

Zurück zur Übersicht

 

Voraussetzungen

Debian wie auch die meisten anderen Linux basierenden Betriebssysteme beinhalten bereits alle Softwarepakete um  eine Verschlüsselung zu nutzen:

cryptsetup und dmsetup
Damit werden verschlüsselte Partitionen eingerichtet und später entsperrt/gesperrt. Ein Initspkript, um dieses beim Booten automatisch zu erledigen, ist ebenfalls enthalten.
ein dm-Crypt kompatibler Kernel
Die von Debian u.a. Distributionen mitgelieferten Kernel enthalten alle benötigten Module. Falls man einen eigenen Kernel verwenden möchte muss dieser über Unterstützung für den Devicemapper, dm-crypt und die verwendeten Verschlüsselungs- und Hashalgorithmen (z.B. AES, SHA-1) verfügen.
initramfs-tools
Falls die Root-Partition selbst verschlüsselt wird muss eine separate, unverschlüsselte /boot-Partition mit Bootloader, Kernel und initrd anlegt werden. Die initramfs-tools Unterstützen dm-crypt und können den größten Teil der erforderlichen initrd-Konfiguration automatisch erledigen.

Zurück zur Übersicht

 

Devicemapper – DM-Crypt

Der Linux-Devicemapper ist eine Softwareschicht (seit Kernel 2.6 fest implementiert), die zwischen der Dateisystemebene und den darunterliegenden Geräten und Partitionen liegt. Der Devicemapper kann nicht nur zur Verschlüsselung verwendet werden, sondern bildet auch die Grundlage für das Software Raid und den Logical Volume Manager (LVM).

Der Devicemapper verknüpft vorhandene Partitionen mit virtuellen Blockgeräten. Im Betrieb, zum Beispiel beim Mounten, greift man auf die virtuellen Geräte zu, alle Zugriffe werden dann durch den Devicemapper geleitet. Bei DM-Crypt findet an dieser Stelle die Verschlüsselung und Entschlüsselung statt. Beim Erstellen der Verknüpfung zu einer verschlüsselten Partition wird das Passwort oder der Schlüssel angegeben. Diesen behält der Devicemapper im Speicher und kann so ohne weiteren Eingriff alle Zugriffe abwickeln bis die Partition wieder gesperrt oder das System neu gestartet wird. Es können auch mehrere Funktionen des Devicemappers kombiniert werden. So ist es möglich, RAID-Geräte oder einzelne Logical Volumes zu verschlüsseln, ein komplettes LVM auf einem RAID oder mehrere verschlüsselte Partitionen anzulegen etc..

DM-Crypt ist ein Kryptographie-Modul des Device Mappers im Linux-Kernel, das die Möglichkeit biete die im Linuxkernel implementierten Verschlüsselungaslgorithmen zu nutzen. Mit dm-crypt können Daten verschiedener block orientierter Geräte mit verschiedenen Algorithmen ver- und entschlüsselt werden. In den meisten Fällen Partitionen, Festplatten oder logische Laufwerke (LVM). Dazu wird eine zusätzliche Ebene zwischen dem Dateisystem und dem Datenträger aufgebaut. Daten werden so vor dem speichern auf dem Speichermedium erst durch dm-crypt verschlüsselt und dann in verschlüsselter Form auf das Speichermedium geschrieben. Dm-crypt eignet sich so zur Festplattenverschlüsselung (Partitionen, ganze Festplatten, aber auch alle anderen block orientierten Geräten wie etwa logische Laufwerke (LVM) oder loop devices). Dm-crypt unterstützt eine Vielzahl von Verschlüsselungsalgorithmen, da es die Crypto API des Linuxkernels nutzt.

Der Verschlüsselungsalgorithmus, die Größe des Schlüssels und viele weitere Dinge, die die Verschlüsselung beeinflussen, können selber festgelegt werden. Nähere Informationen zu den verfügbaren Parametern gibt es auf der Seite von dm-crypt. Informationen über die Geschwindigkeit der einzelnen Algorithmen sind hier übersichtlich dargestellt.

Zurück zur Übersicht

 

LUKS-Erweiterung

LUKS (das Linux Unified Key Setup) ist eine Erweiterung für verschlüsselte Partitionen. Bei LUKS kann, im Gegensatz zu anderen Verfahren wie z.B Cryptoloop, das Passwort oder der Schlüssel der Partition geändert werden, ohne die Partition neu verschlüsseln zu müssen. Zudem kann man mehrere gleichberechtigte Passwörter und Schlüssel für eine Partition verwenden.

Um das zu ermöglichen besitzt eine LUKS-Partition einen speziellen Anfangsbereich. Während bei cryptoloop der Datenschlüssel für die Partition direkt aus dem Passwort abgeleitet wurde, ist er bei LUKS unabhängig davon. Eine LUKS-Partition verfügt über 8 Speicherplätze, in denen der Schlüssel gesichert wird – jeweils chiffriert durch ein Passwort oder einen Benutzerschlüssel. Auf diese Weise kann man zum Beispiel das Passwort ändern ohne den Datenschlüssel verändern zu müssen – es muss nur der Datenschlüssel, chiffriert durch das neue Passwort, im Anfangsbereich der Partition gespeichert werden (ausführliche Infos).

Zurück zur Übersicht

 

Alternativen

cryptoloop
Dieser Mechanismus existiert schon seit mehreren Jahren. Er verwendet den loopback-Treiber des Kernels, mit dem man auch Abbilddateien von Partitionen oder CDs (zum Beispiel ISO-Images) mounten kann. Cryptsetup kann auch heute noch mit diesem Format umgehen, es ist aber inkompatibel zu LUKS.
loop-aes
Die loop-aes-Software existiert ebenfalls schon lange und gilt als ausgereift. Sie wird zwar nicht vom Standardkernel unterstützt, Debian liefert aber vorgefertigte Pakete mit den Kernelmodulen sowie das loop-aes-source-Paket zum selberbauen. Zusätzlich muss man noch das Paket loop-aes-utils installieren. Auch wenn der Name anderes vermuten lässt unterstützt loop-aes nicht nur den AES-Algorithmus sondern als weitere Verfahren Blowfish, Twofish und Serpent. loop-aes wird als Alternative für dm-crypt/LUKS vom Debian-Installer angeboten.
VeryCrypt
Die Besonderheit dieser Verschlüsselungssoftware besteht darin, dass die Software auf den 3 bekanntesten Betriebssystemen ( Linux, Mac, Windows ) läuft. Damit kann man verschlüsselte Partitionen oder Container unter allen Systemen verwenden.
Glaubhafte Abstreitbarkeit bietet Veracrypt mit der Möglichkeit der sogenannten “Hidden Volumes” (versteckte Container). Die Versteckten Container, die in dem freien und normalerweise nicht genutzten Speicherplatz innerhalb des Hauptcontainers erstellt werden, sind für einen außen stehenden Betrachter nicht erkennbar. Der äußere und der darin versteckte Container sind jeweils mit einem separaten Passwort zugänglich. Je nachdem, welches der beiden Passwörter eingegeben wird, wird der jeweilige Container entsperrt.

Zurück zur Übersicht

 

Einrichtung der Partitionen und Laufwerke

Der Debian Installer / Ubuntu Minimal/Netzwerk Installer erlaubt es, bei Neuinstallationen das komplette System oder wahlweise einzelne Partitionen zu verschlüsseln. In der Standardeinstellung wird dabei LUKS mit dm-crypt verwendet, als Algorithmus kommt AES zum Einsatz. Der Pfad /boot darf nicht innerhalb der verschlüsselten Laufwerke liegen und muss auf einer unverschlüsselten Partition vorliegen damit der Bootloader ( z.B. Grub ) den Kernel und die für LUKS/dmcrypt benötigten Dateien laden kann. Es gibt unter anderem folgende Methoden für die Partitionierung :

normale Partitionen :

      • Vorteil : Keine weitere Komplexität durch LVM ( Änderungen per GUI ( Gparted ) realisierbar ).
      • Nachteil : weniger flexibel gegenüber Änderungen als LVM
Partition 1=> Laufwerk 1 / LV 1
Partition 2=> Laufwerk 2 / LV 2
Partition 3=> Laufwerk 3 / LV 3

 

verschlüsselte Laufwerke auf LVM :

      • Vorteil : Auf dem LVM/ der VG können neben verschlüsselten auch unverschlüsselte Laufwerke angelegt werden
      • Nachteil : Alle verschlüsselten Laufwerke müssen einzeln entsperrt werden
 
=> LVM LV 1=> Crypted Volume 1( Passwort 1 )
Physical Volume=> LVM / VG=> LVM LV 2=> Crypted Volume 2( Passwort 2 )
( Festplatte / Partition )=> LVM LV 3=> Clear Volume 3( kein Passwort )

 

LVM Laufwerke auf LUKS verschlüsselter Partition :

      • Vorteil : nur eine Partition muss entsperrt werden
      • Nachteil : im nun verwendeten Platz des LVMs können keine unverschlüsselten Partitionen mehr angelegt werden
=> LVM LV 1( crypted via Luks DM-Crypt PW 1 )
Physical Volume=> LUKS=> LVM / VG=> LVM LV 2( crypted via Luks DM-Crypt PW 1 )
( Festplatte / Partition )( PW 1 )=> LVM LV 3( crypted via Luks DM-Crypt PW 1 )
 
 
Physical Volume :  Ein Physical Volume (PV) ist der eigentliche Datenspeicher eines LVMs. Ein PV kann eine
                                  Partition oder ein ganzes Laufwerk sein. Es ist auch möglich, sogenannte “Loop-Dateien”
                                  zu verwenden.
 
Volume Group    :  Eine Volume Group (VG) ist eine Art Container für mindestens ein PV.
 
Logical Volume  :  Ein Logical Volume (LV oder auch Volume) ist im LVM Kontext für den Anwender eine Art
                                 Partition innerhalb einer Volume Group. Es ist nicht möglich Logical Volumes außerhalb einer
                                 VG zu erstellen. Das LV kann wie eine normale Partition verwendet werden, d.h. es können
                                 Dateisysteme darauf angelegt werden und es kann gemounted werden.
 

Zurück zur Übersicht

 

 

Installation

 

 

Installationsmedium

Im Gegensatz zu der Debian Installations CD ist für Ubuntu Linux ( ab 14.04 ) keine Alternate Installations CD mehr vorhanden.  Für eine  Installation von Ubuntu 14.04 LTS auf Basis des Logical-Volume-Managers mit manuell konfigurierbaren Partitionen ist aber der CLI – Installer nötig, da aktuell nur dieser Installer die Möglichkeit bietet die LVM Partitionen frei zu konfigurieren. Der CLI – Installer für Ubuntu 14.04 LTS ist über das CD/Image der Netzwerkinstallation verfügbar und enthält auch nur die für den CLI – Installer benötigten Dateien. Alle weiteren Softwarepakete werden aus dem Internet nachgeladen.

Das installierte System ist ein CLI Basis System ohne grafische Oberfläche, wobei am Ende der Installation ein Dialog zur Installation der für Ubuntu 14.04 verfügbaren Desktopumgebungen geladen wird um ggf. eine Vollständige Desktopumgebung zu installieren. Somit ist das Netzwerkinstallationsimage als Basis Image für alle Desktopumgebungen zu verstehen. Dies erfordert allerdings mindestens eine DSL Anbindung an das Internet da 1-3 Gigabyte während der Installation geladen werden. Im Gegensatz zu der Installation mit Desktop CDs/Images werden bei der o.g. Installation die aktuellen Pakete installiert und ein nachträgliches Aktualisieren des Betriebssystems nach der Installation entfällt ( laufende Softwareupdates werden natürlich weiterhin ins System eingepflegt ).

Das heruntergeladene Image/Iso Datei wird auf CD gebrannt oder daraus ein bootfähiger USB Installationstick erstellt ( Windows / Linux )

 Zurück zur Übersicht

 

Einrichtung der Partitionen

Eine nachträgliche Ergänzung oder Änderung der Partitionsparameter aus dem laufenden System ist nur möglich, wenn die zu bearbeitende Partition nicht eingehängt ist. Die Partitionstabelle (MBR/GTP) dagegen kann nicht geändert werden ohne vollständigen Datenverlust aller auf der Festplatte befindlichen Daten. Daher erfordert die Installation auf einer verschlüsselten Partition eine etwas andere Vorgehensweise ( s. Installation ). Eine mit DM-Crypt verschlüsselte Partition wird von nahezu allen Linux System erkannt und kann, bis auf die Eingabe des Passwortes, genutzt werden wie normale Wechseldatenträger. Es gibt versch. Programme zur Verwaltung der Partitionen wie z.B. Gparted*³ und die Gnome Laufwerksverwaltung*³ oder rein Terminal-basiert wie z.B. fdisk/cfdisk*¹ oder gdisk/gfdisk*³ (s. Partitionierung).

*¹ nur MBR, kein GPT | *² nur GPT, kein MBR | *³ MBR  und GPT
 

 Zurück zur Übersicht

 

Einrichtung des LVM

Der LVM bietet die Möglichkeit, mehrere Partitionen logisch zusammenzufassen (Volume Group) und in diesem logischen Verbund neue “logische Partitionen” (Logical Volume) anzulegen. Der Volume Group können dynamisch weitere Geräte sowie Freier Speicherplatz hinzugefügt werden. Dadurch erreicht man eine höhere Flexibilität als mit einem klassischen Partitionierungsansatz. Dies ist vor allem interessant für Verschlüsselte Dateisysteme bei denen eine verschlüsselte Partition, die nur einen Schlüssel benötigt, verschiedene weitere Partition beinhaltet oder für Server, bei denen dynamisch wachsende Datenbestände berücksichtigt werden müssen. Für die Verwaltung des LVM gibt es grafische Programme wie die Verwaltung für logische Medien oder Terminal basierte Programme ( s.a. www.thomas-krenn.com )

Zurück zur Übersicht

OS Installation auf LUKS in LVM

Die Installation auf ein verschlüsseltes Laufwerk mit einem Passwort ist z.Z. am einfachsten über den Logic Volume Manager zu realisieren. Hierzu wird eine verschlüsselte Partition erstellt und in dieser wird statt des Dateisystems dann eine weitere Schicht – der LVM – eingegliedert. Im LVM wiederum können dann verschiedene Partitionen angelegt werden, die nach der Entschlüsslung / Passworteingabe wie gewohnt genutzt werden können. Die Installation des Betriebssystems auf eine verschlüsselte Partition erfordert eine nicht verschlüsselte Bootpartition, da auf dieser die benötigten Dateien zum entschlüsseln der LUKS Partition liegen.

  1. Booten der o.g. Mini/Net Images via CD oder USB Stick
  2. Erstellen einer Boot Partition
  3. Erstellen einer verschlüsselten LUKS Partition für LVM   // ** LUKS Partition muss erst initialisiert werden um LVM in LUKS zu erstellen
  4. Verschlüsselte Partition für LVM vorbereiten ( Verschlüsselung initialisieren )
  5. LVM Partitionen erstellen

 

Entfernte Schlüsseleingabe um Serverpartition zu entsperren

Es gibt mit dem Programm Dropbear die Möglichkeit einen SSH-Server in die initrd Datein, welche unter /boot liegen, zu implementieren. Dieser SSH Server wird noch VOR dem dm-crypt modul geladen. Somit ist die Systempartition via SSH entsperrbar und der Server kann den Bootvorgang nach dem entsperren wie gewohnt fortsetzten. (Anleitung)

Zurück zur Übersicht

 

DM-Crypt Container / Partition

Mit dem dm_crypt System lassen sich ebenfalls verschlüsselte Containerdateien realisieren, die nach Eingabe des Passwortes, wie Wechselmedien vom System verwaltet werden. Das Anlegen eines Verschlüsselten Containers wird im Folgenden beschrieben :

Mit einem der folgenden Befehle wird ein 1 GiB (1024 MiB) großer Container mit dem Namen crypt_container_01 erzeugt :

** Das Erstellen des Containers mit dem Wert …0000… geht wesentlich schneller als mit durch Zufall generierte Werte
** bs Parameter :  kB  =1000 | K =1024 | MB =1000*1000 | M =1024*1024 | xB = 10³ = 1000|  xM = 2¹0 = 1024
** Image Größe = bs x count => 1M x 1024(0) = 1(0) GiB | 1M x 3072(0) = 3(0) GiB | 1M x 5120(0) = 5(0) GiB

Die Container werden jetzt über ein Loop-Device eingehängt. Dieser Befehl gibt zunächst ein freies Loop-Device zurück :

Durch das Loop-Device kann man die Datei wie eine normale Partition/Festplatte ansprechen und einhängen :

*  /dev/loop0 muss gegebenenfalls durch ein anderes freies Device ersetzt werden.

Nachdem der Container / die Partition erstellt wurde wird diese/r nun mit cryptsetup initialisiert, der Algorithmus (siehe Manpage von cryptsetup) sowie das Passwort festlegt : folgende Abfrage mit YES beantworten ( GROSSBUCHSTABEN ! )

Jetzt kann man den Container mit cryptsetup öffnen. Der Parameter crypt_container_01 steht für den Namen, unter dem das Gerät unter /dev/mapper/ eingehängt werden soll. Wenn mehrere verschlüsselte Container verwendet werden, ist darauf zu achten jedem Container eine eindeutige Bezeichnung zuzuweisen.

Das Erstellen, Verschlüsseln und Einhängen ist damit abgeschlossen und der Container muss jetzt nur noch mit einem Dateisystem formatiert werden ( z.B. das ext4 Dateisystem )

alternativ kann zum ein und aushängen der Containerdatein der Befehl mount.crypt aus dem Programm libpam-mount verwendet werden
Infosource 1 / Infosource 2 / Infosource 3 (sshluks)
 
 
tmpnotice : wird der container nur über losetup /dev/loop1 CONTAINERDATEI eingehängt kann der container mit natilus oder nemo wie ein wechseldatenträger genutzt werden

 Zurück zur Übersicht

 

Sonstiges

 

 

Backups

Header sichern
Um Informationen über die Partitionierung innerhalb des Containers und der Keyslots zu sichern, empfiehlt es sich, ein Backup vom LUKS-Header (außerhalb des verschlüsselten Containers) anzulegen. Wird dieses Backup entwendet, ist ein Zugriff auf den verschlüsselten Container trotzdem nur mit den zum Zeitpunkt des Backups erstellen Schlüsselinforma -tionen möglich.  Ein gesicherter Header hängt von den Passwörtern ab, die gerade zu dem Zeitpunkt der Sicherung aktiv sind. Entsprechend ist es empfehlenswert, die Sicherung des Headers unter Verschluss zu halten und nach jeder Änderung am Gerät unmittelbar zu aktualisieren.

Zur Wiederherstellung wird folgender Befehl verwendet:

 Zurück zur Übersicht

 

USB_CRYPT
LVM Administration
Partition nutzen – cryptsetup und mount
Einbinden automatisieren – crypttab
Datei statt Passwort als Schlüssel
root-Partition mit Passwort verschlüsseln

 

Partition nutzen – cryptsetup und mount ^

Um die Partition nun zu mounten muss sie entsperrt werden. Dabei wird das Passwort oder der Schlüssel angegeben. cryptsetup konfiguriert den Device Mapper entsprechend, so daß dieser die verschlüsselte Partition mit einer Gerätedatei in /dev/mapper verknüpft, welche dann ganz normal mit mount eingehängt werden kann. Der Name dieser Datei ist frei wählbar, zur Übersichtlichkeit benutze ich hda3_crypt:

Die Partition ist damit entsperrt. Alle Zugriffe auf /dev/mapper/hda3_crypt laufen nun durch den Device Mapper. Erfolgt ein Schreibzugriff auf hda3_crypt so werden die Daten verschlüsselt und dann auf hda3 gespeichert. Erfolgt ein Lesezugriff auf hda3_crypt wird der passende Datenblock von hda3 gelesen, entschlüsselt und dann ausgegeben. Die Partition kann mit mount eingehängt werden:

Wie man sehen kann benötigt mount keine Informationen über die Verschlüsselung, es verwendet einfach das vom Device Mapper erstellte Gerät wie eine normale Partition.

Nach dem Entsperren kann man über dieses Gerät auf alle Daten auf der Partition zugreifen. Möchte man die Partition vorübergehend nicht mehr verwenden kann man sie sperren – dazu wird sie ausgehängt und anschließend die Device-Mapper-Verknüpfung gelöscht:

 

Einbinden automatisieren – crypttab ^

Auf die oben beschriebene Art und Weise kann man die verschlüsselten Partitionen von Hand aktivieren und deaktivieren. Auf die Dauer ist das aber sehr lästig. cryptsetup sieht allerdings eine Möglichkeit vor, Partitionen automatisch beim Hochfahren des Systems zu entsperren. Dazu trägt man diese in der Datei /etc/crypttab ein. Folgende Informationen können dort eingetragen werden:

          • Der Name der Device-Mapper-Verknüpfung, hier also hda3_crypt
          • Der Name der verschlüsselten Partition, hier /dev/hda3
          • Der Pfad zu einer Schlüsseldatei, oder bei Verwendung eines Passwortes stattdessen none
          • Angaben über die verwendete Verschlüsselung – da diese Informationen bei LUKS im Anfangsbereich der Partition gespeichert werden in diesem Fall einfach nur luks

Die komplette Zeile für das oben genannte Beispiel würde also so aussehen:

Beim nächsten Neustart des Systems wird cryptsetup automatisch die Partition entsperren und dabei nach dem Passwort fragen. Um die Partition beim Systemstart automatisch einzuhängen muss nur noch ein Eintrag in der /etc/fstab angelegt werden, zum Beispiel:

 

Datei statt Passwort als Schlüssel ^

Im vorangegangenen Beispiel wurde ein Passwort zum Entsperren der verschlüsselten Partition benutzt. Der Debian-Installer kann ebenfalls nur verschlüsselte Partitionen mit Passwörtern einrichten (oder, im Falle von Swap, mit Zufallsschlüsseln).

Alternativ kann man aber auch eine Datei, zum Beispiel auf einem USB-Stick, als Schlüssel verwenden. Während man bei der Benutzung von Passwörtern diese (für jede verschlüsselte Partition) beim Hochfahren eintippen muss, bleibt einem bei Schlüsseldateien diese Arbeit erspart – man muss nur dafür sorgen, daß auf den Schlüssel zugegriffen werden kann (zum Beispiel indem der USB-Stick eingesteckt wird).

Wie oben geschrieben kann man für eine LUKS-Partition bis zu acht Passwörter oder Schlüssel verwenden. Vom Debian-Installer oder von luksformat angelegte Partitionen können also mit einer Schlüsseldatei nachgerüstet werden. Die dazu nötigen Schritte lassen sich mit cryptsetup erledigen. Zunächst einmal muss aber eine Schlüsseldatei erstellt werden. Sie sollte nicht zu klein sein (unsicher), aber auch nicht zu groß (lange Dauer beim Entsperren). Ich verwende eine vier kilobyte große Datei:

Als nächstes muss der Schlüssel der LUKS-Partition hinzugefügt werden. Dabei wird das bestehende Passwort eingegeben und damit dann der Datenschlüssel dechiffriert. Dann wird er durch die Schlüsseldatei neu chiffriert und in einer freien Speicherstelle gesichert:

Nun kann testweise die Partition mit dem neuen Schlüssel statt dem Passwort entsperrt werden:

Damit kann die Partition ähnlich wie mit einem Passwort manuell entsperrt werden. Dieser Vorgang lässt sich aber auch über die crypttab automatisieren. An dieser Stelle kommt nun die keyfile-Option ins Spiel. Aus dem vorherigen Beispiel wird:

Das ist allerdings noch nicht alles. cryptsetup muss angewiesen werden, das Medium mit dem Schlüssel vor dem Abarbeiten der crypttab zu mounten. Dazu muss es einen Eintrag für das Medium in der /etc/fstab geben, außerdem muss die der Mountpunkt in /etc/default/cryptdisks eingetragen werden:

Nach dem Entsperren aller verschlüsselten Partitionen wird das Medium automatisch wieder ausgehängt. Zur Sicherheit kann nun noch die initial ram disk neu gebaut werden:

Das Passwort kann auch weiterhin als Ersatz beibehalten (oder mit cryptsetup luksDelKey entfernt) werden. Ist der USB-Stick mit dem Schlüssel eingesteckt, fährt das System ohne Benutzereingaben hoch und entsperrt alle in der crypttab eingetragenen Partitionen selbstständig. Diese Konfiguration funktioniert für alle Partitionen außer der Root-Partition. Da auf dieser Partition gerade die zum Entsperren notwendigen Programme liegen sind hier einige weitere Maßnahmen notwendig.

 

root-Partition mit Schlüssel auf USB-Stick ^

Wie normale Partitionen mit einem Schlüssel auf einem USB-Stick automatisch entsperrt werden können wurde oben schon erklärt. Um das bei der Root-Partition zu ermöglichen sind leider einige weitere Eingriffe nötig. So muss man sicherstellen daß die initrd die nötigen Treiber für den USB-Stick enthält. Außerdem funktioniert das automatische Mounten des Sticks über CRYPTDISKS_MOUNT und die fstab nicht, da die dazu nötigen Informationen in der initrd nicht vorhanden sind.

Es gibt aber eine Alternative. In der crypttab kann man der Partition ein Keyscript zuweisen, welches den Schlüssel besorgt und ihn ausgibt. Dieses Skript wird, sofern es in der crypttab eingetragen ist, automatisch in die initrd übernommen. Es muss alle zum Erlangen des Schlüssels notwendigen Schritte übernehmen, das beinhaltet das Laden der Treiber für den USB-Stick, das Anlegen eines Mountpunktes, das Mounten, die Ausgabe des Schlüssels und das Aushängen des USB-Sticks. Das Skript wird im laufenden Betrieb außer in der initrd nicht benötigt und kann zum Beispiel in /root angelegt werden. Meines sieht folgendermaßen aus:

Da cryptsetup den Schlüssel in der Standardausgabe des Skriptes erwartet, wird die Ausgabe aller anderen Programmaufrufe im Skript in die Fehlerausgabe umgelenkt (1>&2). Außerdem muss das Skript ausführbar sein.

Außerdem muss noch sichergestellt werden, daß die initrd alle nötigen Treiber enthält. update-initramfs fügt automatisch die Module für USB-Speicher hinzu. Die Module für das auf vielen USB-Sticks verwendete FAT-Dateisystem muss man aber ausdrücklich anfordern. Dazu werden in der Datei /etc/initramfs-tools/modules folgende Zeilen hinzugefügt:

Als vorletztes muss nun die crypttab angepasst werden:

Nun wird eine Kopie der alten initrd in /boot erstellt. Diese wird als Ersatz benötigt falls das Entsperren der Root-Partition nicht klappt. Dann kann nämlich das System nicht hochgefahren werden. Startet man neu und verlangt von grub, statt der neuen die alte initrd zu verwenden, kann man die Root-Partition wieder mit dem Passwort entsperren und nach dem Hochfahren den Fehler beheben. Das geht wesentlich schneller als die Benutzung einer Live-CD für diesen Zweck. Als letztes wird dann eine neue initrd erstellt:

Nach einem Neustart wird cryptsetup nun versuchen, den Schlüssel vom USB-Stick einzulesen und damit die Root-Partition zu entsperren. Nachdem das erfolgt ist wird von der initrd zur Root-Partition gewechselt und das System wie gewohnt hochgefahren.

Quellen
http://www.andreas-janssen.de/cryptodisk.html
http://linuxwiki.de/cryptsetup
http://wiki.ubuntuusers.de/LUKS
https://wiki.gentoo.org/wiki/Dm-crypt_full_disk_encryption
Kategorie(n): Anleitungen, Encryption, Grundlagen, IT Syntax, Linux

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

 

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.