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: Automatische Partitionierung
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. Dazu ist in der Installationsroutine die entsprechende Option zu wählen.
Debian: Individuelle Partitionierung
Von dieser automatischen Routine ist in den meisten Fällen allerdings abzuraten. Die automatisiert ermittelten Partitionsgrößen entsprechen oft nicht den individuellen Anforderungen. So wurde in der Vergangenheit die 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 oft 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):
- EFI Systempartition (~100 MB)
- Boot-Partition (Ext4 mit ~500-1.000 MB)
- LUKS LVM
- Root-Partition (minimum 15GB)
- Swap (Sofern man kein Suspend-to-Disk benötigt und der Arbeitsspeicher groß genug ist kann diese Partition auch weggelassen werden)
- Home-Partiton (beliebige Größe, ggf. gesamter freier Platz)
Die ersten beiden Partitionen werden als normale Partitionen erstellt. Die EFI-Bootpartition wird für UEFI benötigt und die Bootpartition für den Bootloader (normalerweise GRUB2). Dies ist nicht mehr zwingend notwendig, wird aber aus Performancegründen empfohlen. In der Boot-Partition wird hauptsächlich der installierte Linux-Kernel gespeichert. Diese ungeschützte Partition verrät bei unbefugtem Zugriff zwar etwas über das installierte System (Kernel-Version, ggf. auch verwendete Distribution), enthält aber keine Benutzerdaten.
Anschließend muss eine verschlüsselte Partition eingerichtet werden. Die Installationsroutine konfiguriert hier zunächst die bisher angelegten Partitionen. Anschließend muss der für die Installation vorgesehene freie Bereich ausgewählt werden. Sofern noch keine sensiblen Daten auf der Festplatte gespeichert sind, 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 ein Logical Volume Manager (LVM) im verschlüsselten Bereich angelegt werden. Nach Auswahl der verschlüsselten LUKS-Partition wird in dieser zunächst eine Volume-Gruppe angelegt, gefolgt von logischen Volumes 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 Volumes noch mit dem bevorzugten Dateisystem (Debian-Standard ist ext4) formatiert und die korrekten Mountpunkte 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 Erweiterte Funktionen … gewählt werden.
Hier kann man eine LVM-basierte Partitionierung mit einer LUKS Verschlüsselung gewählt werden.
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 davon abgeleitete System wie Alma oder Rocket Linux 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
Benutzerkonten schützen
Alle Distributionen fragen nun vor dem Start des Betriebssystems nach dem LUKS-Passwort. Sofern nur ein Benutzer vorhanden ist, kann es sinnvoll sein, die Passwortabfrage für diesen Benutzer zu deaktivieren. Dazu wählt man die automatische Anmeldung des Benutzers. Bei openSUSE ist dies bereits in der Installationsroutine voreingestellt und kann anschließend auch in den YaST-Benutzereinstellungen geändert werden. Unter Debian und Ubuntu kann dies in den Einstellungen des gewählten Display-Managers (LightDM, SDDM oder GDM) festgelegt werden.
Bei einem Mehrbenutzersystem sollte zusätzlich zu LUKS eine Verschlüsselung der Benutzerdaten mittels eCryptFS oder alternativ systemd-homed erfolgen. Zumindest sollten die entsprechenden Rechte für das jeweilige Home-Verzeichnis so eingestellt werden, dass nicht alle Nutzer Zugriff auf alle anderen Profile haben.
Wiederherstellungsschlüssel hinterlegen
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, weshalb dieser Schritt im Nachgang manuell erledigt werden muss.
Dies ist sehr wichtig, denn wenn man sein System in einem 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 können für das gleiche LUKS-Volume angelegt werden).
Um einen so genannten Wiederherstellungsschlüssel zu erstellen, geben Sie in die Konsole des laufenden und entsperrten Systems ein:
# systemd-cryptenroll /dev/nvme0n1p3 --recovery-key ##Laufwerk anpassen
Code-Sprache: PHP (php)
Es erfolgt eine Abfrage des bei der Ersteinrichtung festgelegten Passworts. Anschließend wird der sehr lange Schlüssel angezeigt und kann wahlweise über einen QR Code gescant werden.