DM-Crypt/Root-Partition verschlüsseln - Die schnelle Version
Aus Gentoo Linux Wiki
[Bearbeiten] Ein rascher und unkomplizierter Weg zur verschlüsselten Root-Partition
Irrsinnig lange, komplizierte und daher auch fehleranfällige Anleitungen zur Verschlüsselung der ROOT-Partition - die übrigens bei mir leider nicht von Erfolg gekrönt waren - haben mich dazu bewogen, diesen kleinen Artikel zu schreiben.
Ich setze voraus, dass die "normale" Gentooinstallation für dich kein Problem darstellt. Auf dem verwendeten Testsystem (Athlon T-Bird 1000 MHz, 768 MB SDRAM, 20 GB PATA-Festplatte dauert die ganze Prozedur lediglich ca. 2 Stunden.
1. Laden der benötigten Module:
modprobe dm-mod modprobe dm-crypt modprobe aes modprobe twofish modprobe cbc modprobe (...div. andere Algorithmen...)
2. Superparanoide shredden die gesamte Festplatte
shred /dev/hda
ACHTUNG: Dauert je nach Hardware viele Stunden bis Tage!
3. Erstellen der geplanten Partitionierung mit (c)fdisk
/ /dev/hda3 swap /dev/hda2 /boot /dev/hda1
4. Sofortiges Verschlüsseln und Aktivieren der zukünftigen SWAP-Partition
cryptsetup -c aes -d /dev/urandom create swap /dev/hda2 mkswap /dev/mapper/swap swapon /dev/mapper/swap
Amn.: Da man die entgültige Verschlüsselung für die SWAP-Partition noch später festlegt, ist der momentan verwendete Algorithmus unbedeutend, da er nur während der Installation verwendet wird.
5. Verschlüsseln, formatieren und mounten der ROOT-Partition
cryptsetup -c twofish luksFormat /dev/hda3
Das eingegebene Passwort bzw. die Passphrase sollte man sich tunlichst merken...
cryptsetup luksOpen /dev/hda3 root mke2fs -j /dev/mapper/root mount /dev/mapper/root /mnt/gentoo
Verwendung anderer Algorithmen natürlich möglich, die entsprechenden Module müssen aber in (1.) geladen werden.
6. Formatieren und mounten der /boot-Partition
Diese Partition muß unverschlüsselt bleiben, da der Kernel und die Ramdisk hier liegt und für den Bootloader lesbar sein müssen)
mke2fs /dev/hda1
Beachte das Fehlen der Option -j, da unverschlüsselte Journals eine Sicherheitslücke darstellen können.
7. Download und Entpacken von stage3-xxxxx.tar.bz2 und portage-latest.tar.bz2
Halte dich hierbei ans Installationshandbuch!
8. Mounten von /proc und /dev auf die neue Umgebung
mount -t proc none /mnt/gentoo/proc mount -o bind /dev /mnt/gentoo/dev
9. Falls gewünscht, "bessere" Mirrors auswählen
mirrorselect -i -o >> /mnt/gentoo/etc/make.conf mirrorselect -i -o -r >> /mnt/gentoo/etc/make.conf
10. DNS-Info kopieren
cp /etc/resolv.conf /mnt/gentoo/etc
11. Wechsel in die neue Umgebung
chroot /mnt/gentoo /bin/bash env-update source /etc/profile
12. Datum überprüfen und gegebenenfalls berichtigen
date
13. root-Passwort setzen
passwd
Um Mißverständnissen vorzubeugen: Dieser Befehl setzt das Passwort für den User root, NICHT für die root-Partition! Das ist bereits unter 5. passiert.
14. /etc/make.conf editieren
Kompileroptionen, Feature, USE-Flag, ...
15. Portage syncen
emerge --sync
16. Portage updaten, wenn man dazu aufgefordert wird
17. Kernelquellen, genkernel und cryptsetup installieren
emerge gentoo-sources genkernel udev cryptsetup
genkernel muß die cryptsetup-Binary ins initramfs packen können, daher muß es vor dem Kernelbau installiert sein. udev muß aktualisiert werden, weil cryptsetup mit udev < 1.15 nicht funktioniert.
18. Benötigte Systemtools installieren
emerge grub syslog-ng
19. Konfigurieren und Kompilieren des Kernels, der Module und der Ramdisk
cd /usr/src/linux genkernel --menuconfig --save-config --luks all
Wichtige Parameter:
General setup ---> [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support
Device Drivers ---->
Block Devices ---->
[*] Loopback device support
Multi-device support (RAID and LVM) --->
<*> Device mapper support
<*> Crypt target support
Cryptographic options --->
<*> SHA256 digest algorithm
<*> SHA384 and SHA512 digest algorithms
<*> Twofish cipher algorithm
<*> AES cipher algorithms
Unter den "Cryptographic options" müssen klarerweise alle zur Verwendung geplanten Algorithmen ausgewählt werden, die obigen gelten nur für dieses Beispiel!
genkernel baut nun drei Dateien in /boot, die etwa so heißen:
System.map-genkernel-x86-2.6.23-gentoo-r8 initramfs-genkernel-x86-2.6.23-gentoo-r8 kernel-genkernel-x86-2.6.23-gentoo-r8
Der exakte Name hängt von den gewählten Kernelsourcen ab.
20. Installation und Konfiguration von grub
grub root (hd0,0) setup (hd0) quit
Der entsprechende Eintrag in der /boot/grub/menu.lst lautet:
title Gentoo encrypted root (hd0,0) kernel /kernel-genkernel-x86-2.6.23-gentoo-r8 root=/dev/ram0 init=/linuxrc ramdisk=8192 crypt_root=/dev/hda3 real_root=/dev/mapper/root udev initrd /initramfs-genkernel-x86-2.6.23-gentoo-r8
Die übergebenen Kernelparameter sind mit ein Schlüssel zum Erfolg. Achte besonders hier darauf, keine Tipp- oder Denkfehler zu machen!
21. Festlegen, was nach dem Reboot gestartet werden sollen:
rc-update add net.eth0 default rc-update syslog-ng default
22. Übrige Konfigurationsarbeiten
Editieren von
/etc/conf.d/net /etc/conf.d/keymaps /etc/conf.d/consolefont /etc/conf.d/clock
nach den eigenen Bedürfnissen.
23. Automatisches Verschlüsseln der SWAP-Partition beim Reboot
Die folgenden zwei Zeilen in /etc/conf.d/dmcrypt entkommentieren:
swap=crypt-swap source='/dev/hda2'
24. /etc/fstab anpassen
/dev/hda1 /boot ext2 noatime 1 2 /dev/mapper/root / ext3 noatime 0 0 /dev/mapper/crypt-swap none swap sw 0 0
25. Aussteigen aus chroot und unmounten des neuen Systems
exit umount /mnt/gentoo/boot umount /mnt/gentoo/proc umount /mnt/gentoo/dev umount /mnt/gentoo
26. Schließen des Mappers
cryptsetup luksClose /dev/mapper/root
27. Neues System starten
reboot
Wichtiger Tipp am Schluß: Sollte das aufgesetzte System jetzt nicht wie erwartet starten, bootet man einfach das Installationsmedium noch einmal, öffnet mit
cryptsetup luksOpen /dev/hda3 root
die ROOT-Partition, mountet wie in 6. und 8. beschrieben die anderen Dateisysteme und wechselt mit chroot auf /mnt/gentoo. Dann kann man etwaige Konfigurationsfehler korrigieren.
