Bestehende Arch Linux Installation auf Luks Verschlüsselung umziehen!
Dies soll eine kleine Anleitung sein, wie man eine bestehende Arch Linux Installation verschlüsselt. In meinem Fall hatte ich eine neue leer SSD. Hier kann man aber auch vorab das System auf eine anderen Ordner/Speicher mit rsync als Backup verschieben. Ich wechsle bei dieser Umstellung auch gleich von MBR auf efi.
Grundsätzlich besteht der Umzug aus 3 Schritten.
- HDD/SSD vorbereiten ( gdisk, dmcrypt, lvm, mkfs )
- Daten übernehmen ( mounten, rsync )
- Konfiguartion an neue Umgebung
==Zur Sicherheit sollte immer ein Arch Linux Installationsmedium bereitstehen.==
Aktuelle Kennung der Blockdevices findet man mit
lsblk
herraus.
Beispiel:
marcel~: lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
fd0 2:0 1 4K 0 disk
sda 8:0 0 80G 0 disk
├─sda1 8:1 0 76,7G 0 part /
├─sda2 8:2 0 1K 0 part
└─sda5 8:5 0 3,3G 0 part [SWAP]
sr0 11:0 1 1024M 0 rom
Ich gebe die Kennung immer mit /dev/sdx an, wobei x immer eure Kennung entspicht. Bei meiner Umstellung war ‘sda’ meine unverschlüsselte SSD und ‘sdf’ die neue.
Partitionen anlegen mit gdisk /dev/sdx
Mit “d” werden die vorhanden Partitionen gelsöcht. Neue Partions anlegen könnt ihr mit ==n== anlegen. Dann einmal ==n== für die neue Partition.
Als erste Partition festlegen: '1'
Ersten Sektor auf 2048 setzen: [ENTER]
Letzten Sektor setzen / auf 512 MB Partitionsgröße setzen: +512M
Partitionstyp wählen: ef00*
Jetzt wieder ‘==n==’ um eine weitere Partition anzulegen.
Als zweite Partition festlegen: '2'
Ersten Sektor wählen: [ENTER]
Letzten Sektor wählen: [ENTER]
Partitionstyp wählen: [ENTER]*
Hier wird eine neue Partition angelegt, welchen den restlichen Speicher nutzt. Um die neu eingerichteten Partitionen zu beschreiben, muss das ganze mit “Y” bestätigt werden. Die angelegt Konfiguration wird nun auf die HDD oder SSD geschrieben.
Mit mkfs.vfat -F32 /dev/sdx1
formatieren wir die erste Partition mit dem Dateisystem FAT32.
Als nächstes richten wir mit LUKS eine Verschlüsselung ein.
Mit dem Befehl cryptsetup benchmark
kann man einen Benchmark auf dem System durchführen.
Ich benutze folgende Verschlüsselung.
cryptsetup -c aes-xts-plain -y -s 512 --use-random luksFormat /dev/sdx2
Die Einrichtung der Verschlüsselung muss mit einem großen”==YES==” bestätigt werden. Danach müsst ihr 2 mal das gewünschte Passwort eingeben.
Im Anschluss öffnen wir die Verschlüsselung mit
cryptsetup luksOpen /dev/sdx2 lvm
Für LVM verwenden müssen wir nun die Container erstellen.
pvcreate /dev/mapper/lvm
Volume Group Main
vgcreate main /dev/mapper/lvm
Swap Partition nach der Größe des Ram Speichers.
lvcreate -L 16G -n swap main
Den übrigen Platz nutzen wir für Root.
lvcreate -l 100%FREE -n root main
Dateisystem für Swap einrichten…
mkswap /dev/mapper/main-swap
…und EXT4 für die Root.
mkfs.ext4 /dev/mapper/main-root
Nun prüfen wir ob unter /mnt im laufenden System noch Laufwerke eingehängt sind.Gegebenenfalls müssen diese noch getrennt werden.
umount -R /mnt
Als erstes hängen wir die Root Partition unter /mnt ein.
mount /dev/mapper/main-root /mnt
und erstellen uns einen Dateiordner unter /root.
mkdir /mnt/boot
Über mount /dev/sdx1 /mnt/boot
hängen wir unsere erste Partition unter Boot ein.
Jetzt benutzen wir rsync um unsere unverschlüsselte Partition auf die neue zu schreiben
rsync -xaAXv --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / /mnt/
Wir schreiben also unser aktuelles Root Verzeichnis auf das verschlüsselte Laufwerk, welches wir entschlüsselt und unter /mnt gemountet haben.
Da sich die Laufwerkskennung ändert, schreiben wir eine neue fstab. Ich verwende hier die UUID, da es dann keine Probleme gibt, wenn sich die Reihenfolge beim starten ändert.
genfstab -U /mnt > /mnt/etc/fstab
Als nächstes müssen wir die Hooks für die Verschlüsselung ergänzen. nano /mnt/etc/mkinitcpio.conf Wier gänzen die Zeile HOOKS um
###keyboard keymap encrypt lvm2
HOOKS="base udev autodetect modconf block keyboard keymap encrypt lvm2 filesystems fsck"
Wichtig ist das die neuen Hooks vor dem “filesystem” stehen.
Um das Initramfs mit den Hooks zu erstellen, müssen wir uns in das System laden.
arch-chroot /mnt/
initramfs erstellen
mkinitcpio -p linux
Als Bootloader verwende ich hier systemd-boot, welches ein Bestandteil von Systemd ist.
bootctl --path=/boot install
installiert den Loader in /Boot
Als nächstes die loader.conf bearbeiten.
nano /boot/loader/loader.conf
timeout 3
default archlinux
Je nachdem wie default definiert wurde, muss die Bootdatei benannt werden.
nano /boot/loader/entries/archlinux.conf
title Arch Linux
linux /vmlinuz-linux
initrd /initramfs-linux.img
options cryptdevice=UUID=XXXXX:main root=/dev/mapper/main-root resume=/dev/mapper/main-swap lang=de locale=de_DE.UTF-8 rw
Die UUID muss noch mit lsblk -f
ausgelesen und angepasst werden. (XXXXX)
Nun kann Neugestartet werden. Beim Booten dann von der neu eingerichteten Platte.
Wenn alles geklappt hat sollte nun eine Passwort abfrage unseres Luks erscheinen.
Quellen:
Arch Linux Wiki Verschlüsselung