verschlüsselte Systemfestplatte per SSH freischalten

Zuletzt geändert von XWikiGuest am 2015/03/26 12:22

Getestet unter Ubuntu Server 14.04. Auf Ubuntu-speziefische Einstellungen wird hingewiesen.
  1. Hintergrund
  2. Einrichtung
    1. Benötigte Pakete installieren
    2. Auf dem Server den SSH Key des Clients für Dropbear authorisieren
    3. Konfiguration von initramfs
    4. Konfiguration von Dropbear
    5. Den Hook für die Remote-Passworteingabe installieren
    6. Das initramfs-Image neu erstellen
  3. Remote-Passworteingabe

Hintergrund

  • für die Passworteingabe wird der Mini-SSH-Server Dropbear gestartet
  • dieser Startet durch initramfs noch vor dem eigentlichen Betriebssystem
  • die zusätzliche SSH-Entsperrfunktion wird als Hook in initramfs eingebunden

Einrichtung

Benötigte Pakete installieren

sudo apt-get install dropbear busybox
  • wurde auf Ubuntu Server das Paket ubuntu-common installiert, muss busybox nicht installiert werden

Auf dem Server den SSH Key des Clients für Dropbear authorisieren

Auf dem Client mit ssh-keygen einen separaten SSH Key mit Passwort generieren und den öffentlichen Schlüssel an den Server senden.

ssh-keygen -t rsa -C "for unlocking crypt_fs on my server"
> Enter file in which to save the key (/home/client/.ssh/id_rsa): /home/client/.ssh/dropbear/id_rsa_initram
> Enter passphrase (empty for no passphrase): myDropbearPass
scp /home/client/.ssh/dropbear/id_rsa_initram.pub <user>@<server-ip>:/home/<user>

Auf dem Server den öffentlichen Schlüssel für Dropbear authorisieren

cat /home/<user>/id_rsa_initram.pub >> /etc/initramfs-tools/root/.ssh/authorized_keys
rm /home/<user>/id_rsa_initram.pub

Konfiguration von initramfs

In der Datei /etc/initramfs-tools/initramfs.conf folgende Parameter sicherstellen:

BUSYBOX=y
DROPBEAR=y
DEVICE=eth0
IP=<server-ip>:::255.255.255.0::eth0:off
  • bei Ubuntu Server 14.04 anstatt eth0 den Netzwerkadapter em1 verwenden

Konfiguration von Dropbear

Der Datei /usr/share/initramfs-tools/scripts/init-bottom/dropbear folgende Zeile anfügen

ifconfig eth0 0.0.0.0 down

Den Hook für die Remote-Passworteingabe installieren

Die Datei /etc/initramfs-tools/hooks/crypt_unlock.sh mit folgendem Inhalt anlegen:

#!/bin/sh

PREREQ="dropbear"

prereqs() {
   echo "$PREREQ"
}

case "$1" in
    prereqs)
        prereqs
       exit 0
    ;;
esac

. "${CONFDIR}/initramfs.conf"
. /usr/share/initramfs-tools/hook-functions

if [ "${DROPBEAR}" != "n" ] && [ -r "/etc/crypttab" ] ; then
    cat > "${DESTDIR}/bin/unlock" << EOF
#!/bin/sh
if PATH=/lib/unlock:/bin:/sbin /scripts/local-top/cryptroot; then
    kill \`ps | grep cryptroot | grep -v "grep" | awk '{print \$1}'\`
    exit 0
fi
exit 1
EOF


    chmod 755 "${DESTDIR}/bin/unlock"

    mkdir -p "${DESTDIR}/lib/unlock"
cat > "${DESTDIR}/lib/unlock/plymouth" << EOF
#!/bin/sh
[ "\$1" == "--ping" ] && exit 1
/bin/plymouth "\$@"
EOF


    chmod 755 "${DESTDIR}/lib/unlock/plymouth"

   echo To unlock root-partition run "unlock" >> ${DESTDIR}/etc/motd

fi

Die Datei als ausführbar markieren

sudo chmod +x /etc/initramfs-tools/hooks/crypt_unlock.sh

Das initramfs-Image neu erstellen

sudo update-initramfs -u
sudo reboot

Remote-Passworteingabe

Auf dem Client kann man sich nun per SSH mit Dropbear verbinden:

ssh -i ~/.ssh/dropbear/id_rsa_initram -o UserKnownHostsFile="~/.ssh/dropbear/known_hosts" root@<server-ip>

Anschließend startet man den Hook, welcher das Passwort für die Festplattenentschlüsselung erfragt

# unlock
Unlocking the disk /dev/disk/by-uuid/xxxx...
Enter passphrase: myServerPass
Tags:
Erstellt von Thomas Steinbach am 2015/01/03 19:36
    
Copyright 2004-2019 XWiki
7.4.5