Systemverschlüsselung mit dm-crypt: Unterschied zwischen den Versionen
Durag (Diskussion | Beiträge) |
Tuxnix (Diskussion | Beiträge) vorläufig kein Löschen bitte |
||
(34 dazwischenliegende Versionen von 17 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
{{veraltet}} | |||
Dieser Artikel behandelt die Installation eines ArchLinux-Grundsystems mit verschlüsseltem [[LVM]] und der kompletten Integration von [[systemd]]. Die Anleitung wurde unter Verwendung der Installations-Medien 2015.07.01 (archlinux-2015.07.01-dual.iso) erstellt. Die Installation sollte aber auch mit zukünftigen Medien (zumindest vorerst) nicht großartig anders verlaufen. | |||
Dieser Artikel behandelt die Installation eines ArchLinux-Grundsystems mit verschlüsseltem LVM und der kompletten Integration von | |||
== Installationsmedium vorbereiten == | == Installationsmedium vorbereiten == | ||
* Das Installations-Image von http://www.archlinux.org/download/ herunterladen. | * Das Installations-Image von http://www.archlinux.org/download/ herunterladen. | ||
* Das Image auf CD brennen oder unter einem funktionierendem Linux-System (z. B. Live-CD) auf einen USB-Stick kopieren. Dies funktioniert wie folgt: | |||
dd if=archlinux.iso of=/dev/sdx | |||
== Installation starten == | == Installation starten == | ||
* Nun wird vom vorbereiteten Installations-Medium gebootet. | |||
* Auf der Konsole angekommen, wird zuerst einmal das deutsche Tastatur-Layout geladen. | |||
root@archiso ~ # loadkeys de-latin1 | |||
Da das Layout derzeit noch auf Englisch eingestellt ist, muss '''z''' anstatt '''y''' und '''ß''' anstatt '''-''' eingegeben werden. | Da das Layout derzeit noch auf Englisch eingestellt ist, muss '''z''' anstatt '''y''' und '''ß''' anstatt '''-''' eingegeben werden. | ||
== Festplatte vorbereiten == | == Festplatte vorbereiten == | ||
* Jetzt wird es Zeit, die Festplatten zu partitionieren. Dies kann bei Bios-Boot Systemen und Festplatten bis 2TB mit [[fdisk]], ansonsten immer mit [[gdisk]] durchgeführt werden. Für das System mit LVM werden zwei Partitionen erstellt: | |||
'''sda1''' mit einer Größe von 100 MB und boot-Flag (dies wird später die Boot-Partition) | |||
'''sda2''', welche den Rest der Festplatte einnimmt (hier wird das verschlüsselte LVM abgelegt) | |||
'''sda2''', welche den Rest der Festplatte | |||
* Zur Sicherheit wird die Festplatte jetzt überschrieben: | * Zur Sicherheit wird die Festplatte jetzt überschrieben: | ||
root@archiso ~ # shred -v /dev/sda2 | |||
Standardmäßig wird dieser Vorgang drei Mal durchgeführt, wobei ein Durchgang bei einer ca. 2 TB großen Festplatte schon mal fünf bis sechs Stunden in Anspruch nehmen kann. | |||
* Wer deswegen den Vorgang nur einmal durchführen möchte, kann stattdessen folgenden Befehl ausführen: | * Wer deswegen den Vorgang nur einmal durchführen möchte, kann stattdessen folgenden Befehl ausführen: | ||
shred -v -n 1 /dev/sda2 | |||
== Verschlüsseltes LVM einrichten == | == Verschlüsseltes LVM einrichten == | ||
* Jetzt werden die benötigte Kernel-Modul für die Verschlüsselung geladen: | * Jetzt werden die benötigte Kernel-Modul für die Verschlüsselung geladen: | ||
root@archiso ~ # modprobe dm-crypt | |||
* Anschließend wird sda2 verschlüsselt: | * Anschließend wird sda2 verschlüsselt: | ||
root@archiso ~ # cryptsetup -c aes-xts-plain -y -s 512 luksFormat /dev/sda2 | |||
Für Volumes größer als 2 TiB sollte aes-xts-plain64 verwendet werden. Kernelunterstützung hierfür gibt es seit Kernel 2.6.33. Die Option aes-xts-plain64 kann auch für Volumes kleiner 2 TiB verwendet werden. | |||
* Die Eingabeaufforderung mit YES bestätigen und | * Die Eingabeaufforderung mit YES bestätigen und anschließend ein sicheres Passwort vergeben. Hierbei sollten schon 20 Zeichen inkl. Sonderzeichen und Zahlen verwendet werden. | ||
* Jetzt wird die verschlüsselte Partition geöffnet und das LVM eingerichtet: | |||
cryptsetup luksOpen /dev/sda2 lvm | |||
pvcreate /dev/mapper/lvm | |||
vgcreate main /dev/mapper/lvm | |||
lvcreate -L 200GB -n root main | |||
lvcreate -L 8GB -n swap main | |||
lvcreate -l 100%FREE -n home main | |||
Je nach Festplattengröße und/oder zukünftiger Erweiterung des Grundsystems kann auch eine geringere Größe für das root-Volume (-n root) festgelegt werden. Wenn das home-Volume (-n home) nicht den verbleibenden Platz komplett ausfüllt, können später LVM-Snapshots erstellt werden. Dazu kann - wie bei den anderen lvcreate-Befehlen - eine geringere Größe angegeben werden, zum Beispiel -L 50GB. | |||
* Mit mkfs wird nun das Dateisystem auf die Partitionen geschrieben. Bei boot muss mit -O die 64-Bit-Fähigkeit deaktiviert werden, weil syslinux nur von einem 32-Bit-Dateisystem booten kann. | |||
mkfs.ext4 -L root /dev/mapper/main-root | |||
mkfs.ext4 -L home /dev/mapper/main-home | |||
mkfs.ext4 -L boot -O '^64bit' /dev/sda1 | |||
mkswap -L swap /dev/mapper/main-swap | |||
* Dann werden die Partitionen gemountet: | |||
mount /dev/mapper/main-root /mnt | |||
mkdir /mnt/home | |||
mount /dev/mapper/main-home /mnt/home | |||
mkdir /mnt/boot | |||
mount /dev/sda1 /mnt/boot | |||
== Basissystem und Bootloader installieren == | == Basissystem und Bootloader installieren == | ||
* Vor der Installation des Basissystems sollte zunächst die Internetverbindung getestet werden: | |||
root@archiso ~ # ping -c 3 www.google.com | |||
* Besteht keine Verbindung, sollte folgender Befehl Abhilfe schaffen: | |||
root@archiso ~ # dhcpcd | |||
* In der Mirrorliste sollten alle weit entfernten Server jetzt mit '''#''' auskommentiert werden. | |||
nano /etc/pacman.d/mirrorlist | |||
Dies kann bei der Installation Geschwindigkeitsvorteile von ca. 30 Minuten bringen. | Dies kann bei der Installation Geschwindigkeitsvorteile von ca. 30 Minuten bringen. | ||
* Dann wird das Basissystem inkl. Bootloader (in diesem Fall [[Syslinux]]) installiert. | |||
root@archiso ~ # pacstrap /mnt base base-devel syslinux nano linux linux-firmware mkinitcpio lvm2 dhcpcd | |||
* Nach der Basis-Installation wird syslinux in den MBR von sda geschrieben: | * Nach der Basis-Installation wird syslinux in den MBR von sda geschrieben: | ||
root@archiso ~ # syslinux-install_update -i -a -m -c /mnt | |||
* Dann wird syslinux konfiguriert: | * Dann wird syslinux konfiguriert: | ||
root@archiso ~ # nano /mnt/boot/syslinux/syslinux.cfg | |||
* Die APPEND-Zeile muss bei beiden Einträgen (arch und archfallback angepasst werden: | * Die APPEND-Zeile muss bei beiden Einträgen (arch und archfallback) angepasst werden: | ||
APPEND cryptdevice=/dev/sda2:main root=/dev/mapper/main-root rw lang=de locale=de_DE.UTF-8 | |||
== System konfigurieren == | == System konfigurieren == | ||
* Nun wird die Swap-Partition aktiviert: | |||
swapon -L swap | |||
* Dann wird die fstab generiert und | * Dann wird die [[fstab]] generiert und im Editor kontrolliert: | ||
genfstab -U -p /mnt >> /mnt/etc/fstab | |||
nano /mnt/etc/fstab | |||
* | * Jetzt wird in die chroot-Umgebung gewechselt: | ||
arch-chroot /mnt | |||
* | * Spracheinstellungen werden in /etc/locale.conf festgelegt: | ||
{{hc|1=/etc/locale.conf|2=<nowiki>LANG="de_DE.UTF-8" | |||
# Keep the default sort order (e.g. files starting with a '.' | |||
# should appear at the start of a directory listing.) | |||
LC_COLLATE="C" | |||
LC_TIME="de_DE.UTF-8"</nowiki>}} | |||
* /etc/locale.gen | * /etc/locale.gen wird editiert und die locales generiert: | ||
nano /etc/locale.gen | |||
* '''#''' vor folgenden locales entfernen: | * '''#''' vor folgenden locales entfernen: | ||
de_DE.UTF-8 UTF-8 | |||
de_DE ISO-8859-1 | |||
de_DE@euro ISO-8859-15 | |||
* | * locales wird generiert: | ||
locale-gen | |||
* | * Config-Dateien für systemd werden angepasst: | ||
echo myhostname >> /etc/hostname | |||
echo KEYMAP=de-latin1 >> /etc/vconsole.conf | |||
echo FONT=lat9w-16 >> /etc/vconsole.conf | |||
echo FONT_MAP=8859-1_to_uni >> /etc/vconsole.conf | |||
* Symlink für die Zeitzone | * Symlink für die Zeitzone wird erstellt: | ||
ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime | |||
* /etc/ | * /etc/mkinitcpio.conf wird angepasst: | ||
nano /etc/mkinitcpio.conf | |||
* HOOKS | * Die MODULES- und HOOKS-Werte werden entsprechend angepasst: | ||
MODULES=(ext4) | |||
HOOKS=(base udev autodetect modconf block keyboard keymap encrypt lvm2 filesystems fsck shutdown) | |||
Die hier vorgegebenen Hooks sind für das Booten von einer S-ATA-Festplatte mit einer USB-Tastatur gedacht und müssen daher evtl. angepasst werden. Alle verfügbaren Hooks sind unter https://wiki.archlinux.org/index.php/Mkinitcpio#HOOKS zu finden. | |||
== Kernel-Image erstellen und der erste Neustart == | == Kernel-Image erstellen und der erste Neustart == | ||
* Das Kernel-Image wird erstellt mittels: | |||
mkinitcpio -p linux | |||
* Für root wird ein Passwort angelegt: | |||
passwd | |||
* Damit per DHCP automatisch eine IP-Adresse beim Bootvorgang bezogen wird, muss jetzt der entsprechende systemd-Dienst aktiviert werden: | |||
systemctl enable dhcpcd.service | |||
* Anschließend werden die chroot-Umgebung verlassen und die Partitionen ausgehängt: | |||
exit | |||
umount /mnt/{boot,home,} | |||
reboot | |||
* | * Der PC startet nun neu und man wird – sofern bisher alles gut gegangen ist – vom Bootloader gefolgt von der Eingabeaufforderung zur Entschlüsselung des cryptdevice begrüßt. Nun ist das Passwort einzugeben. Nachdem der Bootvorgang abgeschlossen ist, muss man sich als root anmelden. | ||
== systemd einrichten == | |||
* Sollte das Netzwerk nicht gestartet sein, folgenden Befehl ausführen: | * Sollte das Netzwerk nicht gestartet sein, folgenden Befehl ausführen: | ||
dhcpcd | |||
* | * Welche IP-Adresse vergeben wurde, kann mittels ip-Programm festgestellt werden: | ||
ip addr | |||
* Services für systemd einrichten: | * Services für systemd einrichten: | ||
systemctl enable cronie.service | |||
* Im Falle, dass ein x86_64 System installiert wurde, kann in der /etc/pacman.conf noch das multilib-repo aktiviert werden. Anschließend müssen pacman’s Paketlisten wieder auf den neusten Stand gebracht werden: | * Im Falle, dass ein x86_64 System installiert wurde, kann in der /etc/pacman.conf noch das multilib-repo aktiviert werden. Anschließend müssen pacman’s Paketlisten wieder auf den neusten Stand gebracht werden: | ||
pacman -Syy | |||
* Ein letzter Reboot und man kann damit anfangen, das frisch installierte Arch an die eigenen Bedürfnisse anzupassen. | |||
reboot | |||
[[Kategorie:Installation]] | [[Kategorie:Installation]] | ||
[[en:dm-crypt/Encrypting an entire system]] |
Aktuelle Version vom 24. März 2021, 12:32 Uhr
Dieser Artikel wurde als veraltet markiert, und sollte kontrolliert, und gegebenfalls korrigiert bzw. aktualisiert werden.
Dieser Artikel behandelt die Installation eines ArchLinux-Grundsystems mit verschlüsseltem LVM und der kompletten Integration von systemd. Die Anleitung wurde unter Verwendung der Installations-Medien 2015.07.01 (archlinux-2015.07.01-dual.iso) erstellt. Die Installation sollte aber auch mit zukünftigen Medien (zumindest vorerst) nicht großartig anders verlaufen.
Installationsmedium vorbereiten
- Das Installations-Image von http://www.archlinux.org/download/ herunterladen.
- Das Image auf CD brennen oder unter einem funktionierendem Linux-System (z. B. Live-CD) auf einen USB-Stick kopieren. Dies funktioniert wie folgt:
dd if=archlinux.iso of=/dev/sdx
Installation starten
- Nun wird vom vorbereiteten Installations-Medium gebootet.
- Auf der Konsole angekommen, wird zuerst einmal das deutsche Tastatur-Layout geladen.
root@archiso ~ # loadkeys de-latin1
Da das Layout derzeit noch auf Englisch eingestellt ist, muss z anstatt y und ß anstatt - eingegeben werden.
Festplatte vorbereiten
- Jetzt wird es Zeit, die Festplatten zu partitionieren. Dies kann bei Bios-Boot Systemen und Festplatten bis 2TB mit fdisk, ansonsten immer mit gdisk durchgeführt werden. Für das System mit LVM werden zwei Partitionen erstellt:
sda1 mit einer Größe von 100 MB und boot-Flag (dies wird später die Boot-Partition)
sda2, welche den Rest der Festplatte einnimmt (hier wird das verschlüsselte LVM abgelegt)
- Zur Sicherheit wird die Festplatte jetzt überschrieben:
root@archiso ~ # shred -v /dev/sda2
Standardmäßig wird dieser Vorgang drei Mal durchgeführt, wobei ein Durchgang bei einer ca. 2 TB großen Festplatte schon mal fünf bis sechs Stunden in Anspruch nehmen kann.
- Wer deswegen den Vorgang nur einmal durchführen möchte, kann stattdessen folgenden Befehl ausführen:
shred -v -n 1 /dev/sda2
Verschlüsseltes LVM einrichten
- Jetzt werden die benötigte Kernel-Modul für die Verschlüsselung geladen:
root@archiso ~ # modprobe dm-crypt
- Anschließend wird sda2 verschlüsselt:
root@archiso ~ # cryptsetup -c aes-xts-plain -y -s 512 luksFormat /dev/sda2
Für Volumes größer als 2 TiB sollte aes-xts-plain64 verwendet werden. Kernelunterstützung hierfür gibt es seit Kernel 2.6.33. Die Option aes-xts-plain64 kann auch für Volumes kleiner 2 TiB verwendet werden.
- Die Eingabeaufforderung mit YES bestätigen und anschließend ein sicheres Passwort vergeben. Hierbei sollten schon 20 Zeichen inkl. Sonderzeichen und Zahlen verwendet werden.
- Jetzt wird die verschlüsselte Partition geöffnet und das LVM eingerichtet:
cryptsetup luksOpen /dev/sda2 lvm pvcreate /dev/mapper/lvm vgcreate main /dev/mapper/lvm lvcreate -L 200GB -n root main lvcreate -L 8GB -n swap main lvcreate -l 100%FREE -n home main
Je nach Festplattengröße und/oder zukünftiger Erweiterung des Grundsystems kann auch eine geringere Größe für das root-Volume (-n root) festgelegt werden. Wenn das home-Volume (-n home) nicht den verbleibenden Platz komplett ausfüllt, können später LVM-Snapshots erstellt werden. Dazu kann - wie bei den anderen lvcreate-Befehlen - eine geringere Größe angegeben werden, zum Beispiel -L 50GB.
- Mit mkfs wird nun das Dateisystem auf die Partitionen geschrieben. Bei boot muss mit -O die 64-Bit-Fähigkeit deaktiviert werden, weil syslinux nur von einem 32-Bit-Dateisystem booten kann.
mkfs.ext4 -L root /dev/mapper/main-root mkfs.ext4 -L home /dev/mapper/main-home mkfs.ext4 -L boot -O '^64bit' /dev/sda1 mkswap -L swap /dev/mapper/main-swap
- Dann werden die Partitionen gemountet:
mount /dev/mapper/main-root /mnt mkdir /mnt/home mount /dev/mapper/main-home /mnt/home mkdir /mnt/boot mount /dev/sda1 /mnt/boot
Basissystem und Bootloader installieren
- Vor der Installation des Basissystems sollte zunächst die Internetverbindung getestet werden:
root@archiso ~ # ping -c 3 www.google.com
- Besteht keine Verbindung, sollte folgender Befehl Abhilfe schaffen:
root@archiso ~ # dhcpcd
- In der Mirrorliste sollten alle weit entfernten Server jetzt mit # auskommentiert werden.
nano /etc/pacman.d/mirrorlist
Dies kann bei der Installation Geschwindigkeitsvorteile von ca. 30 Minuten bringen.
- Dann wird das Basissystem inkl. Bootloader (in diesem Fall Syslinux) installiert.
root@archiso ~ # pacstrap /mnt base base-devel syslinux nano linux linux-firmware mkinitcpio lvm2 dhcpcd
- Nach der Basis-Installation wird syslinux in den MBR von sda geschrieben:
root@archiso ~ # syslinux-install_update -i -a -m -c /mnt
- Dann wird syslinux konfiguriert:
root@archiso ~ # nano /mnt/boot/syslinux/syslinux.cfg
- Die APPEND-Zeile muss bei beiden Einträgen (arch und archfallback) angepasst werden:
APPEND cryptdevice=/dev/sda2:main root=/dev/mapper/main-root rw lang=de locale=de_DE.UTF-8
System konfigurieren
- Nun wird die Swap-Partition aktiviert:
swapon -L swap
- Dann wird die fstab generiert und im Editor kontrolliert:
genfstab -U -p /mnt >> /mnt/etc/fstab nano /mnt/etc/fstab
- Jetzt wird in die chroot-Umgebung gewechselt:
arch-chroot /mnt
- Spracheinstellungen werden in /etc/locale.conf festgelegt:
/etc/locale.conf
LANG="de_DE.UTF-8" # Keep the default sort order (e.g. files starting with a '.' # should appear at the start of a directory listing.) LC_COLLATE="C" LC_TIME="de_DE.UTF-8"
- /etc/locale.gen wird editiert und die locales generiert:
nano /etc/locale.gen
- # vor folgenden locales entfernen:
de_DE.UTF-8 UTF-8 de_DE ISO-8859-1 de_DE@euro ISO-8859-15
- locales wird generiert:
locale-gen
- Config-Dateien für systemd werden angepasst:
echo myhostname >> /etc/hostname echo KEYMAP=de-latin1 >> /etc/vconsole.conf echo FONT=lat9w-16 >> /etc/vconsole.conf echo FONT_MAP=8859-1_to_uni >> /etc/vconsole.conf
- Symlink für die Zeitzone wird erstellt:
ln -sf /usr/share/zoneinfo/Europe/Berlin /etc/localtime
- /etc/mkinitcpio.conf wird angepasst:
nano /etc/mkinitcpio.conf
- Die MODULES- und HOOKS-Werte werden entsprechend angepasst:
MODULES=(ext4) HOOKS=(base udev autodetect modconf block keyboard keymap encrypt lvm2 filesystems fsck shutdown)
Die hier vorgegebenen Hooks sind für das Booten von einer S-ATA-Festplatte mit einer USB-Tastatur gedacht und müssen daher evtl. angepasst werden. Alle verfügbaren Hooks sind unter https://wiki.archlinux.org/index.php/Mkinitcpio#HOOKS zu finden.
Kernel-Image erstellen und der erste Neustart
- Das Kernel-Image wird erstellt mittels:
mkinitcpio -p linux
- Für root wird ein Passwort angelegt:
passwd
- Damit per DHCP automatisch eine IP-Adresse beim Bootvorgang bezogen wird, muss jetzt der entsprechende systemd-Dienst aktiviert werden:
systemctl enable dhcpcd.service
- Anschließend werden die chroot-Umgebung verlassen und die Partitionen ausgehängt:
exit umount /mnt/{boot,home,} reboot
- Der PC startet nun neu und man wird – sofern bisher alles gut gegangen ist – vom Bootloader gefolgt von der Eingabeaufforderung zur Entschlüsselung des cryptdevice begrüßt. Nun ist das Passwort einzugeben. Nachdem der Bootvorgang abgeschlossen ist, muss man sich als root anmelden.
systemd einrichten
- Sollte das Netzwerk nicht gestartet sein, folgenden Befehl ausführen:
dhcpcd
- Welche IP-Adresse vergeben wurde, kann mittels ip-Programm festgestellt werden:
ip addr
- Services für systemd einrichten:
systemctl enable cronie.service
- Im Falle, dass ein x86_64 System installiert wurde, kann in der /etc/pacman.conf noch das multilib-repo aktiviert werden. Anschließend müssen pacman’s Paketlisten wieder auf den neusten Stand gebracht werden:
pacman -Syy
- Ein letzter Reboot und man kann damit anfangen, das frisch installierte Arch an die eigenen Bedürfnisse anzupassen.
reboot