Como desbloquear um sistema Ubuntu 11.10 totalmente criptografado por SSH na inicialização?

8

Nas versões anteriores do Ubuntu e nas versões atuais do Debian, você pode desbloquear um sistema totalmente criptografado (usando dmcrypt e LUKS) no momento da inicialização pelo SSH.

Foi tão fácil quanto:

  1. Instalando o sistema criptografado usando o disco de instalação alternativo do Ubuntu ou o disco de instalação normal da Debian e optando por criptografar o sistema.
  2. Após a instalação do sistema, adicione os pacotes dropbear e busybox.
  3. Atualizando o initram-fs para autorizar sua chave ssh.

No momento da inicialização, basta fazer o ssh na máquina e fazer:

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

A máquina desbloqueia e inicializa o sistema criptografado.

Usando exatamente as mesmas etapas no Ubuntu 11.10, posso ssh na máquina, mas /lib/cryptsetup/passfifonão existe.

Parece não haver maneira de desbloquear o sistema pelo ssh. Não sei onde procurar para ver se essa funcionalidade foi alterada ou se foi removida.

Jeff
fonte
Em um sistema que funcionou da maneira antiga, você pode fazer dpkg -S /lib/cryptsetup/passfifo? Não consigo encontrar nenhum pacote no packages.ubuntu.com para Natty ou Maverick que contenham esse arquivo.
maco

Respostas:

4

Acabei de pesquisar no Google e parece que o plymouth atrapalha. Se o plymouth estiver lá, na inicialização, o cryptsetup solicitará a senha do plymouth e isso significa que não está usando o passfifo.

A melhor solução alternativa é colocar o script a seguir no diretório /usr/share/initramfs-tools/hooks/Depois de colocá-lo lá, você pode chmod +xe precisa update-initramfs -u. Você deve poder usar o unlockcomando (criado pelo script abaixo).

Isso depende de você usar uma chave ssh para fazer login. Se você quiser usar uma senha, precisará SSHUSERPASS=<username>inserir/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

Você pode ler mais neste post nos ubuntuforums , neste bug da barra de lançamento e no post em alemão do qual tirei a maior parte disso .

Hamish Downer
fonte
1

até que esse bug seja resolvido, você pode tentar primeiro matar o plymouth. Infelizmente, não há uma maneira fácil de determinar o PID do plymouthd. Mas o plymouth sabe como se desligar :-) Portanto, o seguinte deve ser suficiente.

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

Frederick Nord
fonte