pare o crypttab pedindo senha para troca

10

Instalei um novo sistema 11.04 quando foi lançado e configurei a criptografia de disco completo com o LUKS. No começo, ele me pediu uma senha para minhas três partições criptografadas:

/
/home
swap

Como digitar a senha três vezes foi frustrante, tentei configurar / home e trocar para descriptografar de um arquivo-chave armazenado em /. Criei o arquivo-chave e o habilitei nas duas partições. Meu crypttab agora fica assim:

root-root_crypt UUID=13c21bf6-4d92-42a7-877a-87cc31b1aa19 none luks
home-home_crypt UUID=ba90ce5b-9df7-4764-8a72-011bbb164db4 /root/keyfile luks
home-home_crypt UUID=ba90ce5b-9df7-4764-8a72-011bbb164db4 none luks
sda3_crypt UUID=e4677895-2114-4054-9f23-d36f6bb0e6a2 /root/keyfile luks,swap

Isso funciona bem para / home, que é montado automaticamente sem solicitar uma senha. Mas o cryptsetup ainda pede uma senha para o espaço de troca. Eu até tentei adicionar noauto ao espaço de troca para que não fosse configurado - uma vez que o sistema foi inicializado, posso ativá-lo sem a senha, então pensei em adicionar um script init tardio para fazer , mas mesmo com o noauto cryptsetup ainda solicita a senha.

Obrigado!

Brad
fonte
4
Por esse motivo, é recomendável usar o LVM + LUKS no caso de várias partições. O Crypsetup pode ser usado acima ou abaixo da camada LVM (acima -> sistema de arquivos, abaixo -> disco). O uso do conjunto de criptografia abaixo do LVM tem a vantagem de você precisar de apenas uma partição criptografada (a do LVM).
Lekensteyn

Respostas:

10

Tinha a mesma pergunta, aqui está como eu fiz isso no ubuntu 12.04.1 e 12.10,

- antes de iniciar, verifique se você possui um backup e também pode inicializar seu sistema com o ubuntu cd ou usb; como se você cometer um erro, seu sistema pode não inicializar mais ou você pode perder dados. Eu suponho que você tenha um sistema ubuntu criptografado com LUKS, dentro do LUKS você tem 3 partições, SYSTEM-BOOT (não criptografado), SYSTEM-SWAP (criptografado) e SYSTEM-OS (criptografado) -

você precisa ajustar UUIDs, SYSTEM-SWAP_crypt, SYSTEM-OS_crypt, SYSTEM-SWAP, SYSTEM-OS à variação usada no seu sistema, pls veja o link de referência abaixo da minha solução para obter mais informações

Obtenha UUIDs:

blkid

Preparar>

swapoff /dev/mapper/SYSTEM-SWAP_crypt
cryptsetup luksClose SYSTEM-SWAP_crypt

Diga ao cryptsetup para calcular a senha da partição swap a partir da chave de descriptografia do volume que contém o sistema de arquivos raiz>

/lib/cryptsetup/scripts/decrypt_derived SYSTEM-OS_crypt | cryptsetup luksFormat /dev/mapper/SYSTEM-SWAP --key-file -
/lib/cryptsetup/scripts/decrypt_derived SYSTEM-OS_crypt | cryptsetup luksOpen /dev/mapper/SYSTEM-SWAP SYSTEM-SWAP_crypt --key-file -
mkswap /dev/mapper/SYSTEM-SWAP_crypt

informe o sistema sobre a partição swap, edite o crypttab>

nano /etc/crypttab

=? verifique se duas linhas correspondem

SYSTEM-OS_crypt UUID=uuid-of-luks-containing-osroot none luks
SYSTEM-SWAP_crypt UUID=uuid-of-luks-containing-swap SYSTEM-OS_crypt luks,keyscript=/lib/cryptsetup/scripts/decrypt_derived

informe o sistema sobre a partição swap, edite o fstab>

nano /etc/fstab

=? certifique-se de ter esta linha

/dev/mapper/SYSTEM-SWAP_crypt swap swap sw 0 0

informe o sistema sobre a partição swap, edite o resumo>

nano /etc/initramfs-tools/conf.d/resume

=? certifique-se de ter esta linha

RESUME=UUID=uuid-of-encrypted-swap-SYSTEM-SWAP_crypt

atualize o initramfs na partição de inicialização>

update-initramfs -u -k all

Referência

A resposta inspirada em Configurando um sistema Debian criptografado (link arquivado):

Se você estiver usando um sistema Debian criptografado, provavelmente precisará de alguns requisitos de segurança. Se for esse o caso, você também deve usar uma partição de troca criptografada.

A partição de swap pode ser criptografada de duas maneiras:

  • pode ser recriado em cada inicialização, usando uma senha aleatória ou
  • ele pode ser criado como os outros volumes criptografados com uma senha persistente

Se você deseja usar a suspensão em disco, não pode usar a primeira abordagem, pois ela sobrescreveria o espaço ocupado pela memória armazenado na partição de troca. Além disso, você não pode usar um arquivo de chave como as outras partições, pois o sistema de arquivos raiz não é (e não deve) ser montado no momento em que o processo de reinício é iniciado e precisa ler a partição de swap descriptografada.

A maneira que resolvi isso é dizendo ao cryptsetup para calcular a senha da partição swap a partir da chave de descriptografia do volume que contém o sistema de arquivos raiz; o pacote cryptsetup implementa isso com /lib/cryptsetup/scripts/decrypt_derived. Portanto, para configurar a partição de swap, faça o seguinte, assumindo que hda2a partição que contém a troca criptografada e o sistema de arquivos raiz estejam hda5_crypt:

swapoff /dev/mapper/hda2_crypt
cryptsetup luksClose hda2_crypt
dd if=/dev/urandom of=/dev/hda2
/lib/cryptsetup/scripts/decrypt_derived hda5_crypt \
  | cryptsetup luksFormat /dev/hda2 --key-file -
/lib/cryptsetup/scripts/decrypt_derived hda5_crypt \
  | cryptsetup luksOpen /dev/hda2 hda2_crypt --key-file -
mkswap /dev/mapper/hda2_crypt

Para informar o sistema sobre essa partição swap, precisamos adicioná-la a /etc/crypttabe /etc/fstab; verifique se esses arquivos contêm linhas como as seguintes:

/etc/crypttab:
  hda2_crypt /dev/hda2 hda5_crypt luks,keyscript=/lib/cryptsetup/scripts/decrypt_derived

/etc/fstab:
  /dev/mapper/hda2_crypt swap swap sw 0 0

Com isso em vigor, assim que você configurar o sistema para suspensão em disco, a partição swap será automaticamente configurada juntamente com o sistema de arquivos raiz muito cedo durante a sequência de inicialização. Para descobrir qual partição de swap disponibilizar nesse ponto, o cryptsetup verifica o seguinte: asfasfafs - uma linha como RESUME=/dev/mapper/hda2_cryptem /etc/initramfs-tools/conf.d/resume - uma configuração de dispositivo de reinício em /etc/uswsusp.conf(consulte uswsusp.conf(5)) - uma entrada em /etc/suspend.conf - a resume=/dev/mapper/hda2_cryptna linha de comando do kernel

Você pode inspecionar /usr/share/initramfs-tools/hooks/cryptrootse deseja saber mais sobre isso.

Principe
fonte
Bem-vindo ao Ask Ubuntu! Teria marcado com +1 se não fosse simplesmente copiado / colado sem cuidar da formatação (o que acabei de fazer). Eu gosto da abordagem "ele pode ser recriado a cada inicialização, usando uma senha aleatória" aqui.
precisa saber é o seguinte
adicionados os comandos i realmente usados para a resposta, eu vou testá-lo em 12.10 também irá atualizar a resposta mais tarde
o príncipe
OK. Eu assumi que você copiou / colou completamente. Altere-o para ter clareza sobre as alterações feitas para fazê-lo funcionar. Seria útil, obrigado!
precisa saber é
não tente na versão 12.10, quando encontrei um bug que impede a inicialização, recebo "o cryptsetup lvm não está disponível", a pesquisa do Google retorna relatórios de erros. precisa olhar mais profundamente, mas não tem tempo, você saberá mais tarde.
Prince
atualizei a resposta, meu sistema 12.10 agora está totalmente funcional e pede apenas uma senha; eu não atualizei o initramfs -u -k no final que criou o problema mencionado no comentário anterior. @gertcdijk tudo formatado, espero ur feliz agora
Príncipe
4

Isso provavelmente indica que a partição de troca está sendo acessada durante a initramfsparte do processo de inicialização. Neste ponto, o sistema de arquivos raiz ainda não foi montado, portanto, quaisquer arquivos de configuração armazenados lá não estarão visíveis.

Enquanto o espaço de troca é montado após o sistema de arquivos raiz, há uma razão para o initramfsprocesso de inicialização acessar o espaço de troca: quando você hiberna o computador, o conteúdo da memória e o estado do sistema são gravados para troca. Para sair da hibernação, é necessário verificar se o espaço de troca contém uma imagem de hibernação que exigiria a frase secreta.

Se você não se importa de perder a capacidade de sair da hibernação, pode desativar esse comportamento editando /etc/initramfs-tools/conf.d/resumee comentando a linha que começa com RESUME=. Depois de fazer a alteração, execute update-initramfs -upara atualizar a initramfsimagem.

James Henstridge
fonte
Ah obrigado! Não tenho certeza se quero sacrificar a hibernação. Não o uso frequentemente, mas quando a bateria se esgota sem que eu perceba, é útil. Você sabe se existe uma maneira de o cryptsetup reutilizar a mesma senha para /?
19411 Brad
Eu não sei como fazer isso. E antes de perguntar, não tente colocar uma cópia do seu arquivo de chave no initramfs. Embora se livrasse do prompt da senha, também o disponibilizaria para qualquer pessoa com acesso físico ao disco.
James Henstridge