Criptografia total do sistema com o LUKS no servidor headless - desbloqueie com dropbear e busybox. Como?

2

Eu criptografei um servidor sem cabeçalho com cryptsetup / LUKS.
2 HDDs com 512 MB / boot em / dev / md0 e 1,61 TB LUKS criptografados / dev / md1 com LVM contendo /, swap e outros.
Eu instalei o dropbear (e o busybox já estava instalado) para desbloquear tudo durante o processo de inicialização. Eu uso o GRUB2.

Até agora, tudo funciona bem. Eu consigo logar com uma chave privada no dropbear ouvindo na porta 22 e destravar o LUKS com o comando

echo -n "passphrase" > /lib/cryptsetup/passfifo

assim que eu fizer isso, o servidor será inicializado como se nada fosse criptografado. Que é exatamente o que eu quero.

Agora, enquanto isso funciona bem, não é como eu quero que funcione.
Primeiramente, não consigo encontrar nenhuma documentação em / lib / cryptsetup / passfifo. Como isso funciona? Em segundo lugar, eu criei um arquivo de chaves com GPG (também um com cryptsetup como um dispositivo de loopback) que eu quero usar em vez de uma senha. Mas não consigo encontrar nenhum documentário sobre como fazer isso no busybox. O GPG não parece estar instalado, então não posso usar essa chave (posso de alguma forma disponibilizar o GPG para o busybox?)

Então, no momento, a única maneira de eu desbloquear meu sistema é passar minha senha para / lib / cryptsetup / passfifo que não quero usar. Eu tentei usar cryptsetup diretamente no caminho do busybox como

cryptsetup luksOpen /dev/md1 cryptdisk

Eu não mostrei nenhum erro, mas meu sistema não prosseguiu com a inicialização.

Alguma idéia do que eu poderia fazer, ou há algo errado com a minha abordagem de lidar com isso?

Frank

    
por FrankM 27.08.2013 / 04:19

1 resposta

1

Isso é mais um comentário do que uma resposta, desculpe. Mas como você ainda não recebeu respostas, eu queria escrever algo de qualquer maneira.

Quanto a como funciona:

No Initramfs, você geralmente tem um processo mestre (geralmente um script /init baseado em busybox) que é responsável por disponibilizar a partição raiz antes de transferir o processo de inicialização para o sistema init real da instalação do Ubuntu.

No caso de dropbear no Initramfs, esse é um processo separado iniciado por /init . Ao entrar no dropbear, você obtém um shell que é outro processo. Enquanto isso, o original /init tem que estar rodando e esperando por algo, neste caso a senha do LUKS.

Então, o que o script /init mais provavelmente faz aqui, assim que começou o dropbear, é criar um canal nomeado ou fifo, ou seja, o /lib/cryptsetup/passfifo . E então ele lê a partir desse pipe nomeado. Esta leitura irá bloquear até que realmente haja algo para ler, então é assim que /init trava e espera por entrada.

Então alguns anos depois você loga em dropbear e faz seu echo passphrase > /lib/cryptsetup/passfifo , ponto em que /init acorda de seu sono e continua para desbloquear LUKS e continuar com o resto do processo de inicialização.

E essa é basicamente a ideia geral de como isso funciona. Se não houver documentação para isso, você teria que ler o script de shell.

Quanto a uma chave criptografada GPG no Initramfs, tenho certeza de que esse é o método padrão no Ubuntu de alguma forma, provavelmente configurado via /etc/crypttab . Você verificou o wiki para um howto?

Certamente, exigiria que o GPG fosse incluído no Initramfs. mas eu delineei uma abordagem alternativa aqui que poderia ser feita para funcionar sem dependências adicionais:

Como eu uso o dm-crypt (LUKS) com o GnuPG para usar dois fatores para o FDE?

O problema com isto é claro que não é padrão, então, embora possa ser mais simples em teoria, pode ser mais difícil de configurar.

    
por frostschutz 28.08.2013 / 20:17