Linux-Installation (Debian) mit verschlüsseltem Datenträger (LUKS, LVM)
veröffentlicht am 26.05.2024 mit 2225 Worten - Lesezeit: 11 Minute(n) in * LINUX *
Inhaltsverzeichnis
Bereits im letzten Artikel hatte ich angekündigt, die Installation eines Debian 12-Linux-Systems mit verschlüsselter Festplatte genauer zu beschreiben - das insbesondere deswegen, weil die Einrichtung nicht wirklich selbsterklärend ist.
Plattenpartitionierung
“Traditionelle” Vorgehensweise
Zuletzt “umgelernt” bezüglich Partitionstabelle und Partitionsschema hatte ich vor 12 Jahren, als ich mich mit meinem ersten Rechner mit UEFI-BIOS beschäftigt hatte.
Seither sieht mein Partitionsschema durchweg wie folgt aus:
- EFI-Partition (damals 100MB, heutzutage um 500MB), eine FAT32-Partition, die von einem UEFI-BIOS benötigt wird, um Betriebssysteme zu starten.
- System-Partition (auch “root”-Partition genannt): enthält das komplette Betriebssystem und alle installierten Programme, hier habe ich bisher immer mit 65GB Partitionsgröße gearbeitet, das war immer ausreichend groß. Auf meinem erwähnten Notebook belegte das frisch installierte Debian 12 mit Cinnamon-Desktop und den Standard-Anwendungen weniger als 7GB, mit allen von mir installierten weiteren Programmen waren es dann 20GB (keine Flatpaks oder snaps!)
- Swap (Auslagerungsspeicher): hier rechne ich derzeit immer mindestens
RAM + 20%
als nötige Größe, der Speicher wird benötigt, falls das System in den Ruhezustand versetzt werden soll. - Home-Partition mit allen Daten aller Benutzer - diese Partition füllt immer den kompletten Rest der Festplatte/SSD aus.
Rahmenbedingungen bei Verschlüsselung
Zunächst die Begrifflichkeiten:
LUKS - Linux Unified Key Setup
LUKS ist der Standard für die Verschlüsselung von Linux-Festplatten. Durch die Bereitstellung eines standardisierten Festplattenformats erleichtert es nicht nur die Kompatibilität zwischen den Distributionen, sondern ermöglicht auch die sichere Verwaltung mehrerer Benutzerpasswörter. LUKS speichert alle notwendigen Setup-Informationen im Partitionsheader, so dass die Benutzer Daten nahtlos transportieren oder migrieren können.
LVM - Logical Volume Manager
Es handelt sich um ein Verfahren, um Partitionen — auch über mehrere Festplatten hinweg — dynamisch zu verwalten. Es wird eine zusätzliche logische Schicht zwischen Partitionstabelle und den Dateisystemen hinzugefügt.
Was bedeutet das im einfachen Fall in der Praxis?
Die oben gezeigten (primären) Partitionen enthalten direkt die gespeicherten Daten. Im Falle der Anwendung des LVM würde so eine Partition quasi eine Hülle darstellen, innerhalb derer dann die eigentlichen Partitionen angelegt werden. Die Älteren unter uns erinnert das ein bißchen an die erweiterten Partitionen, die auf Festplatten mit MS-DOS-Partitionstabelle vor ein paar Jahrzehnten üblich waren.
Zusammenhang zur Verschlüsselung
- Man könnte direkt die oben gezeigten Partitionen
root
,swap
undhome
verschlüsseln.- Nachteil 1: für jede Partition muß dann ein Schlüssel festgelegt und beim Start des Rechners eingegeben werden.
- Nachteil 2: das System wird bei Verschlüsselung der
root
-Partition nicht starten können, weil der Bootloader ebenfalls verschlüsselt ist.
- Man könnte die Verschlüsselung auf
home
(mit den Nutzdaten) beschränken.- Nachteil: der Installer wird ggf. monieren, daß
swap
nicht verschlüsselt ist und daher ggf. eine Sicherheitslücke entsteht, weil auf unverschlüsselte Daten im Auslagerungsspeicher zugegriffen werden kann.
- Nachteil: der Installer wird ggf. monieren, daß
Die bevorzugte Variante sieht daher so aus:
Man erstellt neben der EFI
-Partition eine /boot
-Partition für den Bootloader, beide unverschlüsselt. Sodann wird eine sog. Volume Group erstellt, diese wird verschlüsselt. Innerhalb der Volume Group werden dann die Partitionen root
, swap
und home
als Logical Volumes angelegt.
Damit wird maximaler Verschlüsselungsschutz erzeugt und nur die Eingabe eines (hoffentlich hinreichend langen und sicheren) Paßworts beim Systemstart erforderlich.
Hier nun zwei Versuche, das mit Bordmitteln grafisch darzustellen:
-
gparted
Während die Volume Group noch dargestellt wird als
/dev/sda3
, sind die darin gespeicherten Logical Volumes nicht mehr darstellbar - hier stellt wohl die Verschlüsselung eine Barriere dar. -
Laufwerke
Hier wird die Partition 3 als LUKS-verschlüsselt dargestellt, die dann die Logical Volumes beinhaltet. Letztere sind dann links in der Übersicht als Blockgeräte gelistet.
Schön ist keine der beiden Darstellungen. Zum Vergleich hier noch die Ausgabe aus dem Kommandozeilen-Tool parted
:
(parted) print all
Model: ATA MTFDDAV256TDL-1A (scsi)
Disk /dev/sda: 256GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 512MB 511MB fat32 EFI boot, esp
2 512MB 1023MB 512MB ext2 boot
3 1023MB 256GB 255GB Linux
Model: Linux device-mapper (linear) (dm)
Disk /dev/mapper/fujitsu--vg-Daten: 170GB
Sector size (logical/physical): 512B/512B
Partition Table: loop
Disk Flags:
Number Start End Size File system Flags
1 0,00B 170GB 170GB ext4
Error: /dev/mapper/sda3_crypt: unrecognised disk label
Model: Linux device-mapper (crypt) (dm)
Disk /dev/mapper/sda3_crypt: 255GB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:
Model: Linux device-mapper (linear) (dm)
Disk /dev/mapper/fujitsu--vg-swap: 20,0GB
Sector size (logical/physical): 512B/512B
Partition Table: loop
Disk Flags:
Number Start End Size File system Flags
1 0,00B 20,0GB 20,0GB linux-swap(v1)
Model: Linux device-mapper (linear) (dm)
Disk /dev/mapper/fujitsu--vg-root: 65,0GB
Sector size (logical/physical): 512B/512B
Partition Table: loop
Disk Flags:
Number Start End Size File system Flags
1 0,00B 65,0GB 65,0GB ext4
Ähnlich sieht die Ausgabe von fdisk
aus (die UUIDs habe ich hier gekürzt):
root@fujitsu:/# fdisk -x Disk /dev/sda: 238,47 GiB, 256060514304 bytes, 500118192 sectors Disk model: MTFDDAV256TDL-1A Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: 56675ACB-E62E-4C01-B57A-6AAF45ED1E03 First usable LBA: 34 Last usable LBA: 500118158 Alternative LBA: 500118191 Partition entries starting LBA: 2 Allocated partition entries: 128 Partition entries ending LBA: 33 Device Start End Sectors Type-UUID UUID Name Attrs /dev/sda1 2048 999423 997376 00A0C93EC93B 4E5738FAC26E EFI /dev/sda2 999424 1998847 999424 3D69D8477DE4 A97FAC8FCF60 boot /dev/sda3 1998848 500117503 498118656 3D69D8477DE4 E834BBC87919 Linux Disk /dev/mapper/sda3_crypt: 237,51 GiB, 255019974656 bytes, 498085888 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/mapper/fujitsu--vg-root: 60,54 GiB, 64999129088 bytes, 126951424 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/mapper/fujitsu--vg-swap: 18,63 GiB, 19998441472 bytes, 39059456 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk /dev/mapper/fujitsu--vg-Daten: 158,34 GiB, 170020306944 bytes, 332070912 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes
Der Befehl lsblk
stellt das Ergebnis mit weniger Details, aber strukturiert dar wie im folgenden Beispiel:
root@fujitsu:/# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 238,5G 0 disk
├─sda1 8:1 0 487M 0 part /boot/efi
├─sda2 8:2 0 488M 0 part /boot
└─sda3 8:3 0 237,5G 0 part
└─sda3_crypt 254:0 0 237,5G 0 crypt
├─fujitsu--vg-root 254:1 0 60,5G 0 lvm /
├─fujitsu--vg-swap 254:2 0 18,6G 0 lvm [SWAP]
└─fujitsu--vg-Daten 254:3 0 158,3G 0 lvm /home
Schlussendlich bleibt festzustellen: alle oben erwähnten Teile der Partitionierung sind da …
Die Praxis im Debian-Installer
Wie wird das jetzt im grafischen Debian-Installer umgesetzt?
Vorbemerkung: Ich setze hier an der Stelle im Ablauf des Installers an, an der die Partitionierung des Datenträgers beginnt.
1. Versuch mit ‘geführter Partitionierung’ - abgebrochen
Im ersten Versuch nutze ich die geführte Partitionierung. Es soll die gesamte Platte genutzt und ein verschlüsseltes LVM eingerichtet werden.
Gewählt wird die interne SSD (der 2GB-Datenträger in der zweiten Zeile ist mein USB-Stick mit dem Installer)
Gemäß der obigen Beschreibung soll eine separate /home
-Partition erstellt werden.
Die beiden Partitionen /EFI
und /boot
werden auf die Platte geschrieben
Im nächsten Schritt wird das Passwort für den verschlüsselten Teil der Platte festgelegt,
sodann wird die Größe der Volume-Group bestimmt (hier der gesamte noch freie Platz des Datenträgers)
und dann - Überraschung - so würde das ganze Konstrukt dann aussehen:
Die resultierenden Größen der Partitionen haben so gut wie gar nichts damit zu tun, wie ich mir das so vorstelle (siehe oben) - und eine Option, darauf Einfluss zu nehmen, kann ich nicht finden. Also habe ich an dieser Stelle abgebrochen.
2. Versuch mit ‘manueller Partitionierung’ - erfolgreich
Ich stelle hier nicht den kompletten Verlauf des Installers dar, sondern beschränke mich auf den Teil, der sich mit dem Einrichten des Datenträgers beschäftigt, Stichwort: Festplatten partitionieren.
Und wie in der Kapitelüberschrift genannt greifen wir hier zur manuellen Partitionierung:
Zum Booten notwendige Partitionen
Wie weiter oben ausgeführt werden zum Systemstart zwei “herkömmliche” Partitionen benötigt: die beiden Partitionen /EFI
und /boot
, diese werden im ersten Schritt angelegt.
Der freie Speicherplatz wird ausgewählt
und nach dem Klick auf “Weiter” hat man die Option, eine neue Partition zu erstellen:
Nach Eintrag der Größe
und Lage der Partition
muß diese dann - ausgehend von den Default-Einstellungen
wie folgt konfiguriert werden:
Damit ist dann die Partition EFI
erstellt. Dieselben Schritte werden dann ein zweites Mal durchgeführt für die Partition /boot
- allerdings mit etwas anderen Einstellungen am letzten Bildschirm:
Nach Abschluss dieser Schritte sieht die Platte dann so aus (grün markiert die angelegten Partitionen):
Anlegen des verschlüsselten Teils des Datenträgers / LVM
Im ersten Schritt wird im freien Speicher (hier von 255.0 GB) eine weitere Partition angelegt:
Diese wird benannt
und als physikalisches Volume für Verschlüsselung konfiguriert:
Mittels Anlegen der Partition beenden gelangt man zurück zur Übersicht, dort ist der freie Platz jetzt als verschlüsselte Partition eingetragen:
Bevor es jetzt weitergeht, müssen die vorgemerkten Änderungen allesamt auf die Platte geschrieben werden:
Im nächsten Schritt kann ein verschlüsselter Datenträger angelegt werden:
Hierfür wird die eben angelegte 3. Partition ausgewählt:
Nach dem Abschluß der Konfiguration
wird der neu erzeugte verschlüsselte Datenträger durch Löschen/Überschreiben mit zufälligen Daten “gesäubert”:
Nachdem der zeitlich etwas länger währende Löschvorgang beendet ist, muß das Passwort für den verschlüsselten Datenträger festgelegt werden:
Anlegen einer Volume-Group im verschlüsselten Teil
Nach den vorigen Schritten ist eine zwar verschlüsselte, aber ansonsten “normale” Datenpartition entstanden, hier in ext4
formatiert:
Wollte man jetzt Linux in der Form installieren, daß “alles in einer Partition” steckt, dann könnte man dieser Partition den Mountpoint /
zuweisen und wäre fertig.
Ich möchte aber das für mich bewährte Partitonsschema beibehalten mit getrennten Partitionen für das Betriebssystem, den Swap-Auslagerungsspeicher und die Nutzdaten der Benutzer. Deshalb muß zunächst der Typ dieser verschlüsselten Partition geändert werden.
Nach Auswahl des Eintrags des verschlüsselten Volumes gelangt man in einen Auswahldialog, der den Partitionstyp dahingehend ändert, daß darin eine Gruppe von logischen Volumes angelegt werden kann.
Dort kann man dann den Logical Volume Manager konfigurieren - z. B. eine Gruppe (Volume Group) für die Erstellung weiterer Partitionen anlegen, wie später beschrieben wird.
Der Installer ist der Meinung, an dieser Stelle erstmal die ganzen Änderungen mal wieder auf die Festplatte schreiben zu wollen …
Eine Kontrolle der Konfigurationsdetails zu diesem Zeitpunkt
zeigt: es gibt viel freien Platz ohne Volumes oder Volume-Gruppen - das muß jetzt geändert werden.
Dazu muß zunächst eine Volume-Gruppe erstellt werden, quasi eine “Hülle” zur späteren Aufnahme der eigentlichen Partitionen (Volumes).
Dazu wird ein Name vergeben
und der physikalische Plattenplatz ausgewählt, wo diese Volume-Group erstellt werden soll - hier also innerhalb des verschlüsselten Bereichs sda3_crypt
.
Eine Kontrolle der Konfigurationsdetails
zeigt: alles wie gewünscht:
Der nicht zugewiesene Platz (nichtzugewiesene physikalische Volumes) ist verschwunden und stattdessen gibt es jetzt ein verwendetes physikalische Volume mit einer Volume-Gruppe.
Anlegen von Partitionen im verschlüsselten Teil des Datenträgers
Wie schon angemerkt - die Volume-Gruppe ist bisher noch eine leere Hülle. Deshalb müssen darin jetzt Logische Volumes erstellt werden:
In den aufeinanderfolgenden Schritten des Installers müssen zunächst die Volume-Gruppe ausgewählt
und sodann der Name
und die Größe
des zu erstellenden Logischen Volumes angegeben werden.
Diese Schritte sind nach der root
-Partition für das Betriebssystem auch für die Partitionen für den Swap-Auslagerungsspeicher (in meinem Fall hier 20GB) und die Datenpartition (hierfür verwende ich den kompletten Rest des Speicherplatzes) zu wiederholen. Danach sieht das Ergebnis so aus:
und im Detail:
Die Verwaltung logischer Volumes kann nun beendet werden
und in der Übersicht des Partitionsmanagers zeigt sich das folgende Bild:
Es sind ganz oben in der Auflistung 3 Einträge LVM
hinzugekommen, alle in der Volume-Gruppe VG fujitsu-vg
mit den Bezeichnungen/Eigenschaften der Logischen Volumes LV Daten
mit 170GB, LV root
mit 65GB und LV swap
mit 20GB.
Formatieren und Festlegen der Mountpoints
Nun sind alle logischen Partitionen angelegt. Diese müssen im nächsten Schritt noch mit einem Dateisystem formatiert und einem Mountpoint zugewiesen werden. Das zeige ich hier am Beispiel der /home
-Partition - bereits markiert im folgenden Screenshot:
Die Partition wir benutzt als Ext4-Journaling-Dateisystem
mit dem Einbindungspunkt /home
.
Analog ist vorzugehen für die /
-Partition (ebenfalls ext4
). Die swap
-Partition wird Auslagerungsspeicher gekennzeichnet:
Schlussendlich sieht das Ergebnis im Partitionsmanager so aus (zusammengesetzt wegen zu knapper Fenstergröße):
Die Partitionierung ist beendet und kann übernommen, d. h. auf die Festplatte geschrieben werden.
Die Partitionen sind angelegt, formatiert und den Mountpoints zugewiesen - nun kann der Installer wie gewohnt fortgesetzt werden mit der Installation des Grundsystems und des Bootloaders Grub …
Das Ergebnis
Hier nochmal die auf den ersten Blick schöne Darstellung des Ergebnisses, die der Befehl lsblk
liefert:
root@fujitsu:/# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 238,5G 0 disk
├─sda1 8:1 0 487M 0 part /boot/efi
├─sda2 8:2 0 488M 0 part /boot
└─sda3 8:3 0 237,5G 0 part
└─sda3_crypt 254:0 0 237,5G 0 crypt
├─fujitsu--vg-root 254:1 0 60,5G 0 lvm /
├─fujitsu--vg-swap 254:2 0 18,6G 0 lvm [SWAP]
└─fujitsu--vg-Daten 254:3 0 158,3G 0 lvm /home
Kleiner Schönheitsfehler:
Standardmäßig werden die Größen in Byte ausgedrückt und die Präfixe sind Potenzen der Form 2^10 (1024). Die Abkürzungen der Symbole werden zur besseren Lesbarkeit abgeschnitten, indem jeweils nur der erste Buchstabe dargestellt wird. Beispiele: »1 KiB« und »1 MiB« werden als »1 K« bzw. »1 M« dargestellt. Die Erwähnung des »iB«-Anteils, der Teil der Abkürzung ist, entfällt absichtlich.
Alternative wäre die Option -b
mit dezimalen Größenangaben - dann aber in Byte als endlos lange Zahlen …
Soweit meine Beschreibung.
„Wenn man sagt, die Privatsphäre ist mir egal, ich habe nichts zu verbergen, dann ist das so, wie wenn man sagt, die Meinungsfreiheit ist mir egal, ich habe nichts zu sagen.“
— Edward Snowden —
weitere Artikel
- Die neue Linux-Distribution - ein 'Rolling-Release'?
- Warum eine neue/andere Linux-Distribution?
- Systempflege mit System: Linux Mint und das Installationsprotokoll/-script
- Debian Versionsupdate: Bullseye nach Bookworm
- Debian Versionsupdate: Buster nach Bullseye