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.