Minha máquina possui um SSD, onde instalei o sistema e um HDD, que utilizo como armazenamento para arquivos grandes e / ou usados com pouca frequência. Ambos são criptografados, mas eu escolhi usar a mesma senha para eles. O SSD é montado em /
e o HDD em /usr/hdd
(usuários individuais têm um diretório e podem fazer um link simbólico como quiserem no diretório inicial).
Quando o sistema é inicializado, ele solicita imediatamente a senha do SSD e, apenas alguns segundos depois, a do HDD (é montada automaticamente). Dado que as duas senhas são iguais, existe uma maneira de configurar o sistema para perguntar apenas uma vez?
linux
disk-encryption
cryptsetup
doublep
fonte
fonte
expect
script ou similar que seja chamado para montar os discos em vez de fazer com que o sistema o faça. Em vez disso, o sistema chamaria o script que solicitaria a senha, armazenaria e forneceria a cada uma das operações de montagem./etc/crypttab
para desbloquear a segunda unidade .Respostas:
Distribuições baseadas no Debian:
O Debian e o Ubuntu enviam um script de cache de senhas decrypt_keyctl com o pacote cryptsetup .
decrypt_keyctl script fornece a mesma senha para vários destinos LUKS criptografados, evitando que você a digite várias vezes. Ele pode ser ativado no crypttab com a
keyscript=decrypt_keyctl
opção A mesma senha é usada para destinos que possuem o mesmo identificador no campo keyfile . Na inicialização, a senha para cada identificador é solicitada uma vez.Um exemplo de crypttab :
Depois de atualizar seu cryptab , você também precisará atualizar o initramfs para aplicar as alterações. Use
update-initramfs -u
.Leia-me completo para decrypt_keyctl está localizado em
/usr/share/doc/cryptsetup/README.keyctl
Infelizmente, atualmente isso não funciona em sistemas Debian usando systemd init devido a um bug (outros sistemas init não devem ser afetados). A página de manual do Debian crypttab sugere uma solução alternativa para usar a
initramfs
opção de forçar o processamento no estágio de inicialização do initramfs.Distribuições que não fornecem o script decrypt_keyctl :
Se decrypt_keyctrl não for fornecido pela sua distribuição, o dispositivo poderá ser desbloqueado usando um arquivo de chave no sistema de arquivos raiz criptografado. Isso quando o sistema de arquivos raiz pode ser desbloqueado e montado antes de qualquer outro dispositivo criptografado.
LUKS suporta vários slots de chave. Isso permite que você desbloqueie o dispositivo alternativamente usando a senha se o arquivo de chave estiver indisponível / perdido.
Gere a chave com dados aleatórios e defina suas permissões como legíveis pelo proprietário apenas para evitar vazamento. Observe que o arquivo de chave precisa estar na partição raiz que é desbloqueada primeiro.
Adicione a chave ao seu dispositivo LUKS
Configure o crypttab para usar o arquivo de chave. A primeira linha deve ser o dispositivo raiz, pois os dispositivos são desbloqueados na mesma ordem que os listados no crypttab . Use caminhos absolutos para arquivos principais.
fonte
crypttab
(não toquei emUUID=
criado pelo instalador do sistema, acho que não deveria importar) e as entradas resultantes/var/log/syslog
. Os erros são compreensíveis, mas não tenho idéia do que fazer com eles. O arquivo/lib/cryptsetup/scripts/decrypt_keyctl
existe, então não sei por que ele reclama sobre a opção desconhecida. Eu também não tenho ideia do que especificar como keyfile, não vejo nenhuma explicação em qualquer lugar ...update-initramfs -u -k $(uname -r) -v
:, deve ser exibidaAdding binary /lib/cryptsetup/scripts/decrypt_keyctl
.lsinitramfs /boot/initrd.img-$(uname -r)
update-initramfs
disse, eu observei este:E: /usr/share/initramfs-tools/hooks/cryptkeyctl failed with return 1.
. Depois de pesquisar um pouco, descobri que provavelmente preciso de umkeyutils
pacote (realmente não estava instalado). Agoraupdate-initramfs
consegue elsinitramfs
mencionadecrypt_keytls
. Será atualizado após a próxima inicialização (provavelmente amanhã).Aqui está minha solução alternativa no debian, dado o bug mencionado acima por @sebasth.
Minha configuração é um pouco diferente. Eu tenho uma partição raiz criptografada e um monte de discos RAID. Para mim, tive que adicionar uma opção initramfs ao crypttab:
Isso informa ao update-initramfs que eu quero que essas entradas do crypttab sejam montadas no initramfs. Eu verifiquei meu crypttab executando
Note que meus discos RAID são simples dm-crypt. Isso significava que eu não poderia usar o método luks keyfile que funciona em torno do bug systemd keyscript. Para dm-crypt simples, eu teria que armazenar a senha em texto sem formatação.
Os discos criptografados precisam ser montados antes da
update-initramfs
execução; caso contrário, lançará erros. Eu tive que procurar as seguintes linhas quando meu initramfs foi construído:que mostrou os dois arquivos a seguir:
sendo adicionado ao initramfs.
Finalmente, tive que desativar o systemd que manipula meu crypttab, para lidar com o bug mencionado acima: systemd não suporta a opção keyscript no crypttab. Para isso, adicionei a opção do kernel
para / etc / default / grub e executei
update-grub
. O systemd agora ignora o crypttab e todas as partições criptografadas são carregadas no initramfs.Como tenho uma partição raiz criptografada, o cryptroot não parece armazenar em cache minha chave. Isso significa que eu tenho que digitar minha senha duas vezes; um para a partição raiz e uma vez para minha matriz de ataque.
fonte
Outra opção é usar o
/lib/cryptsetup/scripts/decrypt_derived
script, que também faz parte do cryptsetup no Debian / Ubuntu.Em vez de armazenar em cache a chave, use a chave de volume de um disco como uma senha adicional para o segundo disco. Isso requer a adição de uma segunda senha ao segundo (e terceiro, etc) disco criptografado, mas o LUKS suporta isso. Portanto, esta solução também funciona se seus vários discos criptografados não usarem a mesma senha.
Exemplo para adicionar a chave de sda6crypt para sda5:
Adicione a chave de volume de sda6crypt como senha adicional para sda5:
Configure o sda5crypt para ser desbloqueado automaticamente no
/etc/crypttab
Isso usa um pipe nomeado (
fifo
) para passar a chave e evitar armazenar a chave de volume em um arquivo temporário no disco.A
keyscript
opção só funciona secrypttab
for processada pelas ferramentas originais de configuração de criptografia do Debian, a reimplementação do systemd atualmente não a suporta. Se o seu sistema usa systemd (que é a maioria dos sistemas), você precisa doinitramfs
opção para forçar o processamento do initrd pelas ferramentas de configuração de criptografia, antes de o systemd iniciar.Com base em /unix//a/32551/50793
fonte