Capitulo

Luks

Luks

Não use esse tutorial por enquanto! Se vc souber o problema por favor me avise!

Um pequeno ajuste para não ter que digitar 2 senhas no boot

Como Fazer a chave ser copiada para o initramfs (Solução insegura):

Preciso declarar no /etc/cryptsetup-initramfs/conf-hook

class="highlight">
1
echo 'KEYFILE_PATTERN=/etc/keys/*.key' | sudo tee -a /etc/cryptsetup-initramfs/conf-hook

Importante! Esse passo só ocorre uma vez mas é fundamental pro sistema funcionar. Mas também é o problema deste tutorial, pois torna o ambiente inseguro A chave é copiada do disco que esta criptografado para dentro do initramfs que não é criptografado, nem esta em uma partição criptografada.

Criar a chave da partição:

Criar a chave especifica desta partição:

class="highlight">
1
sudo dd if=/dev/urandom of=/etc/keys/vda3.key bs=512 count=8

Ajustar as permissões da chave:

class="highlight">
1
2
sudo mkdir -m 700 /etc/keys
sudo chmod 400 /etc/keys/vda3.key

Editar o /etc/crypttab, a linha que trata do vda3 entre o UUID e demais para metros tem a palavra none, vamos trocar pelo caminho do arquivo.

De:

class="highlight">
1
vda3_crypt UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx none luks,swap,discard,x-initrd.attach

Para:

class="highlight">
1
vda3_crypt UUID=xxxxxxxx-xxxx-xxxx-xxxxx-xxxxxxxxxxxx /etc/keys/vda3.key luks,swap,discard,x-initrd.attach

Vou atribuir essa chave ao Luks. Será solicitado a senha atual. não vamos apagar ela, só estamos adicionando mais uma forma de abrir:

class="highlight">
1
sudo cryptsetup luksAddKey /dev/vda3 /etc/keys/vda3.key

Atualizar a inicialização

Atualizar o initramfs para ele guardar a chave e saber a quem pertence:

class="highlight">
1
sudo update-initramfs -u

Se deu errado?

Eu tive um problema ao criar o swap, precisei refazer: Desativei:

class="highlight">
1
2
sudo swapoff /dev/mapper/vda3_crypt
sudo cryptsetup close vda3_crypt

Formatei novamente o Luks:

class="highlight">
1
sudo cryptsetup luksFormat --type luks2 /dev/vda3

A saída:

class="highlight">
1
2
3
4
5
6
7
WARNING!
========
Isto vai sobrescrever dados em /dev/vda3 permanentemente.

Are you sure? (Type 'yes' in capital letters): YES
Digite a senha para /dev/vda3: 
Verificar senha:

Adicionei novamente a chave:

class="highlight">
1
sudo cryptsetup luksAddKey /dev/vda3 /etc/keys/vda3.key

A saída:

class="highlight">
1
2
Digite qualquer senha existente: 
Warning: keyslot operation could fail as it requires more than available memory.

Abri com a chave para testar:

class="highlight">
1
sudo cryptsetup open /dev/vda3 vda3_crypt --key-file /etc/keys/vda3.key

A saída:

class="highlight">
1
Warning: keyslot operation could fail as it requires more than available memory.

Tive que pegar o novo id:

class="highlight">
1
2
lsblk | grep vda3_crypt
sudo blkid /dev/vda3

Trocar no /etc/crypttab

class="highlight">
1
sudo vi /etc/crypttab

Formatar o swap:

class="highlight">
1
2
sudo mkswap /dev/mapper/vda3_crypt
sudo swapon /dev/mapper/vda3_crypt

Um ajuste de segurança:

class="highlight">
1
echo 'UMASK=0077' | sudo tee /etc/initramfs-tools/conf.d/umask

/etc/initramfs-tools/initramfs.conf também pode conter o valor

Atualizado o initramfs:

class="highlight">
1
sudo update-initramfs -u

A saída:

class="highlight">
1
2
update-initramfs: Generating /boot/initrd.img-6.12.73+deb13-amd64
cryptsetup: WARNING: Resume target vda3_crypt uses a key file

Solução com cache de senha

Vamos usar a mesma senha em todas as partições Luks

Instalar a dependência

class="highlight">
1
apt install keyutils

Ajustar o Grub

O Debian usa systemd como init e o systemd-cryptsetup-generator que normalmente consome o /etc/crypttab. A opção keyscript não é suportada pelo systemd.

Então temos que desativar essa função do systemd e pedir para o initramfs fazer isso da sua forma nativa.

Edite o grub /etc/default/grub:

class="highlight">
1
sudo vi /etc/default/grub

Ajuste o conteúdo para adicionar luks.crypttab=no ao final do parâmetro GRUB_CMDLINE_LINUX_DEFAULT

class="highlight">
1
GRUB_CMDLINE_LINUX_DEFAULT="... luks.crypttab=no"

Ajustar o crypttab

Adicionar parâmetros no /etc/crypttab no final da linha adicione seguido nos parâmetros.

class="highlight">
1
,initramfs,keyscript=decrypt_keyctl
  • initramfs pede para o initramfs descriptografar, só necessário para quem não é root nem resume.
  • keyscript=decrypt_keyctl Um script de cache de senha, ele irá armazenar em cache a senha de todas as entradas de crypttab com o mesmo identificador.
Esta postagem está licenciada sob CC BY 4.0 pelo autor.