Erstellt am 28.01.2019 (Update 16.1.2020)
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.
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.
Iso-Image von http://www.archlinux.org/download/ herunterladen:
Image mit dd auf einen USB Stick kopieren:
dd if=archlinux.iso of=/dev/sdx
Vom Installationsmedium booten.
In der Konsole angekommen, deutsche Tastatur laden:
loadkeys de-latin1
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:
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
Soll die SSD TRIM verweden, muss der Parameter --allow-discards angegeben sein
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
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 ~ # pacstrap /mnt base base-devel syslinux nano linux linux-firmware mkinitcpio lvm2 dhcpcd 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-home rw lang=de locale=de_DE.UTF-8
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 require_once = /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 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
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
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
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
Ist das System auf eine SSD installiert ist es möglich TRIM nachträglich zu aktivieren. Dabei sollte beachtet werden, dass Kryptoanalysten erkennen können welche Sektoren auf der SSD beschrieben sind. Ist Trim nicht aktiv ist es wegen der Verschlüsselung unmöglich. Somit stellt es ein gewisses Sicherheitsrisiko dar. Weitere Informationen gibt's dazu im Arch Wiki. Zunächst wird dm-crypt angewiesen, dass es Trim nutzen darf:
~ # sudo cryptsetup --allow-discards --persistent refresh /dev/mapper/main
Für den LVM muss die Option ebenfalls aktiviert werden:
~ # nano /etc/lvm/lvm.conf issue_discards = 1
Nur noch die fstab anpassen:
~ # nano /etc/fstab # /dev/mapper/main-home LABEL=home UUID=1a...1236 / ext4 noatime,discard 0 1