Come si può sbloccare un sistema Ubuntu 11.10 completamente crittografato su SSH all'avvio?


8

Nelle versioni precedenti di Ubuntu e nelle versioni correnti di Debian, è possibile sbloccare un sistema completamente crittografato (usando dmcrypt e LUKS) all'avvio tramite SSH.

È stato facile come:

  1. Installare il sistema crittografato usando il disco di installazione alternativo di Ubuntu o il normale disco di installazione di Debian e scegliendo di crittografare il sistema.
  2. Dopo aver installato il sistema, aggiungendo i pacchetti dropbear e busybox.
  3. Aggiornamento di initram-fs per autorizzare la tua chiave ssh.

Al momento dell'avvio, avresti semplicemente ssh sulla macchina e fare:

echo -ne "keyphrase" > /lib/cryptsetup/passfifo

La macchina avrebbe quindi sbloccato e avviato il sistema crittografato.

Usando gli stessi identici passaggi su Ubuntu 11.10, posso ssh sulla macchina, ma /lib/cryptsetup/passfifonon esiste.

Sembra che non ci sia modo di sbloccare il sistema tramite ssh. Non sono sicuro dove cercare per vedere se questa funzionalità è cambiata o se è stata rimossa.


Su un sistema che funzionava alla vecchia maniera, puoi farlo dpkg -S /lib/cryptsetup/passfifo? Non riesco a trovare alcun pacchetto su packages.ubuntu.com per Natty o Maverick che contenga questo file.
maco,

Risposte:


4

Ho appena fatto una ricerca su Google e sembra che Plymouth si frapponga. Se plymouth è lì, quindi all'avvio, cryptsetup chiederà la password a plymouth e ciò significa che non sta usando passfifo.

La soluzione migliore sembra mettere il seguente script nella directory /usr/share/initramfs-tools/hooks/Dopo averlo messo lì puoi chmod +xe poi devi farlo update-initramfs -u. Dovresti quindi essere in grado di utilizzare il unlockcomando (creato dallo script seguente).

Questo si basa su di te usando una chiave ssh per accedere. Se si desidera utilizzare una password, allora avete bisogno di mettere SSHUSERPASS=<username>in/etc/initramfs-tools/initramfs.conf

#!/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
            /sbin/pkill cryptroot
            /sbin/pkill -f "plymouth ask-for-pass"
            /sbin/pkill cryptsetup
            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"

    # Enable password login
    if [ -n "$SSHUSERPASS" ]
    then
        sed -n "s/^${SSHUSERPASS}:/root:/p" /etc/shadow > "${DESTDIR}/etc/shadow"
        chmod 640 "${DESTDIR}/etc/shadow"
    fi
fi

Puoi leggere di più in questo post su ubuntuforums , questo bug del launchpad e il post tedesco da cui ho citato la maggior parte .


1

fino a quando questo errore non viene risolto, puoi provare a uccidere Plymouth. Sfortunatamente, non esiste un modo semplice per determinare il PID di plymouthd. Ma plymouth sa come abbandonarsi :-) Quindi dovrebbe essere sufficiente quanto segue.

plymouth --quit; echo -ne "keyphrase" > /lib/cryptsetup/passfifo

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.