DM-Crypt/Root-Partition verschlüsseln - Die schnelle Version

Aus Gentoo Linux Wiki

Wechseln zu: Navigation, Suche
Eine Einleitung und Hinweise zur Kernelkonfiguration sowie Installation von DM-Crypt und cryptsetup finden Sie im Artikel DM-Crypt. Dort sind auch weitere Anwendungsbeispiele verlinkt.


[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.

'Persönliche Werkzeuge