Diskussion:DM-Crypt/Root-Partition verschlüsseln per initramfs

Aus Gentoo Linux Wiki

Wechseln zu: Navigation, Suche

Leider funktioniert der Aufruf von "gpg" innerhalb der Datei /init nicht: Es wird nicht nach dem Passwort "gepromptet". Ich konnte bisher keine Lösung für das Problem finden. Ich bin dabei, nach einem Ersatz für "gpg" zu suchen, der funktioniert (z.B. aespipe).

Hier (Acer Aspire 5024 mit kernel-2.6.18-r3) funktioniert der Aufruf problemlos. Ist gpg statisch? Den Aufruf anderer Binaries probiert?

Selbes Problem. GPG Passphrase Prompt erscheint nicht. (GPG ist statisch; und andere Binarys (busybox usv. laufen im init)) --Zzeroo 09:02, 1. Dez. 2007 (UTC)

Inhaltsverzeichnis

[Bearbeiten] verschlüsselter Key auf einem separaten USB-Stick

Der verschlüsselte Key sollte nicht auf der Boot-Partition sondern eher auf einem USB-Stick abgelegt werden. Auch wenn der Angreifer nicht im Besitze des Kennworts ist, besteht die Gefahr dass der Key in falsche Hände gerät. Die Löschung oder jede Manipulation des Keys auf der Boot-Partition führt unweigerlich zum Datenverlust. Ausserdem kann die Passphrase vor allem bei Notebooks unbemerkt mit Keyloggern ermittelt werden.

Das System ist nach Ablage des Keys auf einem USB-Stick insoweit doppelt abgesichert, dass nur die Person den Rechner erfolgreich booten kann, die sowohl das Kennwort kennt als auch im Besitze des zum Booten erforderlichen USB-Stick ist.

Um das System mit einem auf dem USB-Stick abgelegten verschlüsselten USB-Stick starten zu können sind nur kleine Änderungen bei der Erstellung des Initramfs-Basisverzeichnisses und eine entsprechende Anpassung des init-Skriptes nötig.

[Bearbeiten] Erstellung des Basisverzeichnisses

Damit der USB-Stick schon beim Booten korrekt erkannt und richtig eingebunden wird sollte mknod direkt ins initramfs Verzeichnis kopiert werden. Um zu ermitteln wie der USB-Stick beim Booten erkannt wird hilft folgendes:

Code: USB Stick ermitteln
dmesg | tail

Bei einem System mit IDE-Festplatte wird der Stick meistens mit /dev/sda erkannt. Bei einem System mit SCSI oder SATA meist mit /dev/sdb. Anschließend gilt es den device node des USB-Stick zu ermitteln

Code: device node des USB-Stick ermitteln
file /dev/sda1

Die Ausgabe könnte so aussehen:

/dev/sda1: block special 8 1

Die so ermittelten Werte in die initramfs einfügen. Hinweis bei Schwierigkeiten beim mounten etwa be "mount: mounting /dev/sda1 failed" empfiehlt es sich manchmal auch den node von /dev/sda bzw /dev/sdb zu ermitteln.

Code: Zum initramfs-Basisverzeichnis hinzufügen
cd /root/initramfs
mkdir {bin,dev,mnt,new-root,proc,sys}
mknod --mode=0660 dev/sda1 b 8 1
cp /bin/mknod bin/ # so wird sichergestellt, dass der USB-stick beim Bootvorgang eingebunden wird und korrekt gemounted werden kann


[Bearbeiten] Datei /init anpassen

Datei: /root/initramfs/init
#!/bin/sh
export PATH=/bin
umask 0077
mount -t proc proc /proc
mount -t sysfs sysfs /sys
mount -t tmpfs tmpfs /dev
busybox --install -s
mknod -m 0660 /dev/sda1 b 8 1 # Anlegen des richtigen device Nodes
mdev -s
echo /bin/mdev > /proc/sys/kernel/hotplug
while ! mount -n -o ro /dev/sda1 /mnt ; do  # "key.gpg" liegt auf dem eingebundenen USB-Stick
   sleep 2 # Diesen Wert ggf erhöhen, da bei älteren Rechnern die USB-Sticks häufig nicht so rasch erkannt werden
done
# tty fix
rm /dev/tty
ln -s /dev/console /dev/tty
while [ ! -e /dev/mapper/root ] ; do
   sleep 2
   gpg --quiet --homedir / --logger-file /dev/null --decrypt /mnt/key.gpg | cryptsetup luksOpen /dev/hda3 root
done
mount /dev/mapper/root /new-root
cryptsetup -c blowfish -h sha256 -d /dev/urandom create swap /dev/sda2 
mkswap /dev/mapper/swap
swapon /dev/mapper/swap # Da hier schon die Swap Partition verschlüsselt wird muss die fstab entsprechend angepasst werden
echo > /proc/sys/kernel/hotplug
umount -l /mnt /proc /sys /dev # Da ein zusätzliches Laufwerk eingebunden wurde muss statt /dev/sda nunmehr /mnt stehen
                               # Option -l funktioniert nur bei USB-Sticks die mit ext2 oder ext3 formatiert wurden 
exec switch_root /new-root /sbin/init


[Bearbeiten] Anpassen der /etc/fstab

Datei: /etc/fstab
/dev/mapper/root    /       reiserfs  noatime    0 1
# /dev/mapper/swap    none    swap      sw         0 0 # Auskommentieren da es sonst zu Fehlermeldungen kommt,: /device busy or already mounted
...

[Bearbeiten] RAID-Devices hinzufügen

Da ich das DM-Crypt über mehrere md fahre hier noch wie man in der initrd zu den /dev/md* kommt. Die Devices sind bei mir alle Version 0.9 und als raid_autodetect gekennzeichnet. Also auch noch mdadm statisch bauen und in bin/ kopieren.echo Dann zusätzlich in init:

# Start Multi-devices                                                                                                                                                                                 
mdadm --examine --brief --scan --config=partitions >mdadm.conf                                                                                                                                        
mdadm --assemble --scan --config=mdadm.conf

Das Ganze direkt hinter der Zeile "echo /bin/mdev > /proc/sys/kernel/hotplug " --62.104.103.199 19:35, 13. Okt. 2007 (UTC)

'Persönliche Werkzeuge