https://wiki.archlinux.de/api.php?action=feedcontributions&user=89.166.224.65&feedformat=atomwiki.archlinux.de - Benutzerbeiträge [de]2024-03-28T11:41:37ZBenutzerbeiträgeMediaWiki 1.41.0https://wiki.archlinux.de/index.php?title=Systemverschl%C3%BCsselung_mit_dm-crypt&diff=13417Systemverschlüsselung mit dm-crypt2012-09-05T14:37:02Z<p>89.166.224.65: </p>
<hr />
<div>== Zusammenfassung ==<br />
<br />
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.08.04 erstellt. Die Installation sollte aber auch mit zuküftigen Medien (zumindest vorerst) nicht großartig anders verlaufen.<br />
<br />
<br />
== Installationsmedium vorbereiten ==<br />
<br />
* Das Installations-Image von http://www.archlinux.org/download/ herunterladen.<br />
<br />
<br />
* Das Image auf CD brennen oder unter einem funktionierendem Linux-System (z.B. Live-CD) auf einen USB-Stick kopieren. Dies funktioniert wie folgt:<br />
# dd if=archlinux.iso of=/dev/sdx<br />
<br />
<br />
== Installation starten ==<br />
<br />
* Nun wird vom vorbereiteten Installations-Medium gebootet und das Setup für die entsprechende Systemarchitektur (i686 oder x86_64) gestartet.<br />
<br />
<br />
* Auf der Konsole angekommen, wird zuerst einmal das deutsche Tastatur-Layout geladen.<br />
root@archiso ~ # loadkeys de-latin1<br />
<br />
Da das Layout derzeit noch auf Englisch eingestellt ist, muss '''z''' anstatt '''y''' und '''ß''' anstatt '''-''' eingegeben werden.<br />
<br />
<br />
== Festplatte vorbereiten ==<br />
<br />
* 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:<br />
'''sda1''' mit einer Größe von 100MB und boot-Flag (dies wird später unsere Boot-Partition)<br />
<br />
'''sda2''', welche den Rest der Festplatte spendiert bekommt (hier wird unser verschlüsseltes LVM seinen Platz drauf finden)<br />
<br />
<br />
* Zur Sicherheit wird die Festplatte jetzt überschrieben:<br />
root@archiso ~ # shred -v /dev/sda2<br />
<br />
Standardmäßig wird dieser Vorgang drei Mal durchgeführt, wobei ein Durchgang bei einer ca. 2TB großen Festplatte schon mal 5 bis 6 Stunden in Anspruch nehmen kann.<br />
<br />
<br />
* Wer deswegen den Vorgang nur einmal durchführen möchte, kann stattdessen folgenden Befehl ausführen:<br />
# shred -v -n 1 /dev/sda2<br />
<br />
<br />
== Verschlüsseltes LVM einrichten ==<br />
<br />
* Jetzt werden die benötigte Kernel-Modul für die Verschlüsselung geladen:<br />
root@archiso ~ # modprobe dm-crypt<br />
<br />
<br />
* Anschließend wird sda2 verschlüsselt:<br />
root@archiso ~ # cryptsetup -c aes-xts-plain -y -s 512 luksFormat /dev/sda2<br />
<br />
<br />
'''Hinweis:''' Für Volumes größer als 2TiB sollte aes-xts-plain64 verwendet werden. Kernelunterstützung hierfür gibt es seit Kernel 2.6.33.<br />
<br />
<br />
* Die Eingabeaufforderung mit YES bestätigen und anschließ ein sicheres Passwort vergeben. Hierbei sollten schon 20 Zeichen inkl. Sonderzeichen und Zahlen verwendet werden.<br />
<br />
<br />
* Jetzt wird die verschlüsselte Partiton geöffnet und das LVM eingerichtet:<br />
root@archiso ~ # cryptsetup luksOpen /dev/sda2 lvm<br />
root@archiso ~ # pvcreate /dev/mapper/lvm<br />
root@archiso ~ # vgcreate main /dev/mapper/lvm<br />
root@archiso ~ # lvcreate -L 200GB -n root main<br />
root@archiso ~ # lvcreate -L 8GB -n swap main<br />
root@archiso ~ # lvcreate -l 100%FREE -n home main<br />
<br />
<br />
* Mit mkfs wird nun das Dateisystem auf die Partitionen geschrieben.<br />
root@archiso ~ # mkfs.ext4 /dev/mapper/main-root -L root<br />
root@archiso ~ # mkfs.ext4 /dev/mapper/main-home -L home<br />
root@archiso ~ # mkfs.ext4 /dev/sda1 -L boot<br />
root@archiso ~ # mkswap /dev/mapper/main-swap -L swap<br />
<br />
<br />
* Dann werden die Partitionen gemounted:<br />
root@archiso ~ # mount /dev/mapper/main-root /mnt<br />
root@archiso ~ # mkdir /mnt/home<br />
root@archiso ~ # mount /dev/mapper/main-home /mnt/home<br />
root@archiso ~ # mkdir /mnt/boot<br />
root@archiso ~ # mount /dev/sda1 /mnt/boot<br />
<br />
<br />
== Basissystem und Bootloader installieren ==<br />
<br />
* Bevor es jetzt los geht und wir das Basissystem installieren, testen wir erstmal die Internetverbindung:<br />
root@archiso ~ # ping -c 3 www.google.com<br />
<br />
<br />
* Besteht keine Verbindung, sollte folgender Befehl Abhilfe schaffen:<br />
root@archiso ~ # dhcpcd<br />
<br />
<br />
* Wir bearbeiten nun zuerst unsere Mirrorliste, und kommentieren alle weit entfernten Server mit '''#''' aus.<br />
root@archiso ~ # nano /etc/pacman.d/mirrorlist<br />
<br />
Dies kann bei der Installation Geschwindigkeitsvorteile von ca. 30 Minuten bringen.<br />
<br />
<br />
* Dann wird das Basissystem inkl. Bootloader (ich habe mich für syslinux entschieden) installiert.<br />
root@archiso ~ # pacstrap /mnt base base-devel syslinux<br />
<br />
<br />
* Nach der Basis-Installation wird syslinux in den MBR von sda geschrieben:<br />
root@archiso ~ # syslinux-install_update -i -a -m -c /mnt<br />
<br />
<br />
* Dann wird syslinux konfiguriert:<br />
root@archiso ~ # nano /mnt/boot/syslinux/syslinux.cfg<br />
<br />
<br />
* Die APPEND-Zeile muss bei beiden Einträgen (arch und archfallback angepasst werden:<br />
APPEND cryptdevice=/dev/sda2:main root=/dev/mapper/main-root ro lang=de locale=de_DE.UTF-8<br />
<br />
<br />
== System konfigurieren ==<br />
<br />
* Nun ermitteln wir zuerst die UUID der Swap-Partition:<br />
root@archiso ~ # blkid | grep swap<br />
<br />
<br />
* Dann wird die fstab generiert und anschließend angepasst:<br />
root@archiso ~ # genfstab -p /mnt >> /mnt/etc/fstab<br />
root@archiso ~ # nano /mnt/etc/fstab<br />
<br />
<br />
* Am Ende der Datei folgendes anfügen:<br />
# UUID=die_eben_ausgelesene_UUID LABEL=swap<br />
/dev/mapper/main-swap none swap defaults 0 1<br />
<br />
<br />
* Jetzt wechseln wir in die chroot-Umgebung:<br />
root@archiso ~ # arch-chroot /mnt<br />
<br />
<br />
* Spracheinstellungen in /etc/locale.conf festlegen:<br />
LANG="de_DE.UTF-8"<br />
<br />
# Keep the default sort order (e.g. files starting with a '.'<br />
# should appear at the start of a directory listing.)<br />
LC_COLLATE="C"<br />
<br />
LC_TIME="de_DE.UTF-8"<br />
<br />
* /etc/locale.gen editieren und locales generieren:<br />
sh-4.2# nano /etc/locale.gen<br />
<br />
<br />
* '''#''' vor folgenden locales entfernen:<br />
de_DE.UTF-8 UTF-8<br />
de_DE ISO-8859-1<br />
de_DE@euro ISO-8859-15<br />
<br />
<br />
* locales generieren:<br />
sh-4.2# locale-gen<br />
<br />
<br />
* Config-Dateien für systemd anpassen:<br />
sh-4.2# echo myhostname >> /etc/hostname<br />
sh-4.2# echo KEYMAP=de-latin1 >> /etc/vconsole.conf<br />
sh-4.2# echo FONT=lat9w-16 >> /etc/vconsole.conf<br />
sh-4.2# echo FONT_MAP=8859-1_to_uni >> /etc/vconsole.conf<br />
sh-4.2# echo Europe/Berlin >> /etc/timezone<br />
sh-4.2# nano /etc/hosts<br />
<br />
<br />
* Nun den Hostnamen hinzufügen:<br />
#<ip-address> <hostname.domain.org> <hostname><br />
127.0.0.1 localhost.localdomain localhost myhostname<br />
::1 localhost.localdomain localhost myhostname<br />
<br />
<br />
* Symlink für die Zeitzone erstellen:<br />
sh-4.2# ln -s /usr/share/zoneinfo/Europe/Berlin /etc/localtime<br />
<br />
<br />
* /etc/rc.conf bearbeiten:<br />
USELVM="yes".<br />
<br />
<br />
* HOOKS in /etc/mkinitcpio.conf bearbeiten:<br />
HOOKS="base udev autodetect sata usbinput keymap encrypt lvm2 filesystems fsck shutdown"<br />
<br />
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.<br />
<br />
<br />
== Kernel-Image erstellen und der erste Neustart ==<br />
<br />
* Damit es bei der Erstellung des Kernel-Images nicht zu dem Fehler bsdcpio: Failed to set default locale kommt, führen wir folgendes aus:<br />
sh-4.2# export LANG=de_DE.UTF-8<br />
<br />
<br />
* Dann erstellen wir das Kernel-Image:<br />
sh-4.2# mkinitcpio -p linux<br />
<br />
<br />
* Jetzt legen wir das Passwort für root an:<br />
sh-4.2# passwd<br />
<br />
<br />
* Anschließend verlassen wir die chroot-Umgebung und hängen die Partitionen aus:<br />
sh-4.2# exit<br />
root@archiso ~ # umount /mnt/{boot,home,}<br />
root@archiso ~ # reboot<br />
<br />
<br />
* 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.<br />
<br />
<br />
== Systemd einrichten und SysVInit deinstallieren == <br />
<br />
* Als erstes bringen wir nun pacman auf den neusten Stand:<br />
[root@myhostname ~] pacman -Syy<br />
<br />
<br />
* Sollte das Netzwerk nicht gestartet sein, folgenden Befehl ausführen:<br />
[root@myhostname ~] dhcpcd<br />
<br />
<br />
* Dann wird systemd installiert. Außerdem installieren wir noch die Arch Units für systemd<br />
[root@myhostname ~] pacman -S systemd systemd-arch-units<br />
<br />
<br />
* In /boot/syslinux/syslinux.cfg fügen wir den APPEND-Zeile vom LABEL arch folgenden Eintrag am Ende hinzu:<br />
init=/bin/systemd<br />
<br />
<br />
* Dann starten wir das System neu und wählen im Bootmenü den Eintrag Arch Linux aus:<br />
[root@myhostname ~] reboot<br />
<br />
* In /boot/syslinux/syslinux.cfg entfernen wir nun wieder den zuvor gesetzten Eintrag init=/bin/systemd.<br />
<br />
<br />
* Um systemd komplett zu integrieren, werden nun folgende Befehle ausgeführt:<br />
[root@myhostname ~] pacman -R initscripts sysvinit<br />
[root@myhostname ~] pacman -S systemd-sysvcompat<br />
<br />
<br />
* Services für systemd einrichten:<br />
[root@myhostname ~] systemctl enable dhcpcd@.service<br />
[root@myhostname ~] systemctl enable cronie.service<br />
[root@myhostname ~] systemctl enable lvm.service<br />
<br />
<br />
* 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:<br />
[root@myhostname ~] pacman -Syy<br />
<br />
<br />
* Ein letzer Reboot und wir können damit anfangen, unser frisch installiertes Arch an unsere Bedürfnisse anzupassen.<br />
[root@myhostname ~] reboot<br />
<br />
<br />
<br />
Erstellt von [[Benutzer:Durag|Durag]] am 20. August 2012<br />
[[Kategorie:Installation]]</div>89.166.224.65