Initramfs + Luks - apenas um prompt de senha

2

O que eu quero alcançar:

  • Solicitando uma senha, apenas uma vez durante o tempo de inicialização;
  • As outras partições (não raiz) para usar o arquivo de chaves dentro do diretório /root/ .

O que consegui até agora:

  • (A) O sistema está inicializando, mas pedindo senha duas vezes (uma vez para / e uma vez para /usr ).
  • Ou: (B) o sistema não inicializa, pedindo senha uma vez, mas depois recusando a montagem /usr dizendo que não pode encontrar o grupo / volume LVM. Eu deixei cair para shell e posso ver que /root/.keyfile está indisponível. / ainda não foi montado.

Configuração

Arquivo: /etc/crypttab

Caso A

sdc3_crypt /dev/sdc3 none luks md0_crypt /dev/md0 none luks

Caso B

sdc3_crypt /dev/sdc3 none luks md0_crypt /dev/md0 /root/.keyfile luks

O que não funcionou totalmente

  • Criando arquivos de script para luks manualmente Abra a unidade necessária: os que estão em /etc/initramfs-tools/scripts/local-premount são chamados antes de / estar disponível, mas aqueles em /etc/initramfs-tools/scripts/local-bottom são chamados depois de querer abrir /usr (e, portanto, é tarde demais ).
por Etienne Bruines 14.06.2015 / 23:52

1 resposta

0

Em esta página wiki (em alemão, infelizmente não encontrei um equivalente em inglês) é sugerido que você use o script /lib/cryptsetup/scripts/decrypt_derived para gerar uma chave a partir do dispositivo raiz aberto. Vou tentar traduzir as partes importantes, mas eu NÃO tentei o procedimento.

Para adicionar a chave, você teria que executar (como root)

mkdir /mnt/ram && mount -t ramfs -o size=1m ramfs /mnt/ram && chmod 600 /mnt/ram
/lib/cryptsetup/scripts/decrypt_derived <root_dev> > /mnt/ram/tmp.key && cryptsetup luksAddKey <usr_dev> /mnt/ram/tmp.key && rm /mnt/ram/tmp.key
umount /mnt/ram && rmdir /mnt/ram 

em que <root_name> é o nome do seu dispositivo raiz, conforme exibido em /dev/mapper (provavelmente sdc3_crypt ) e <usr_dev> do dispositivo em que /usr está ativado (provavelmente /dev/md0 ).

A linha para o crypttab é

  <usr_name>         UUID=<UUID>          <root_name>           luks,keyscript=/lib/cryptsetup/scripts/decrypt_derived

lembre-se de executar

update-initramfs -u -k all 

depois de alterar o crypttab.

Você deve manter uma senha "normal" para o seu dispositivo usr, caso contrário você não poderá abri-la caso seu dispositivo root esteja danificado.

    
por luckyrumo 15.06.2015 / 00:45