Arch Linux mit lvm, dm-crypt und luks verschlüsselt installieren

Erstellt am 28.01.2019


Arch Linux Logo

Kurze Einführung in das Thema Verschlüsselung

Ein Arch Linux verschlüsselt zu installieren ist keine große Kunst. Ein paar Kleinigkeiten müssen bei der Installation beachtet werden und das Betriebssystem läuft rund.
Im folgenden Tutorial möchte ich euch zeigen, wie schnell das klappt. Als Desktop habe ich zusätzlich noch Gnome verwendet.

Bevor es jedoch losgeht, möchte ich kurz darauf eingehen, warum überhaupt ein System verschlüsselt sein sollte.

Die meisten Leute denken sich: „Ich habe nichts zu verbergen und auch keine Geheimnisse." Ich hoffe sie meinen dabei eher: „Ich glaube nicht, dass sich jemand die Mühe macht meine Daten nach Wertvollem zu durchsuchen.“ Leider ist das nicht immer so, deshalb gilt: Wichtige Daten richtig zu schützen. Der Artikel bezieht sich zu 100 % auf Arch Linux User. Windows und Mac OS Benutzern empfehle ich den Artikel vom BSI zur Verschlüsselung mit Betriebssystemen.

Installationsmedium erstellen


Iso-Image von http://www.archlinux.org/download/ herunterladen:

Image mit dd auf einen USB Stick kopieren:

dd if=archlinux.iso of=/dev/sdx

Arch Linux installieren


Vom Installationsmedium booten.

In der Konsole angekommen, deutsche Tastatur laden:

loadkeys de-latin1

Festplatte partitionieren (fdisk)


Zunächst eine 100 MB große Partition mit Boot-Flag (für die spätere Boot-Partition).

Den Rest verwenden wir für das verschlüsselte lvm.

Mit a macht ihr eine Partition bootfähig, m zeigt euch die Hilfe in fdisk. Folgendes Foto zeigt die Konfiguration bei mir:

Beispiel formatierte Festplatte fdisk

Verschlüsseltes lvm erstellen


Kernelmodul muss geladen werden:

root@archiso ~ # modprobe dm-crypt

Partition für das lvm wird verschlüsselt. Ich habe mich für eine aes 512 Verschlüsselung entschieden. Mit dem Befehl cryptsetup kann ein Test durchgeführt werden, was für euch sinnvoll ist:

root@archiso ~ # cryptsetup benchmark
root@archiso ~ # cryptsetup -c aes-xts-plain -y -s 512 luksFormat /dev/sda2

Mit YES die Verschlüsselung bestätigen und ein sicheres Passwort vergeben:

root@archiso ~ # cryptsetup luksOpen /dev/sda2 lvm
root@archiso ~ # pvcreate /dev/mapper/lvm
root@archiso ~ # vgcreate main /dev/mapper/lvm
### Swap entsprechend verbautem RAM anpassen ###
root@archiso ~ # lvcreate -L 8GB -n swap main
root@archiso ~ # lvcreate -l 100%FREE -n home main

Mit mkfs werden die Dateisysteme erstellt. Bei boot sollte die 64-Bit-Fähigkeit deaktiviert werden, da syslinux früher nur von 32-Bit booten konnte. Mittlerweile sollte syslinux auch mit 64-Bit umgehen können.

root@archiso ~ # mkfs.ext4 -L home /dev/mapper/main-home
root@archiso ~ # mkfs.ext4 -L boot -O '^64bit' /dev/sda1
root@archiso ~ # mkswap -L swap /dev/mapper/main-swap

Die Partitionen können gemountet werden:

root@archiso ~ # mount /dev/mapper/main-home /mnt
root@archiso ~ # mkdir /mnt/boot
root@archiso ~ # mount /dev/sda1 /mnt/boot

Basis Arch Linux und Bootloader installieren


Prüft die Internetverbindung - sollte keine bestehen sollte der Service dhcpcd Abhilfe schaffen:

root@archiso ~ # ping -c 5 google.de
root@archiso ~ # dhcpcd

Basissystem und Bootloader installieren:

root@archiso ~ # pacstrab /mnt base base-devel syslinux
root@archiso ~ # syslinux-install_update -i -a -m -c /mnt

Syslinux konfigurieren; Die APPEND Option muss in beiden (arch und archfallback) angepasst werden:

root@archiso ~ # syslinux-install_update -i -a -m -c /mnt
root@archiso ~ # nano /mnt/boot/syslinux/syslinux.cfg

APPEND cryptdevice=/dev/sda2:main root=/dev/mapper/main-root rw lang=de locale=de_DE.UTF-8

Systemkonfiguration


Swap-Partition aktivieren:

root@archiso ~ # swapon -L swap

Anschließend die fstab generieren und kontrollieren:

root@archiso ~ # genfstab -U -p /mnt >> /mnt/etc/fstab
root@archiso ~ # nano /mnt/etc/fstab

Bald geschafft - In die chroot Umgebung wechseln:

root@archiso ~ # arch-chroot /mnt

Hostname, locale.conf, locale.gen bearbeiten und generieren

[root@archiso /]# echo LANG=de_DE.UTF-8 > /etc/locale.conf
[root@archiso /]# nano /etc/locale.gen
### Mit Strg + w suchen und # vor folgenden Zeilen entfernen ###
#de_DE.UTF-8 UTF-8
#de_DE ISO-8859-1
#de_DE@euro ISO-8859-15
[root@archiso /]# locale-gen
Generating locales...
de_DE.UTF-8... done
de_DE.ISO-8859-1... done
de_DE.ISO-8859-15@euro... done
Generation complete.

Tastaturbelegung und Schriftart festlegen:

[root@archiso /]# echo KEYMAP=de-latin1 > /etc/vconsole.conf
[root@archiso /]# echo FONT=lat9w-16 >> /etc/vconsole.conf

Noch die entsprechende Zeitzone festlegen:

[root@archiso /]# ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime

Und ein multilib Betriebssystem bauen. Entferne dazu aus der /etc/pacman.conf die # vor folgenden Zeilen:

[multilib]
SigLevel = PackageRequired TrustedOnly
Include = /etc/pacman.d/mirrorlist

[root@archiso /]# pacman -Sy

Die /etc/mkinitcpio.conf muss noch zwingend angepasst werden:

[root@archiso /]# nano /etc/mkinitcpio.conf

### MODULES und HOOKS Werte entsprechend anpassen ###
MODULES=(ext4)
HOOKS=(base udev autodetect modconf block keyboard keymap encrypt lvm2 filesystems fsck shutdown)

Kernel-Image ertellen und Neustarten


Kernel-Image erstellen:

[root@archiso /]# mkinitcpio -p linux

Root-Passwort festlegen:

[root@archiso /]# passwd

Damit der Computer auch nach dem Neustart eine IP-Adresse automatisch bezieht, entsprechenden Dienst aktivieren:

[root@archiso /]# systemctl enable dhcpcd.service

Chroot verlassen, Partitionen aushängen und neustarten:

[root@archiso /]# exit
root@archiso ~ # umount /mnt/{boot,}
root@archiso ~ # reboot

Der Computer startet nun neu. Wenn alles gut gelaufen ist, wird vom Bootloader ein Passwort zum entschlüsseln des lvm angefordert

Benutzer anlegen


In meinem Beispiel heißt der Benutzer Gerd

# useradd -m -g users -s /bin/bash gerd
# passwd gerd

Damit der Nutzer auch Kommandos mit Root-Rechten ausführen kann, installieren wir sudo und fügen Gerd der Gruppe wheel hinzu:

# pacman -S sudo
# nano /etc/sudores
### Wir kommentieren die folgende Zeile aus (das Leerzeichen muss auch entfernt werden) ###
%wheel ALL=(ALL) ALL
gpasswd -a gerd wheel

Nützliche Dienste und Gnome installieren


Damit unser Linux auch reibungslos funktioniert installieren wir ein paar nützliche Dienste und aktivieren sie:

# pacman -S acpid dbus avahi cups cronie

# systemctl enable acpid
# systemctl enable avahi-daemon
# systemctl enable org.cups.cupsd.service
# systemctl enable cronie

Gnome Installation


Die Installation von Gnome ist sehr einfach und schnell erledigt. Die Basis bilden die folgenden zwei Pakete:

# pacman -S gnome gdm

Zusätzlich kann noch das Paket gnome-extra installiert werden.
Nach der Installation den Login-Manager gdm aktivieren:

# systemctl enable gdm