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.


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 .


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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.