Systemverschlüsselung mit dm-crypt: Unterschied zwischen den Versionen
KKeine Bearbeitungszusammenfassung |
Bernd (Diskussion | Beiträge) aktualisiert auf 2012-11-01 mit Systemd, Anpassung /etc/hosts nicht mehr notwendig, typos korrigiert (mehrere VMs mit meinen Anpassungen so installiert) |
||
Zeile 1: | Zeile 1: | ||
== Zusammenfassung == | == Zusammenfassung == | ||
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 2012. | 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 2012.11.01 (archlinux-2012.11.01-dual.iso) erstellt. Die Installation sollte aber auch mit zuküftigen Medien (zumindest vorerst) nicht großartig anders verlaufen. | ||
Zeile 9: | Zeile 9: | ||
* Das Image auf CD brennen oder unter einem funktionierendem Linux-System (z.B. Live-CD) auf einen USB-Stick kopieren. Dies funktioniert wie folgt: | * 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 | # dd if=archlinux.iso of=/dev/sdx | ||
Zeile 26: | Zeile 26: | ||
== Festplatte vorbereiten == | == Festplatte vorbereiten == | ||
* Jetzt wird es Zeit, die Festplatten zu partitionieren. Dies kann z.B. mit '''cfdisk''' durchgeführt werden. Für unseren Zweck erstellen wir zwei Partitionen: | * Jetzt wird es Zeit, die Festplatten zu partitionieren. Dies kann z. B. mit '''cfdisk''' durchgeführt werden. Für unseren Zweck erstellen wir zwei Partitionen: | ||
'''sda1''' mit einer Größe von | '''sda1''' mit einer Größe von 100 MB und boot-Flag (dies wird später unsere Boot-Partition) | ||
'''sda2''', welche den Rest der Festplatte spendiert bekommt (hier wird unser verschlüsseltes LVM seinen Platz drauf finden) | '''sda2''', welche den Rest der Festplatte spendiert bekommt (hier wird unser verschlüsseltes LVM seinen Platz drauf finden) | ||
Zeile 35: | Zeile 35: | ||
root@archiso ~ # shred -v /dev/sda2 | root@archiso ~ # shred -v /dev/sda2 | ||
Standardmäßig wird dieser Vorgang drei Mal durchgeführt, wobei ein Durchgang bei einer ca. | 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. | ||
Zeile 52: | Zeile 52: | ||
'''Hinweis:''' Für Volumes größer als | '''Hinweis:''' 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 | * Jetzt wird die verschlüsselte Partition geöffnet und das LVM eingerichtet: | ||
root@archiso ~ # cryptsetup luksOpen /dev/sda2 lvm | root@archiso ~ # cryptsetup luksOpen /dev/sda2 lvm | ||
root@archiso ~ # pvcreate /dev/mapper/lvm | root@archiso ~ # pvcreate /dev/mapper/lvm | ||
Zeile 65: | Zeile 65: | ||
root@archiso ~ # lvcreate -L 8GB -n swap main | root@archiso ~ # lvcreate -L 8GB -n swap main | ||
root@archiso ~ # lvcreate -l 100%FREE -n home main | root@archiso ~ # lvcreate -l 100%FREE -n home main | ||
'''Hinweis:''' 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. | * Mit mkfs wird nun das Dateisystem auf die Partitionen geschrieben. | ||
root@archiso ~ # mkfs.ext4 /dev/mapper/main- | root@archiso ~ # mkfs.ext4 -L root /dev/mapper/main-root | ||
root@archiso ~ # mkfs.ext4 /dev/mapper/main- | root@archiso ~ # mkfs.ext4 -L home /dev/mapper/main-home | ||
root@archiso ~ # mkfs.ext4 /dev/sda1 | root@archiso ~ # mkfs.ext4 -L boot /dev/sda1 | ||
root@archiso ~ # mkswap /dev/mapper/main- | root@archiso ~ # mkswap -L swap /dev/mapper/main-swap | ||
* Dann werden die Partitionen | * Dann werden die Partitionen gemountet: | ||
root@archiso ~ # mount /dev/mapper/main-root /mnt | root@archiso ~ # mount /dev/mapper/main-root /mnt | ||
root@archiso ~ # mkdir /mnt/home | root@archiso ~ # mkdir /mnt/home | ||
Zeile 116: | Zeile 118: | ||
== System konfigurieren == | == System konfigurieren == | ||
* Nun | * Nun aktivieren wir die Swap-Partition: | ||
root@archiso ~ # | root@archiso ~ # swapon -L swap | ||
* Dann wird die fstab generiert | * Dann wird die fstab generiert: | ||
root@archiso ~ # genfstab -p /mnt >> /mnt/etc/fstab | root@archiso ~ # genfstab -U -p /mnt >> /mnt/etc/fstab | ||
root@archiso ~ # nano /mnt/etc/fstab | root@archiso ~ # nano /mnt/etc/fstab | ||
Zeile 162: | Zeile 159: | ||
sh-4.2# echo FONT=lat9w-16 >> /etc/vconsole.conf | sh-4.2# echo FONT=lat9w-16 >> /etc/vconsole.conf | ||
sh-4.2# echo FONT_MAP=8859-1_to_uni >> /etc/vconsole.conf | sh-4.2# echo FONT_MAP=8859-1_to_uni >> /etc/vconsole.conf | ||
Zeile 176: | Zeile 165: | ||
* /etc/ | * /etc/mkinitcpio.conf anpassen: | ||
sh-4.2# nano /etc/mkinitcpio.conf | |||
* HOOKS | * Die MODULES- und HOOKS-Werte entsprechend anpassen: | ||
HOOKS="base udev autodetect sata usbinput keymap encrypt lvm2 filesystems fsck shutdown" | MODULES="ext4" | ||
HOOKS="base udev autodetect pata scsi sata usb usbinput 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 unteter https://wiki.archlinux.org/index.php/Mkinitcpio#HOOKS zu finden. | 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 unteter https://wiki.archlinux.org/index.php/Mkinitcpio#HOOKS zu finden. | ||
Zeile 198: | Zeile 188: | ||
* Jetzt legen wir das Passwort für root an: | * Jetzt legen wir das Passwort für root an: | ||
sh-4.2# passwd | sh-4.2# passwd | ||
* Damit per DHCP automatisch eine IP-Adresse beim Bootvorgang bezogen wird, aktivieren wir den entsprechenden Systemd-Dienst: | |||
sh-4.2# systemctl enable dhcpcd@.service | |||
Zeile 209: | Zeile 203: | ||
== Systemd einrichten | == Systemd einrichten == | ||
* Sollte das Netzwerk nicht gestartet sein, folgenden Befehl ausführen: | * Sollte das Netzwerk nicht gestartet sein, folgenden Befehl ausführen: | ||
[root@myhostname ~] dhcpcd | [root@myhostname ~]# dhcpcd | ||
* Welche IP-Adresse vergeben wurde, kann mittels ip-Programm festgestellt werden: | |||
* | [root@myhostname ~]# ip addr | ||
[root@myhostname ~] | |||
* Services für systemd einrichten: | * Services für systemd einrichten: | ||
[root@myhostname ~] | [root@myhostname ~]# systemctl enable cronie.service | ||
[root@myhostname ~]# systemctl enable lvm.service | |||
[root@myhostname ~] systemctl enable lvm.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: | ||
[root@myhostname ~] pacman -Syy | [root@myhostname ~]# pacman -Syy | ||
* Ein letzer Reboot und wir können damit anfangen, unser frisch installiertes Arch an unsere Bedürfnisse anzupassen. | * Ein letzer Reboot und wir können damit anfangen, unser frisch installiertes Arch an unsere Bedürfnisse anzupassen. | ||
[root@myhostname ~] reboot | [root@myhostname ~]# reboot | ||
Erstellt von [[Benutzer:Durag|Durag]] am 20. August 2012 | Erstellt von [[Benutzer:Durag|Durag]] am 20. August 2012 | ||
[[Kategorie:Installation]] | [[Kategorie:Installation]] | ||
[[en:dm-crypt with LUKS]] | [[en:dm-crypt with LUKS]] |
Version vom 13. November 2012, 21:30 Uhr
Zusammenfassung
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 2012.11.01 (archlinux-2012.11.01-dual.iso) erstellt. Die Installation sollte aber auch mit zuküftigen 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 und das Setup für die entsprechende Systemarchitektur (i686 oder x86_64) gestartet.
- 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 z. B. mit cfdisk durchgeführt werden. Für unseren Zweck erstellen wir zwei Partitionen:
sda1 mit einer Größe von 100 MB und boot-Flag (dies wird später unsere Boot-Partition)
sda2, welche den Rest der Festplatte spendiert bekommt (hier wird unser verschlüsseltes LVM seinen Platz drauf finden)
- 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
Hinweis: 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:
root@archiso ~ # cryptsetup luksOpen /dev/sda2 lvm root@archiso ~ # pvcreate /dev/mapper/lvm root@archiso ~ # vgcreate main /dev/mapper/lvm root@archiso ~ # lvcreate -L 200GB -n root main root@archiso ~ # lvcreate -L 8GB -n swap main root@archiso ~ # lvcreate -l 100%FREE -n home main
Hinweis: 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.
root@archiso ~ # mkfs.ext4 -L root /dev/mapper/main-root root@archiso ~ # mkfs.ext4 -L home /dev/mapper/main-home root@archiso ~ # mkfs.ext4 -L boot /dev/sda1 root@archiso ~ # mkswap -L swap /dev/mapper/main-swap
- Dann werden die Partitionen gemountet:
root@archiso ~ # mount /dev/mapper/main-root /mnt root@archiso ~ # mkdir /mnt/home root@archiso ~ # mount /dev/mapper/main-home /mnt/home root@archiso ~ # mkdir /mnt/boot root@archiso ~ # mount /dev/sda1 /mnt/boot
Basissystem und Bootloader installieren
- Bevor es jetzt los geht und wir das Basissystem installieren, testen wir erstmal die Internetverbindung:
root@archiso ~ # ping -c 3 www.google.com
- Besteht keine Verbindung, sollte folgender Befehl Abhilfe schaffen:
root@archiso ~ # dhcpcd
- Wir bearbeiten nun zuerst unsere Mirrorliste, und kommentieren alle weit entfernten Server mit # aus.
root@archiso ~ # nano /etc/pacman.d/mirrorlist
Dies kann bei der Installation Geschwindigkeitsvorteile von ca. 30 Minuten bringen.
- Dann wird das Basissystem inkl. Bootloader (ich habe mich für syslinux entschieden) installiert.
root@archiso ~ # pacstrap /mnt base base-devel syslinux
- 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 ro lang=de locale=de_DE.UTF-8
System konfigurieren
- Nun aktivieren wir die Swap-Partition:
root@archiso ~ # swapon -L swap
- Dann wird die fstab generiert:
root@archiso ~ # genfstab -U -p /mnt >> /mnt/etc/fstab root@archiso ~ # nano /mnt/etc/fstab
- Jetzt wechseln wir in die chroot-Umgebung:
root@archiso ~ # arch-chroot /mnt
- Spracheinstellungen in /etc/locale.conf festlegen:
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 editieren und locales generieren:
sh-4.2# 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 generieren:
sh-4.2# locale-gen
- Config-Dateien für systemd anpassen:
sh-4.2# echo myhostname >> /etc/hostname sh-4.2# echo KEYMAP=de-latin1 >> /etc/vconsole.conf sh-4.2# echo FONT=lat9w-16 >> /etc/vconsole.conf sh-4.2# echo FONT_MAP=8859-1_to_uni >> /etc/vconsole.conf
- Symlink für die Zeitzone erstellen:
sh-4.2# ln -s /usr/share/zoneinfo/Europe/Berlin /etc/localtime
- /etc/mkinitcpio.conf anpassen:
sh-4.2# nano /etc/mkinitcpio.conf
- Die MODULES- und HOOKS-Werte entsprechend anpassen:
MODULES="ext4" HOOKS="base udev autodetect pata scsi sata usb usbinput 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 unteter https://wiki.archlinux.org/index.php/Mkinitcpio#HOOKS zu finden.
Kernel-Image erstellen und der erste Neustart
- Damit es bei der Erstellung des Kernel-Images nicht zu dem Fehler bsdcpio: Failed to set default locale kommt, führen wir folgendes aus:
sh-4.2# export LANG=de_DE.UTF-8
- Dann erstellen wir das Kernel-Image:
sh-4.2# mkinitcpio -p linux
- Jetzt legen wir das Passwort für root an:
sh-4.2# passwd
- Damit per DHCP automatisch eine IP-Adresse beim Bootvorgang bezogen wird, aktivieren wir den entsprechenden Systemd-Dienst:
sh-4.2# systemctl enable dhcpcd@.service
- Anschließend verlassen wir die chroot-Umgebung und hängen die Partitionen aus:
sh-4.2# exit root@archiso ~ # umount /mnt/{boot,home,} root@archiso ~ # reboot
- Der PC startet nun neu und wir werden – sofern bisher alles gut gegangen ist – von unserem Bootloader gefolgt von der Eingabeaufforderung zur Entschlüsselung des cryptdevice begrüßt. Gebt das Passwort ein und meldet euch, nachdem der Bootvorgang abgeschlossen ist, als root an.
Systemd einrichten
- Sollte das Netzwerk nicht gestartet sein, folgenden Befehl ausführen:
[root@myhostname ~]# dhcpcd
- Welche IP-Adresse vergeben wurde, kann mittels ip-Programm festgestellt werden:
[root@myhostname ~]# ip addr
- Services für systemd einrichten:
[root@myhostname ~]# systemctl enable cronie.service [root@myhostname ~]# systemctl enable lvm.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:
[root@myhostname ~]# pacman -Syy
- Ein letzer Reboot und wir können damit anfangen, unser frisch installiertes Arch an unsere Bedürfnisse anzupassen.
[root@myhostname ~]# reboot
Erstellt von Durag am 20. August 2012