Installation LMDE 3 mit Verschlüsslung
Erklärung
Linux Mint ist 2018 (und auch schon viele Jahre zuvor) nach den Angaben von DistroWatch das (fast) häufigste heruntergeladene Betriebssystem.
Das übliche Linux Mint basiert jedoch auf Ubuntu, was auch (nahezu) alle (Vorteile- und) Nachteile von Ubuntu mit sich bringt. Ergänzend dazu gibt es die spezielle sogenannte (Linux Mint) Debain Edition, bei welcher das nicht so direkt ist. Ein großes Manko ist die fehlende geführte Installation mit dem Verschlüsseln der Festplatten. Diese Anleitung soll eine Unterstützung zur Bewältigung dieses Vorgangs sein.
Es ist (voller Hoffnung) durch die Bereitstellung einer weiteren Option als alternatives Programm für die Installation Calamares absehbar, dass mittelfristig das nachfolgende "Rumgekrebse" obsolet wird. Im Übrigen gibt es auch aktuell schon Scripte, die zu einer Installation mit einer verschlüsselten Festplatte führen sollen, wobei jedoch keine Variante bei der Verwendung von LMDE 3 erfolgreich getestet wurden konnte.
Bewusst (komplex) stellt diese Anleitung das Verschlüsseln von mehreren Partitionen dar. Das ist nicht zwangsläufig. Auf das Erstellen, Verschlüsseln und Nutzen einer eigenständigen Partition für /home (Verzeichnis für die Daten der Benutzerinnen und Benutzer) kann verzichtet werden. Das gilt auch für das Erstellen einer Partition für die Auslagerung von Arbeitsspeicher (SWAP). Auch die erst einmal völlig unnötige Partition (hier nachfolgend als "backup" bezeichnet) braucht es nicht. Jedoch soll mit dieser Anleitung auch mit aufgezeigt werden was beispielsweise für den Fall des Nutzens von mehreren Partitionen möglich sein könnte. Das kann die Verwendung von weiterer Betriebssystemen oder weiterer Festplatten sein.
Variable | Bedeutung |
---|---|
/dev/sda |
|
root | Label der 2. Partition der Festplatte für / |
boot | Label der 1. Partition der Festplatte für /boot |
home | Label der 3. Partition der Festplatte für /home |
backup | Label der 4. Partition der Festplatte, die erstmal nicht verwendet wird |
Reee | Bezeichnung für die entschlüsselte 2. Partition der Festplatte |
andR | Bezeichnung für die entschlüsselte 3. Partition der Festplatte |
vg-Reee | Bezeichnung der Volumengruppe für das Hauptsystem mit allen Dateien des Betriebssystems (mit Ausnahme von /boot) |
vg-andR | Bezeichnung der Volumengruppe für /home mit den Daten der Benutzerinnen und Benutzer |
vg-Reee-swap | Bezeichnung für das Volumen für die Auslagerung von Arbeitsspeicher |
vg-Reee-system | Bezeichnung für das Volumen für das Betriebssystem |
vg-andR-home | Bezeichnung für das Volumen mit den Daten der Benutzerinnen und Benutzer |
lv-swap | Bezeichnung für das Label des logischen Volumens für die Auslagerung von Arbeitsspeicher |
lv-system | Bezeichnung für das Label des logischen Volumens für das Betriebssystem |
vg--Reee-lv--swap | (sich dann ergebende) Bezeichnung für die Zuweisung des Volumens für die Auslagerung von Arbeitsspeicher |
vg--Reee-lv--system | (sich dann ergebende) Bezeichnung für die Zuweisung des Volumens für das Betreibssystem |
vg--andR-lv--home | (sich dann ergebende) Bezeichnung für die Zuweisung des Volumens mit den Daten der Benutzerinnen und Benutzer |
/target |
|
vor der Installation
Partitionierung der Festplatte
Ziel der exemplarischen Partition
Anzeigen der Partitionierung der Festplatte (nur zu demonstrativen Zwecken, damit zu erkennen ist, was nach der nachfolgenden Abhandlung erstellt werden soll)
fdisk -l /dev/sda
Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 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 identifier: 0x00017ae0
Device Boot Start End Blocks Id System
/dev/sda1 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 106956799 52428800 83 Linux
/dev/sda3 106956800 541863935 217453568 83 Linux
/dev/sda4 541863936 976773119 217454592 83 Linux
Partitionierung mit grafischer Oberfläche
Für den Fall, dass das nicht so (oder so ähnlich) aussieht, so einfach GParted benutzen und entsprechend einrichten.
Partion | File System | Label | Size | Anmerkung |
---|---|---|---|---|
New Partition #1 | ext4 | boot | 2.00 GiB | |
New Partition #2 | linux-swap | swap | 4.00 GiB | nachfolgend nicht einbezogen (Auslagerung von Arbeitsspeicher erfolgt über die die 3. Partition) |
New Partition #3 | ext4 | root | Rest | |
New Partition #4 | ext4 | was auch immer | Anteil vom Rest, wenn gewuenscht | nachfolgend nicht einbezogen |
Partitionierung über die Kommandozeile (als Alternative zur grafischen Oberfläche)
Alternativ kann selbstverständlich die Partionierung auch per Kommandozeile erfolgen.
Wer sich auf die Kommandozeile wagt, meint es oft ernst. Daher noch eine kleine Ergänzung.
Über die gesamte Festplatte können (sollten) pauschal Zufallszahlen geschrieben werden. (Kaffee und Kuchen für die Überbrückung der zu erwartenden nicht unerheblichen Wartezeit bietet sich an.)
dd if=/dev/urandom of=/dev/sda bs=2048 count=1
Statt 2048 würde bei einem PC auch 512 ausreichen. Schaden kann es jedoch nicht. (2048 ist eigentlich für Kisten von SUN kozipiert.)
Partionierung mit fdisk
Partionierung mit gdisk
Verschlüsslungen der Festplatten
Verschlüsseln der 2. Partition (root) der Festplatte
sudo cryptsetup -c aes-xts-plain64 -s 512 luksFormat /dev/sda2
Öffnen der 2. Partition (root) der Festplatte mit einer (selbst bestimmten) Bezeichnung Reee
sudo cryptsetup luksOpen /dev/sda2 Reee
Erstellen der Anbindung des physischen Volumens Reee
sudo pvcreate /dev/mapper/Reee
Erstellen und Anbinden einer Gruppe von Volumen vg-Reee an dem Volumen, welches an Reee angebunden ist
sudo vgcreate vg-Reee /dev/mapper/Reee
Erstellen eines logischen Volumens von 10 GB mit der Bezeichnung lv-swap in der virtuellen Gruppe vg-Reee
sudo lvcreate -L 10G -n lv-swap vg-Reee
Erzeugen des Systems für SWAP, wo vg--Reee-swap (Achtung: nicht vg-Reee-swap) angebunden ist
sudo mkswap /dev/mapper/vg--Reee-lv--swap
Erstellen eines logischen Volumens mit der 100%-igen Größe der verbliebenen Größe mit der Bezeichnung lv-system in der virtuellen Gruppe vg-Reee
sudo lvcreate -l 100%FREE -n lv-system vg-Reee
Erzeugen des Dateisystems EXT4, wo vg--Reee-system (Achtung: nicht vg-Reee-system) angebunden ist
sudo mkfs.btrfs /dev/mapper/vg--Reee-lv--system
Verschlüsseln der 3. Partition (home) der Festplatte
sudo cryptsetup -c aes-xts-plain64 -s 512 luksFormat /dev/sda3
Öffnen der 3. Partition (home) der Festplatte mit einer (selbst bestimmten) Bezeichnung andR
sudo cryptsetup luksOpen /dev/sda3 andR
Erstellen der Anbindung des physischen Volumens andR
sudo pvcreate /dev/mapper/andR
Erstellen und Anbinden einer Gruppe von Volumen vg-andR an dem Volumen, welches an andR angebunden ist
sudo vgcreate vg-andR /dev/mapper/andR
Erstellen eines logischen Volumens mit der 100%-igen Größe der restlichen Grüße in der virtuellen Gruppe vg-Reee
sudo lvcreate -l 100%FREE -n lv-home vg-andR
Erzeugen des Dateisystems EXT4, wo vg--andR-home (Achtung: nicht vg-andR-home) angebunden ist
sudo mkfs.btrfs /dev/mapper/vg--andR-lv--home
während der Installation
Partitionen der Festplatte manuell einhängen
Erstellen eines (des) Verzeichnisses, wohin die Partitionen einhängt werden sollen, um dorthin zu Installieren
sudo mkdir /target
Einhängen der Partitionen, wohin Installiert werden soll
sudo mount /dev/mapper/vg--Reee-lv--system /target
sudo mkdir /target/boot
sudo mount /dev/sda1 /target/boot
sudo mkdir /target/home
sudo mount /dev/mapper/vg--andR-lv--home /target/home
GRUB installieren lassen
bei der grafischen Oberfläche zur Installtion /dev/sdb auswählen
Betriebssystem installieren lassen
neues Betriebssystem einrichten
sudo chroot /target
Erstellen (Bearbeiten) der Datei fstab
nano /etc/fstab
/dev/sda1 /boot ext4 errors=remount-ro 0 2
/dev/mapper/vg--Reee-lv--swap none swap sw 0 0
/dev/mapper/vg--Reee-lv--system / btrfs defaults 0 1
/dev/mapper/vg--andR-lv--home /home btrfs defaults 0 2
Erstellen (Bearbeiten) der Datei crypttab
nano /etc/crypttab
Reee /dev/sda2 none luks
andR /dev/sda3 none luks
Alternativ kann zum Erstellen (Bearbeiten) der Datei crypttab beispielsweise auch die UUID von der jeweiligen Partition (/dev/sda2 und /dev/sda3) eingetragen werden.
Herausfinden der UUID
blkid /dev/sda2
blkid /dev/sda3
nano /etc/crypttab
Reee UUID=1234567-1234-1234-1234-123456789abc none luks
andR UUID=1234567-1234-1234-1234-123456789abc none luks
just foo (for testing)!
echo "dm-crypt" >> /etc/modules
update-initramfs -u -k all
echo "aes" >> /etc/initramfs-tools/modules echo "aes_i586" >> /etc/initramfs-tools/modules echo "aes_x86_64" >> /etc/initramfs-tools/modules echo "aes_generic" >> /etc/initramfs-tools/modules echo "dm-crypt" >> /etc/initramfs-tools/modules echo "dm-mod" >> /etc/initramfs-tools/modules echo "sha256" >> /etc/initramfs-tools/modules echo "sha256_generic" >> /etc/initramfs-tools/modules echo "lrw" >> /etc/initramfs-tools/modules echo "xts" >> /etc/initramfs-tools/modules echo "crypto_blkcipher" >> /etc/initramfs-tools/modules echo "gf128mul" >> /etc/initramfs-tools/modules
update-initramfs -u -k all
GRUB angeben, wo sich / befindet
nano /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="kopt=root=/dev/mapper/vg--Reee-lv--system"
just foo (for testing)!
update-initramfs -u -k all
chroot verlassen
exit
nach der Installation
just foo (for testing)!
sync
just foo (for testing)!
sudo umount /target/home sudo umount /target/boot sudo umount /target sudo lvchange -a n vgR sudo cryptsetup luksClose R
Neustarten!
sudo reboot
zu jedem Betrieb
Passwort für die Verschlüsslung ändern
Um das Passwort für die Festplattenverschlüsselung zu ändern, muss zunächst ein neues Passwort hinzugefügt werden. Es sind bis zu 8 Passphrasen parallel möglich.
sudo cryptsetup luksAddKey /dev/sda2
Das alte Passwort kann, muss aber nicht, entfernt werden.
sudo cryptsetup luksRemoveKey /dev/sda2
----
Anforderungen
Ziele
- möglichst normal funktionsfähiger Betrieb von LMDE 3
- möglichst umfangreiche und einfach zu handhabende Verschlüsslung vom Massenspeicher
- möglichst umfangreiche und einfach zu handhabende Verwendung von Btrfs
Partitionierung und Verschlüsslung des Massenspeichers
durch die Installation von Debian
Um möglichst viel manuellen Aufwand und mögliche (auch schon kleine, jedoch) schwerwiegende Fehler zu vermeiden, verwenden wir das "professionelle" (funktionsumfangreiche und bewährte) Programm für die Installlation von Debian 9.
Alternativ kann selbstverständlich die Partitionierung, Verschlüsslung und Formatierung auch mit der Kommandozeile im Vorfeld der Installation erfolgen.
https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-9.5.0-amd64-netinst.iso
Wer sich auf die Kommandozeile wagt, meint es oft ernst. Daher noch eine kleine Ergänzung.
Über die gesamte Festplatte können (sollten) pauschal Zufallszahlen geschrieben werden. (Kaffee und Kuchen für die Überbrückung der zu erwartenden nicht unerheblichen Wartezeit bietet sich an.)
dd if=/dev/urandom of=/dev/sda bs=2048 count=1
Statt 2048 würde bei einem PC auch 512 ausreichen. Schaden kann es jedoch nicht. (2048 ist eigentlich für Kisten von SUN kozipiert.)
Partion | File System | Label | Size | Anmerkung |
---|---|---|---|---|
New Partition #1 | ext4 | boot | 2.00 GiB | |
New Partition #2 | linux-swap | swap | 4.00 GiB | nachfolgend nicht einbezogen (Auslagerung von Arbeitsspeicher erfolgt über die die 3. Partition) |
New Partition #3 | ext4 | root | Rest | |
New Partition #4 | ext4 | was auch immer | Anteil vom Rest, wenn gewuenscht | nachfolgend nicht einbezogen |
vor der Installation
Ziel der exemplarischen Partition
Anzeigen der Partitionierung der Festplatte (nur zu demonstrativen Zwecken, damit zu erkennen ist, was nach der nachfolgenden Abhandlung erstellt werden soll)
fdisk -l /dev/sda
Disk /dev/sda: 111.8 GiB, 120034123776 bytes, 234441648 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
Disklabel type: dos
Disk identifier: 0x37b46235
Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 499711 497664 243M 83 Linux
/dev/sda2 501758 234440703 233938946 111.6G 5 Extended
/dev/sda5 501760 234440703 233938944 111.6G 83 Linux
Anbinden des (bereits) verschlüsselten Massenspeichers mit grafischer Oberfläche
https://wiki.gnome.org/Apps/Disks
Anbinden des (bereits) verschlüsselten Massenspeichers mit der Kommandozeile (als Alternative zur grafischen Oberfläche)
Partionierung mit fdisk
Partionierung mit gdisk
während der Installation
Partitionen der Festplatte manuell einhängen
Erstellen eines (des) Verzeichnisses, wohin die Partitionen einhängt werden sollen, um dorthin zu Installieren
sudo mkdir -p /target
Einhängen der Partitionen, wohin Installiert werden soll
sudo mount /dev/mapper/vg-root /target
sudo mkdir -p /target/boot
sudo mount /dev/sdb1 /target/boot
sudo btrfs subvolume create /target/home
Anzeigen lassen der Datei … der vorangegangenen Installation mit Debian
xed /target/etc/fstab
# <file system> <mount point> <type> <options> <dump> <pass>
/dev/mapper/vg-root / btrfs defaults 0 0
UUID=1cf0109e-6ada-4cba-9793-502d9b2ffa64 /boot ext2 defaults 0 2
/dev/mapper/vg-home /home btrfs defaults 0 0
/dev/mapper/vg-swap_1 none swap sw 0 0
Anzeigen lassen der Datei … der vorangegangenen Installation mit Debian
xed /target/etc/crypttab
sda5_crypt UUID=effb6007-c2c1-4f29-838f-30dd5b23304d none luks
Anzeigen lassen der Datei … der vorangegangenen Installation mit Debian
xed /target/etc/default/grub
GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
GRUB_CMDLINE_LINUX=""
cp /target/etc/fstab /tmp/
cp /target/etc/crypttab /tmp/
cp /target/etc/default/grub /tmp/
GRUB installieren lassen
bei der grafischen Oberfläche zur Installtion /dev/sda auswählen
Betriebssystem installieren lassen
neues Betriebssystem einrichten
sudo chroot /target
Erstellen (Bearbeiten) der Datei fstab
nano /etc/fstab
/dev/sda1 /boot ext4 errors=remount-ro 0 2
/dev/mapper/lap--vg-swap_1 none swap defaults,noatime 0 2
/dev/mapper/lap--vg-root / btrfs subvol=@,defaults,noatime,space_cache,autodefrag 0 1
/dev/mapper/lap--vg-home /home btrfs subvol=@home,defaults,noatime,space_cache,autodefrag 0 2
Erstellen (Bearbeiten) der Datei fstab
nano /etc/fstab
/dev/mapper/lmde-root / btrfs subvol=@,defaults,noatime,space_cache,autodefrag 0 1
/dev/mapper/lmde-root /home btrfs subvol=@home,defaults,noatime,space_cache,autodefrag 0 2
UUID=d6c7bbfa-b43d-4198-8b71-68917a04b65d /boot ext4 defaults 0 2
/dev/mapper/lmde-swap_1 none swap sw 0 0
Erstellen (Bearbeiten) der Datei crypttab
nano /etc/crypttab
sda5_crypt UUID=22dfae7a-3f5d-49d0-af01-0d49b1147f70 none luks
Alternativ kann zum Erstellen (Bearbeiten) der Datei crypttab beispielsweise auch die UUID von der jeweiligen Partition (/dev/sda2 und /dev/sda3) eingetragen werden.
Herausfinden der UUID
blkid /dev/sda2
nano /etc/crypttab
lap UUID=1234567-1234-1234-1234-123456789abc none luks
just foo (for testing)!
echo "dm-crypt" >> /etc/modules
update-initramfs -u -k all
echo "aes" >> /etc/initramfs-tools/modules echo "aes_i586" >> /etc/initramfs-tools/modules echo "aes_x86_64" >> /etc/initramfs-tools/modules echo "aes_generic" >> /etc/initramfs-tools/modules echo "dm-crypt" >> /etc/initramfs-tools/modules echo "dm-mod" >> /etc/initramfs-tools/modules echo "sha256" >> /etc/initramfs-tools/modules echo "sha256_generic" >> /etc/initramfs-tools/modules echo "lrw" >> /etc/initramfs-tools/modules echo "xts" >> /etc/initramfs-tools/modules echo "crypto_blkcipher" >> /etc/initramfs-tools/modules echo "gf128mul" >> /etc/initramfs-tools/modules
update-initramfs -u -k all
GRUB angeben, wo sich / befindet
nano /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="kopt=root=/dev/mapper/lap--vg-root"
just foo (for testing)!
update-initramfs -u -k all
chroot verlassen
exit
nach der Installation
just foo (for testing)!
sync
just foo (for testing)!
sudo umount /target/home sudo umount /target/boot sudo umount /target sudo lvchange -a n vgR sudo cryptsetup luksClose R
Neustarten!
sudo reboot
zu jedem Betrieb
Passwort für die Verschlüsslung ändern
Um das Passwort für die Festplattenverschlüsselung zu ändern, muss zunächst ein neues Passwort hinzugefügt werden. Es sind bis zu 8 Passphrasen parallel möglich.
sudo cryptsetup luksAddKey /dev/sda2
Das alte Passwort kann, muss aber nicht, entfernt werden.
sudo cryptsetup luksRemoveKey /dev/sda2