zur Startseite

Druckausgabe von https://privat.albicker.org
Iveco Daily 4x4, Hunde und multithematisches Blog

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:

Partitionsschema Linux

  1. EFI-Partition (damals 100MB, heutzutage um 500MB), eine FAT32-Partition, die von einem UEFI-BIOS benötigt wird, um Betriebssysteme zu starten.
  2. 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!)
  3. 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.
  4. 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

  1. Man könnte direkt die oben gezeigten Partitionen root, swap und home 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.
  2. 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.

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:

  1. gparted

    =Bildbeschreibung=

    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.

  2. Laufwerke

    =Bildbeschreibung=

    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.

Partitionierung Debian Installer für LVM/LUKS

Gewählt wird die interne SSD (der 2GB-Datenträger in der zweiten Zeile ist mein USB-Stick mit dem Installer)

Partitionierung Debian Installer für LVM/LUKS

Gemäß der obigen Beschreibung soll eine separate /home-Partition erstellt werden.

Partitionierung Debian Installer für LVM/LUKS

Die beiden Partitionen /EFI und /boot werden auf die Platte geschrieben

Partitionierung Debian Installer für LVM/LUKS

Im nächsten Schritt wird das Passwort für den verschlüsselten Teil der Platte festgelegt,

Partitionierung Debian Installer für LVM/LUKS

sodann wird die Größe der Volume-Group bestimmt (hier der gesamte noch freie Platz des Datenträgers)

Partitionierung Debian Installer für LVM/LUKS

und dann - Überraschung - so würde das ganze Konstrukt dann aussehen:

Partitionierung Debian Installer für LVM/LUKS

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:

Debian Installer Partitionsmanager

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

Debian Installer Partitionsmanager

und nach dem Klick auf “Weiter” hat man die Option, eine neue Partition zu erstellen:

Debian Installer Partitionsmanager

Nach Eintrag der Größe

Debian Installer Partitionsmanager

und Lage der Partition

Debian Installer Partitionsmanager

muß diese dann - ausgehend von den Default-Einstellungen

Debian Installer Partitionsmanager

wie folgt konfiguriert werden:

Debian Installer Partitionsmanager

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:

Debian Installer Partitionsmanager

Nach Abschluss dieser Schritte sieht die Platte dann so aus (grün markiert die angelegten Partitionen):

Debian Installer Partitionsmanager

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:

Debian Installer Partitionsmanager

Diese wird benannt

Debian Installer Partitionsmanager

und als physikalisches Volume für Verschlüsselung konfiguriert:

Debian Installer Partitionsmanager

Mittels Anlegen der Partition beenden gelangt man zurück zur Übersicht, dort ist der freie Platz jetzt als verschlüsselte Partition eingetragen:

Debian Installer Partitionsmanager

Bevor es jetzt weitergeht, müssen die vorgemerkten Änderungen allesamt auf die Platte geschrieben werden:

Debian Installer Partitionsmanager

Im nächsten Schritt kann ein verschlüsselter Datenträger angelegt werden:

Debian Installer Partitionsmanager

Hierfür wird die eben angelegte 3. Partition ausgewählt:

Debian Installer Partitionsmanager

Nach dem Abschluß der Konfiguration

Debian Installer Partitionsmanager

wird der neu erzeugte verschlüsselte Datenträger durch Löschen/Überschreiben mit zufälligen Daten “gesäubert”:

Debian Installer Partitionsmanager

Nachdem der zeitlich etwas länger währende Löschvorgang beendet ist, muß das Passwort für den verschlüsselten Datenträger festgelegt werden:

Debian Installer Partitionsmanager

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:

Debian Installer Partitionsmanager

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.

Debian Installer Partitionsmanager

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.

Debian Installer Partitionsmanager

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.

Debian Installer Partitionsmanager

Der Installer ist der Meinung, an dieser Stelle erstmal die ganzen Änderungen mal wieder auf die Festplatte schreiben zu wollen …

Debian Installer Partitionsmanager

Eine Kontrolle der Konfigurationsdetails zu diesem Zeitpunkt

Debian Installer Partitionsmanager

zeigt: es gibt viel freien Platz ohne Volumes oder Volume-Gruppen - das muß jetzt geändert werden.

Debian Installer Partitionsmanager

Dazu muß zunächst eine Volume-Gruppe erstellt werden, quasi eine “Hülle” zur späteren Aufnahme der eigentlichen Partitionen (Volumes).

Debian Installer Partitionsmanager

Dazu wird ein Name vergeben

Debian Installer Partitionsmanager

und der physikalische Plattenplatz ausgewählt, wo diese Volume-Group erstellt werden soll - hier also innerhalb des verschlüsselten Bereichs sda3_crypt.

Debian Installer Partitionsmanager

Eine Kontrolle der Konfigurationsdetails

Debian Installer Partitionsmanager

zeigt: alles wie gewünscht:

Debian Installer Partitionsmanager

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:

Debian Installer Partitionsmanager

In den aufeinanderfolgenden Schritten des Installers müssen zunächst die Volume-Gruppe ausgewählt

Debian Installer Partitionsmanager

und sodann der Name

Debian Installer Partitionsmanager

und die Größe

Debian Installer Partitionsmanager

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:

Debian Installer Partitionsmanager

und im Detail:

Debian Installer Partitionsmanager

Die Verwaltung logischer Volumes kann nun beendet werden

Debian Installer Partitionsmanager

und in der Übersicht des Partitionsmanagers zeigt sich das folgende Bild:

Debian Installer Partitionsmanager

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:

Debian Installer Partitionsmanager

Die Partition wir benutzt als Ext4-Journaling-Dateisystem mit dem Einbindungspunkt /home.

Debian Installer Partitionsmanager

Analog ist vorzugehen für die /-Partition (ebenfalls ext4). Die swap-Partition wird Auslagerungsspeicher gekennzeichnet:

Debian Installer Partitionsmanager

Schlussendlich sieht das Ergebnis im Partitionsmanager so aus (zusammengesetzt wegen zu knapper Fenstergröße):

Debian Installer Partitionsmanager

Die Partitionierung ist beendet und kann übernommen, d. h. auf die Festplatte geschrieben werden.

Debian Installer Partitionsmanager

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