Pesquisa de site

Como criptografar unidades usando LUKS no Fedora Linux


Neste artigo, explicaremos brevemente sobre criptografia de bloco, Linux Unified Key Setup (LUKS) e descreveremos as instruções para criar um dispositivo de bloco criptografado no Fedora Linux.

Bloquear criptografia de dispositivo

A criptografia do dispositivo de bloco é usada para proteger os dados em um dispositivo de bloco, criptografando-os e, para descriptografar os dados, o usuário deve fornecer uma senha ou chave para acesso. Isto proporciona mecanismos de segurança adicionais, pois protege o conteúdo do dispositivo mesmo que este tenha sido fisicamente separado do sistema.

Introdução ao LUKS

LUKS (Linux Unified Key Setup) é o padrão para criptografia de dispositivos de bloco no Linux, que funciona estabelecendo um formato em disco para os dados e uma política de gerenciamento de senha/chave . Ele armazena todas as informações de configuração necessárias no cabeçalho da partição (também conhecido como cabeçalho LUKS), permitindo assim transportar ou migrar dados sem problemas.

LUKS utiliza o subsistema mapeador de dispositivos do kernel com o módulo dm-crypt para fornecer um mapeamento de baixo nível que contém criptografia e descriptografia dos dados do dispositivo. Você pode usar o programa cryptsetup para executar tarefas de nível de usuário, como criar e acessar dispositivos criptografados.

Preparando um dispositivo de bloco

As instruções a seguir mostram as etapas para criar e configurar dispositivos de bloco criptografados após a instalação.

Instale o pacote cryptsetup.

dnf install cryptsetup-luks

Em seguida, preencha o dispositivo com dados aleatórios antes de criptografá-lo, pois isso aumentará significativamente a força da criptografia usando os comandos a seguir.

dd if=/dev/urandom of=/dev/sdb1	           [slow with high quality random data ]
OR
badblocks -c 10240 -s -w -t random -v /dev/sdb1  [fast with high quality random data]

Aviso: Os comandos acima apagarão todos os dados existentes no dispositivo.

Formatando um dispositivo criptografado

Em seguida, use a ferramenta de linha de comando cryptsetup para formatar o dispositivo como um dispositivo criptografado dm-crypt/LUKS.

cryptsetup luksFormat /dev/sdb1

Depois de executar o comando, você será solicitado a digitar YES (em letras maiúsculas) para fornecer uma senha duas vezes para que o dispositivo seja formatado para uso, conforme mostrado na imagem a seguir.

Para verificar se a operação foi bem-sucedida, execute o seguinte comando.

cryptsetup isLuks /dev/sdb1 && echo Success

Você pode visualizar um resumo das informações de criptografia do dispositivo.

cryptsetup luksDump /dev/sdb1

Criando mapeamento para permitir acesso a um conteúdo descriptografado

Nesta seção, configuraremos como acessar o conteúdo descriptografado do dispositivo criptografado. Criaremos um mapeamento usando o mapeador de dispositivos do kernel. Recomenda-se criar um nome significativo para este mapeamento, algo como luk-uuid (onde <uuid> é substituído pelo LUKS UUID( Identificador universalmente exclusivo).

Para obter o UUID do seu dispositivo criptografado, execute o seguinte comando.

cryptsetup luksUUID /dev/sdb1

Depois de obter o UUID, você pode criar o nome do mapeamento conforme mostrado (será solicitado que você insira a senha criada anteriormente).

cryptsetup luksOpen /dev/sdb1 luk-59f2b688-526d-45c7-8f0a-1ac4555d1d7c

Se o comando for bem-sucedido, um nó de dispositivo chamado /dev/mapper/luk-59f2b688-526d-45c7-8f0a-1ac4555d1d7c que representa o dispositivo descriptografado.

O dispositivo de bloco que acabou de ser criado pode ser lido e gravado como qualquer outro dispositivo de bloco não criptografado. Você pode ver algumas informações sobre o dispositivo mapeado executando o seguinte comando.

dmsetup info /dev/mapper/luk-59f2b688-526d-45c7-8f0a-1ac4555d1d7c

Criando sistemas de arquivos em dispositivos mapeados

Agora veremos como criar um sistema de arquivos no dispositivo mapeado, o que permitirá usar o nó do dispositivo mapeado como qualquer outro dispositivo de bloco.

Para criar um sistema de arquivos ext4 no dispositivo mapeado, execute o seguinte comando.

mkfs.ext4 /dev/mapper/luk-59f2b688-526d-45c7-8f0a-1ac4555d1d7c

Para montar o sistema de arquivos acima, crie um ponto de montagem para ele, por exemplo, /mnt/encrypted-device e então monte-o da seguinte maneira.

mkdir -p /mnt/encrypted-device
mount /dev/mapper/luk-59f2b688-526d-45c7-8f0a-1ac4555d1d7c /mnt/encrypted-device/

Adicione informações de mapeamento a /etc/crypttab e /etc/fstab

Em seguida, precisamos configurar o sistema para configurar automaticamente um mapeamento para o dispositivo, bem como montá-lo no momento da inicialização.

Você deve adicionar as informações de mapeamento no arquivo /etc/crypttab, no seguinte formato.

luk-59f2b688-526d-45c7-8f0a-1ac4555d1d7c  UUID=59f2b688-526d-45c7-8f0a-1ac4555d1d7c   none

no formato acima:

  • luk-59f2b688-526d-45c7-8f0a-1ac4555d1d7c – é o nome do mapeamento
  • UUID=59f2b688-526d-45c7-8f0a-1ac4555d1d7c – é o nome do dispositivo

Salve o arquivo e feche-o.

Em seguida, adicione a seguinte entrada em /etc/fstab para montar automaticamente o dispositivo mapeado na inicialização do sistema.

/dev/mapper/luk-59f2b688-526d-45c7-8f0a-1ac4555d1d7c  /mnt/encrypted-device  ext4 0 0

Salve o arquivo e feche-o.

Em seguida, execute o seguinte comando para atualizar as unidades systemd geradas a partir desses arquivos.

systemctl daemon-reload

Backup de cabeçalhos LUKS

Por último, abordaremos como fazer backup dos cabeçalhos LUKS. Esta é uma etapa crítica para evitar a perda de todos os dados no dispositivo de bloco criptografado, caso os setores que contêm os cabeçalhos LUKS sejam danificados por erro do usuário ou falha de hardware. Esta ação permite a recuperação de dados.

Para fazer backup dos cabeçalhos LUKS.

mkdir /root/backups  
cryptsetup luksHeaderBackup --header-backup-file luks-headers /dev/mapper/luk-59f2b688-526d-45c7-8f0a-1ac4555d1d7c 

E para restaurar os cabeçalhos LUKS.

cryptsetup luksHeaderRestore --header-backup-file /root/backups/luks-headers /dev/mapper/luk-59f2b688-526d-45c7-8f0a-1ac4555d1d7c 

Isso é tudo! Neste artigo, explicamos como criptografar dispositivos de bloco usando LUKS na distribuição Fedora Linux. Se você tiver alguma dúvida ou comentário sobre este tópico ou guia, use o formulário de feedback abaixo para entrar em contato conosco.