Aktionen

Ubuntu Server zweite Festplatte mit LUKS verschlüsseln und beim Boot automatisch einbinden sowie Festplatte im laufenden Betrieb vergrößern: Unterschied zwischen den Versionen

Aus znilwiki

Zeile 88: Zeile 88:
  Festplattenbezeichner: 357E98E9-94AA-4982-8244-AB5A910BC31A
  Festplattenbezeichner: 357E98E9-94AA-4982-8244-AB5A910BC31A
   
   
  Gerät      Anfang    Ende Sektoren Größe Typ
  '''Gerät      Anfang    Ende Sektoren Größe Typ'''
  /dev/sda1    2048    4095    2048    1M BIOS boot
  /dev/sda1    2048    4095    2048    1M BIOS boot
  /dev/sda2    4096  4198399  4194304    2G Linux-Dateisystem
  /dev/sda2    4096  4198399  4194304    2G Linux-Dateisystem

Version vom 18. Mai 2026, 11:59 Uhr


Dieses Thema ist noch nicht vollständig! Es wird noch daran gearbeitet!


Changelog:

  • 18.05.2026 erste Version

Vorwort

Ich nutze virtuelle Cloud-Server auch für Backups und war am überlegen ob ich deren Dateisystem verschlüsseln soll.
Dabei habe ich ausprobiert, sowohl die Boot-Festplatte als auch eine zusätzlichen Datenfestplatte zu verschlüsseln.
Beim Start des Systems soll aber nur einmal das Passwort abgefragt werden und danach automatisch alle Festplatten entschlüsselt und in das Dateisystem eingehängt werden.
Da habe ich einen Moment für gebraucht, deshalb habe ich mir wie immer eine Schritt-für-Schritt-Anleitung geschrieben damit ich das später auch noch mal hinbekomme.

Als Clou habe ich - mit Unterstützung von Google Gemini - ein Skript für das Vergrößern der Festplatten auch mit LUKS-Verschlüsselung erstellt.


Hardwarekonfiguration

Für diesen Beitrag nutze ich eine Proxmox-VM mit 2 Festplatten:


Hard Disk (scsi0) mit 32GB ist dabei die Betriebssystem Festplatte und liegt auf einer NVMe,
Hard Disk (scsi1) mit 512GB ist das Datengrab und liegt auf einem RAID5 aus drehenden Festplatten


Installation Grundsystem mit Verschlüsselung

Ich installiere hier Ubuntu Server 26.04 LTS, sollte mit anderen Versionen und Systemen wie Debian ähnlich sein.
Dabei wähle ich die Festplattenverschlüsselung direkt im Setup aus.
Das Setup an sich überspringe ich bis zu dem Teil mit der Festplattenauswahl.
Wer genauere Installationsanweisung haben möchte, den Verweise ich auf meine Universalanleitung dazu: Installation Ubuntu 2604 oder Installation Ubuntu 2404
Diese Verwende ich auch immer in meinen anderen Artikeln.

Wichtig bei der Sprachauswahl ist die richtige Tastatur - wenn beim Booten das Passwort für die Verschlüsselung abgefragt wird, ist das gewählte Tastaturlayout aktiv - wichtig für Sonderzeichen und Umlaute im Verschlüsselungspasswort!
Wenn der Dialog Begleitete Speicherplatzkonfiguration erscheint beachtet folgendes:


  • Achtet darauf das die richtige Festplatte ausgewählt ist! Bei mir war die 512G Festplatte vorausgewählt und ich musste händisch zu 32G wechseln
  • Setzt den Haken bei Die LVM-Gruppe mit LUKS verschlüsseln
  • Vergebt ein Passwort / eine Passphrase die Ihr dann zukünftig zum entsperren des System beim Booten eingeben müsst
Hinweis:Achtet beim Passwort auf die Sonderzeichen! Ein & machte bei mir Probleme in der VM-Konsole. Eigentlich ist die Belegung an dieser Stelle ja Deutsch, bei mir gab es im ersten Anlauf keine Probleme, in den Versuchen danach aber dann doch. Ich habe dann erst ein anderes Kennwort genommen und das gewünschte später als 2. dazu genommen

Im der Zusammenfassung sieht das dann so bei mir aus:


Die 512G sind noch unbenutzt, auf den 32G richtet er das LVM-Volume ubuntu-vg mit der Datenpartition ubuntu-lv ein welche er nach / mounted.
Wer sich wundert das da von den 29.980G nur 14.988G im Dateisystem landet:
Ubuntu nimmt - bei der Verwendung von LVM - ab Werk nur den halben verfügbaren Speicher, ganz oben steht unterhalb von ubuntu-vg die Zeile mit

freier Speicherplatz                     14.992G

Um diesen auch zu nutzen, bewegt den Fokus mit den Pfeiltasten auf die Zeile mit ubuntu-lv und rückt Enter:


Wählt Edit:


Und setzt in diesem Dialog den Wert auf das Maximum:


Jetzt sieht die Zusammenfassung so aus:


Der einzige freie Speicherplatz ist nun die 2. Festplatte.
Der Rest des Setups wie gewohnt / gehabt.

Am Ende des Setups erfolgt der erste Reboot - und Ihr müsst zum ersten mal das Passwort zum entsperren eingeben:




Anmeldung nach dem Neustart

Nach dem Reboot habe ich mich angemeldet und bin zum root gewechselt.
Meine Mappings sehen nun so aus:

df -h

Ausgabe:

Dateisystem                       Größe Benutzt Verf. Verw% Eingehängt auf
tmpfs                              329M   1008K  328M    1% /run
none                               1,0M       0  1,0M    0% /run/credentials/systemd-cryptsetup@dm_crypt\x2d0.service
/dev/mapper/ubuntu--vg-ubuntu--lv   30G    5,2G   23G   19% /
tmpfs                              822M       0  822M    0% /dev/shm
none                               1,0M       0  1,0M    0% /run/credentials/systemd-journald.service
tmpfs                              822M       0  822M    0% /tmp
none                               1,0M       0  1,0M    0% /run/credentials/systemd-resolved.service
/dev/sda2                          2,0G    186M  1,7G   11% /boot
none                               1,0M       0  1,0M    0% /run/credentials/systemd-networkd.service
none                               1,0M       0  1,0M    0% /run/credentials/getty@tty1.service
tmpfs                              165M    8,0K  165M    1% /run/user/1000

Im LVM gibt es nur die eine Volume Group mit der 32G Festplatte:

vgs

Ausgabe:

  VG        #PV #LV #SN Attr   VSize  VFree
  ubuntu-vg   1   1   0 wz--n- 29,98g    0

Die zweite. noch leere Festplatte ist die /dev/sdb:

fdisk -l

Ausgabe:

Festplatte /dev/sda: 32 GiB, 34359738368 Bytes, 67108864 Sektoren
Festplattenmodell: QEMU HARDDISK
Einheiten: Sektoren von 1 * 512 = 512 Bytes
Sektorgröße (logisch/physikalisch): 512 Bytes / 512 Bytes
E/A-Größe (minimal/optimal): 512 Bytes / 512 Bytes
Festplattenbezeichnungstyp: gpt
Festplattenbezeichner: 357E98E9-94AA-4982-8244-AB5A910BC31A

Gerät       Anfang     Ende Sektoren Größe Typ
/dev/sda1     2048     4095     2048    1M BIOS boot
/dev/sda2     4096  4198399  4194304    2G Linux-Dateisystem
/dev/sda3  4198400 67106815 62908416   30G Linux-Dateisystem


Festplatte /dev/sdb: 512 GiB, 549755813888 Bytes, 1073741824 Sektoren
Festplattenmodell: QEMU HARDDISK
Einheiten: Sektoren von 1 * 512 = 512 Bytes
Sektorgröße (logisch/physikalisch): 512 Bytes / 512 Bytes
E/A-Größe (minimal/optimal): 512 Bytes / 512 Bytes


Festplatte /dev/mapper/dm_crypt-0: 29,98 GiB, 32192331776 Bytes, 62875648 Sektoren
Einheiten: Sektoren von 1 * 512 = 512 Bytes
Sektorgröße (logisch/physikalisch): 512 Bytes / 512 Bytes
E/A-Größe (minimal/optimal): 512 Bytes / 512 Bytes


Festplatte /dev/mapper/ubuntu--vg-ubuntu--lv: 29,98 GiB, 32191283200 Bytes, 62873600 Sektoren
Einheiten: Sektoren von 1 * 512 = 512 Bytes
Sektorgröße (logisch/physikalisch): 512 Bytes / 512 Bytes
E/A-Größe (minimal/optimal): 512 Bytes / 512 Bytes

Diese 512G Festplatte möchte ich nun als verschlüsseltes Laufwerk nach /opt mounten.




Weitere Passphrasen für das Entsperren angeben

Wer will kann weitere Passphrasen für das Bootlaufwerk angeben, diese funktionieren dann alle gleichberechtigt.
Kann auch als Trick genutzt werden wenn es Probleme mit der Tastaturbelegung gibt.
Als root

cryptsetup luksAddKey /dev/sda3

Dann fragt er ein bestehendes und dann 2 mal das neue Kennwort ab:

Geben Sie irgendeine bestehende Passphrase ein:
Geben Sie die neue Passphrase für das Schlüsselfach ein:
Passphrase bestätigen:

Und in Zukunft kann auch dieses Kennwort genutzt werden.





nano /etc/systemd/system/decrypt-luks_sdb.service
[Unit]
Description=Decrypt and open /dev/sdb
Documentation=man:cryptsetup
DefaultDependencies=no
Conflicts=shutdown.target
After=local-fs.target
Before=shutdown.target
BindsTo=dev-sdb.device
After=dev-sdb.device
#Before=var-lib-docker.mount
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/sbin/cryptsetup luksOpen /dev/sdb luks_sdb --key-file /etc/luks/luks_sdb
ExecStartPost=/usr/sbin/vgscan ; /usr/sbin/vgchange -ay
ExecStop=/usr/sbin/vgchange -a n luks_sdb ; /usr/sbin/cryptsetup luksClose luks_sdb
TimeoutSec=90s


nano /etc/systemd/system/opt.mount
# this systemd unit will mount the LVM logical volume
# /dev/luks_sdb/opt at /opt
[Unit]
Description=Mount luks_sdb
DefaultDependencies=no
ConditionPathExists=/opt
Requires=decrypt-luks_sdb.service
After=decrypt-luks_sdb.service
[Mount]
What=/dev/luks_sdb/opt
Where=/opt
[Install]
WantedBy=multi-user.target

Quellen