Diskussion:DM-Crypt/Root-Partition verschlüsseln per initramfs
Aus Gentoo Linux Wiki
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)
