LUKS – Betriebssystem verschlüsseln

LUKS (dm-crypt) ist die Standardmethode zur Verschlüsselung des gesamten Betriebssystems unter Linux. Im Gegensatz zu VeraCrypt ist eine nachträgliche Verschlüsselung des Systems mit LUKS nur sehr schwer zu realisieren. Daher wird davon abgeraten und eine Neuinstallation mit konfigurierter LUKS-Partitionierung empfohlen.

Dieser Artikel befasst sich mit den Verschlüsselungsoptionen der wichtigsten Linux-Distributionen Ubuntu, Debian, openSUSE und RHEL. Grundlegende Kenntnisse über die Installation von Linux-Distributionen und die Partitionierung von Festplatten werden vorausgesetzt.

Vollverschlüsselung einrichten

Die folgenden Anleitungen können bei fehlerhafter Anwendung zu Datenverlust führen. Es ist deshalb zwingend vorher ein Backup anzulegen und die Hinweise sind sorgsam zu lesen und umzusetzen.

Der Linux-Bootloader GRUB unterstützt in neueren Versionen das Booten von verschlüsselten Partitionen, so dass eine unverschlüsselte Bootpartition nicht mehr unbedingt notwendig ist. Obwohl eine solche vollständige Verschlüsselung sicherheitstechnische Vorteile bietet, führt das Booten von einer verschlüsselten Boot-Partition oft zu erheblichen Verzögerungen beim Systemstart. Aus diesem Grund gehen die folgenden Vorschläge noch von einer unverschlüsselten Boot-Partition aus.


Debian

Debian bietet in seiner Installationsroutine die Möglichkeit einer automatischen Partitionierung mittels LUKS. Dabei wird die Festplatte mittels LVM (Logical Volume Manager) partitioniert und je nach Nutzerwahl in eine root, swap und home Parition aufgeteilt.

Von dieser automatischen Routine ist in den meisten Fällen allerdings dringend abzuraten. Bei der automatischen Partitionierung wird die Root-Partiton mit lediglich etwas weniger als 10GB angelegt, was sich in der Regel als sehr knapp erweisen dürfte. Die notwendige Boot-Partition ist ebenfalls zu klein, vor allem, wenn man mehrere Kernel parallel installiert hat. Im Gegenzug ist die angelegte Swap-Partition in der Regel viel zu groß, da moderne Systeme mit mehr als 4 GB Arbeitsspeicher eine Swap-Partition eigentlich kaum noch benötigen.

Man sollte deshalb eine manuelle Partitionierung vornehmen. Sofern Debian das einzige Betriebssystem auf der Festplatte sein soll, empfiehlt es sich durch die Auswahl der entsprechenden Festplatte anfangs eine neue Partitionstabelle anzulegen. Bei modernen UEFI Systemen sollte das Paritionsschema wie folgt aussehen (idealisiertes/standardisiertes Modell):

  1. EFI Systempartition (~100 MB)
  2. Boot-Partition (Ext4 mit ~500MB)
  3. LUKS LVM
    1. Root-Partition (minimum 15GB)
    2. Swap (Sofern man kein Suspend-to-Disk benötigt und der Arbeitsspeicher groß genug ist kann diese Partition auch weggelassen werden)
    3. Home-Partiton (beliebige Größe, ggf. gesamter freier Platz)

Die ersten beiden Partitionen werden als normale Partitionen angelegt. Die EFI-Bootpartition wird für UEFI benötigt und die boot-Partition für den Bootloader (i.d.R. GRUB2). Dies ist nicht mehr unbedingt notwendig, aus Performance-Gründen aber immer noch anzuraten. In der boot-Partition werden vor allem die installierten Linux-Kernel gespeichert. Diese ungeschützte Partition verrät bei unbefugtem Zugriff zwar etwas über das installierte System (Kernel-Version, ggf. auch eingesetzte Distribution), beinhaltet aber keine Benutzerdaten.

Danach muss ein verschlüsselter Datenträger konfiguriert werden. Die Installationsroutine konfiguriert hier erst einmal die bisher eingerichteten Partitionen. Anschließend muss der für die Installation vorgesehene freie Bereich ausgewählt werden. Sofern vorher noch keine sensiblen Daten auf der Festplatte gespeichert waren, kann das Überschreiben des Datenträgers abgebrochen werden, da dieser Punkt sonst mehrere Stunden dauern kann (abhängig von der Größe der Festplatte).

Anschließend muss in dem verschlüsselten Bereich ein Logical Volume Manager (LVM) angelegt werden. Nach Auswahl des verschlüsselten LUKS-Partition wird in dieser erst eine Volumen-Gruppe angelegt, gefolgt von logischen Volumen für die Partitionen. Standardmäßig sollten die oben genannten Partitionen für root, swap und home ausreichen.

Abschließend müssen die angelegten logischen Volumen noch mit dem präferierten Dateisystem (Debian-Standard ist ext4) formatiert und die korrekten Einhängepunkte zugewiesen werden.


Ubuntu & offizielle Derivate

Die Verschlüsselung mit LUKS erledigt man in der grafischen Ubuntu Installation im Abschnitt zur Partitionierung der Festplatte. Hierzu muss die Schaltfläche Advanced Features gewählt werden.

Hier kann man eine LVM-basierte Partitionierung wählen. Mit einem zweiten Haken kann man diese zusätzlich verschlüsseln und anschließend ein Passwort festlegen.


OpenSUSE

OpenSUSE bietet von den hier genannten Distributionen die komfortabelste Installationsroutine – zumindest hinsichtlich der Verschlüsselung.

Sobald einen die Installationsroutine zur Partitionierung führt, erstellt man ein neues geführtes Partitionierungssetup.

In diesem kann man initial sofort eine verschlüsselte Partitionierung auswählen. Die Installationsroutine fragt dann noch das gewünschte Passwort ab und weitere Wünsche ab und richtet die Partitionierung entsprechend den Vorgaben ein.

Bei OpenSUSE bedeutet dies standardmäßig eine Root-Partition mit Btrfs. Zudem wird noch eine kleine Swap-Partition mit 2 GB angelegt. Neuere openSUSE-Versionen legen keine Boot-Partition mehr an. Eine separate Home-Partition wird je nach Größe des Speichermediums automatisch vorgeschlagen, kann aber im Rahmen der Partitionierung immer manuell zu- oder abgewählt werden. Abhängig von den gewählten Präferenzen richtet die Installationsroutine entweder ein LVM-Setup ein oder verschlüsselt die Partitionen einzeln via LUKS.


Red Hat Enterprise Linux (RHEL)

RHEL und seine freien Clone bieten in der Installationsroutine Anaconda eine einfache Einrichtung der LUKS-Vollverschlüsselung. Hierzu muss zuerst in der Konfigurationsoberfläche der Installationsroutine das Modul zur Partitionierung geöffnet werden.

Dort kann man unten per Haken in einer Checkbox die Verschlüsselung einrichten. Das System konfiguriert dann automatisch eine LVM-basierte LUKS-Verschlüsselung.

Nach einem Klick auf die Schalfläche Fertig oben links erfolgt noch eine Passwortabfrage.


Abschließende Einrichtung

Alle Distributionen fragen nun vor dem Start des Betriebssystems nach dem LUKS-Passwort. Sofern es lediglich einen Benutzer gibt, kann es sinnvoll sein, eine erneute Passwortabfrage für den Benutzer abzuschalten. Hierzu wählt man die automatische Anmeldung des Benutzers aus. Für openSUSE ist diese bereits in der Installationsroutine vorausgewählt und kann danach auch in den YaST-Benutzereinstellungen geändert werden. Unter Debian und Ubuntu lässt sich dies in den Einstellungen des gewählten Displaymanagers (LightDM, SDDM, oder GDM) festlegen.

Bei einem Mehrbenutzersystem sollte zusätzlich zu LUKS eine Verschlüsselung der Benutzerdaten mittels eCryptFS oder entsprechender Rechte für das jeweilige Homeverzeichnis erfolgen. Andernfalls hat jeder Benutzer theoretisch Zugriff auf die Daten der anderen Systembenutzer.

Lösungen zur Vollverschlüsselung von anderen Betriebssystemen wie FileVault oder BitLocker bieten in der Regel die Möglichkeit einen so genannten Wiederherstellungsschlüssel während des Verschlüsselungsprozesses zu erzeugen. Denn auch wenn man es in dem Moment für unmöglich hält, Passwörter geraten immer mal wieder in Vergessenheit. LUKS bietet das standardmäßig nicht!

Das Thema wird nur sehr selten behandelt, aber wenn man sein System in einen verschlüsselten LVM-Container installiert hat und das Passwort vergisst ist man aufgeschmissen. Daher sollte man prophylaktisch von der Möglichkeit Gebrauch machen mehrere Keys anzulegen (bis zu 8 Keys kann man für das gleiche LUKS-Volume anlegen).

Um also einen s. g. Wiederherstellungsschlüssel anzulegen gibt man in der Konsole des laufenden und entsperren Systems ein:

# cryptsetup luksAddKey /dev/sdaX

Das X ersetzt man durch die Nummer des verschlüsselten Laufwerks. Es erfolgt eine Abfrage des bei der Ersteinrichtung festgelegten Passworts, das man zu diesem Zeitpunkt hoffentlich noch kennt.

Anschließend gibt man einen sehr langen neuen Schlüssel ein. LUKS erlaubt maximal 39 Zeichen. Diesen bewahrt man anschließend an einem sichereren Ort auf.