Eu tenho um servidor Debian Wheezy que está em execução há um tempo com uma unidade criptografada. A senha da unidade criptografada ( /dev/sda5
) foi perdida quando meu arquivo de senha criptografada foi corrompido.
Eu gostaria de poder reiniciar este servidor, mas é claro que exigirá essa senha. Como a unidade está claramente em um estado descriptografado, existe uma maneira de alterar a senha sem conhecer a antiga?
cryptsetup luksChangeKey /dev/sda5
requer a senha do volume.
É claro que eu poderia rsync
reconstruir tudo, mas gostaria de evitar isso. Procurei na memória ( #cat /dev/mem | less
), mas não consegui encontrá-la (o que é uma coisa muito boa!).
Respostas:
Sim, você pode fazer isso acessando a chave mestra enquanto o volume é descriptografado.
A rápida e suja para adicionar uma nova senha:
device
evolume_name
deve ser definido adequadamente.volume_name
é o nome do volume descriptografado, o que você vê/dev/mapper
.Explicação:
Os volumes LUKS criptografam seus dados com uma chave mestra. Cada frase secreta adicionada simplesmente armazena uma cópia dessa chave mestra criptografada com essa frase secreta. Portanto, se você possui a chave mestra, basta usá-la em um novo slot de chave.
Vamos separar o comando acima.
Isso despeja um monte de informações sobre o volume descriptografado ativamente. A saída é assim:
O campo 5 é a chave mestra.
Não vai mostrar a saída disso, pois são dados binários, mas o que isso faz é pegar a chave mestra do volume e depois convertê-la em dados binários brutos, necessários posteriormente.
Isso está dizendo ao cryptsetup para adicionar uma nova chave ao volume. Normalmente, essa ação requer uma chave existente, no entanto, usamos
--master-key-file
para dizer que queremos usar a chave mestra.A
<(...)
substituição e redirecionamento do comando is shell Basicamente, executa tudo o que está dentro, envia a saída para um canal e, em seguida, substitui o<(...)
por um caminho para esse canal.Portanto, todo o comando é apenas uma linha para condensar várias operações.
fonte
linear
, não será um volume LUKS aberto (valor incorretovolume_name
no comando fornecido). Um volume LUKS aberto terácrypt
no terceiro campo. Emcryptsetup luksOpen /dev/foo bar
, ovolume_name
valor seriabar
./dev/mapper
nomeluks-.....
. Esse é o volume que você precisa usar, não o volume lógico mapeado do LVM.dmsetup table
foi alterado. Pelo menos para mim, a chave mestra é mostrada na coluna$6
.