dm-crypt (Português)/Encrypting a non-root file system (Português)

From ArchWiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Status de tradução: Esse artigo é uma tradução de Dm-crypt/Encrypting a non-root file system. Data da última tradução: 2020-05-25. Você pode ajudar a sincronizar a tradução, se houver alterações na versão em inglês.

Os seguintes exemplos são para criptografar um sistema de arquivos secundário, não raiz, com dm-crypt.

Visão geral

Criptografar um sistema de arquivos secundário normalmente protege somente dados sensíveis, enquanto deixa o sistema operacional e programas sem encriptação. Isto é somente útil para dispositivos removíveis, como um USB, para então este ser usado em outros computadores com segurança. Também, é possível criptografar conjuntos separados de dados de acordo com quem possui acesso.

Devido ao dm-crypt ser uma camada de encriptação a nível de blocos, ele somente criptografa os dispositivos, partições e dispositivos de loop. Para criptografar arquivos indíviduais é necessário uma camada de encriptação a nível de sistema de arquivos, como eCryptfs or EncFS. Veja Criptografia de dados em repouso para informações gerais sobre como proteger dados privados.

Partição

Este exemplo detalha a encriptação da partição /home, mas pode ser aplicado para qualquer outra partição similar, não raiz, que contém dados do usuário.

Dica: Você pode ter o diretório /home, em uma partição, único para um usuário, ou criar uma partição /home compartilhada para todos os diretórios dos usuários.

Primeiro tenha certeza que a partição está vazia (sem sistema de arquivos). Delete a partição e crie uma nova se ela possui um sistema de arquivos. Então apague com segurança, veja apagando o disco com segurança.

Crie a partição que vai conter o container criptografado.

Então configure o cabeçalho LUKS com:

# cryptsetup opções luksFormat dispositivo

Mude dispositivo para a nova partição. Veja Opções de encriptação para o modo LUKS para detalhes tais como as opções disponíveis.

Para acessar a partição criptografada, desbloqueie ela com o mapeador de dispositivos, usando:

# cryptsetup open dispositivo nome

Depois de desbloquear a partição, ela estará disponível em /dev/mapper/nome. Agora crie um sistema de arquivos de sua escolha com:

# mkfs.tipo_do_sistema_de_arquivos /dev/mapper/nome

Monte o sistema de arquivos em /home, ou se deve ser somente acessível a um usuário em /home/nome do usuário, veja #Montando e desmontando manualmente.

Dica: Desmonte e monte uma vez para verificar se o mapeamento está funcionando como desejado.

Montando e desmontando manualmente

Para montar a partição:

# cryptsetup open dispositivo nome
# mount -t tipo_do_sistema_de_arquivos /dev/mapper/nome /mnt/home

Para desmontar:

# umount /mnt/home
# cryptsetup close nome
Dica: GVFS tambem pode montar partições criptografadas. Você pode usar um gerenciador de arquivos com suporte ao gvfs (exemplo Thunar) para montar a partição, e a caixa de diálogo pedindo a senha aparecerá. Para outros desktops, zulucryptAUR também oferece uma GUI.

Desbloqueio e montagem automatizados

Existem três diferentes soluções para automaticamente desbloquear a partição e montar seu sistema de arquivos.

Na inicialização do sistema

Usando o arquivo de configuração /etc/crypttab, o desbloqueio ocorre no momento de inicialização fazendo uso do parsing automático do systemd. Esta é a solução recomendada se você deseja usar uma partição home comum para os diretórios de todos os usuários ou automaticamente montar outro dispositivo de bloco encriptado.

Veja Dm-crypt/Configuração do sistema#crypttab para referências e Montando na inicialização do sistema para um exemplo prático.

No login do usuário

Usando pam_exec é possível desbloquear (cryptsetup open) a partição no login do usuário: esta é a solução recomendada se deseja um diretório home de somente um usuário em uma partição. Veja dm-crypt/Montagem no login.

O desbloqueio no login do usuário também é possível com pam_mount.

Dispositivo de loop

Existem dois métodos para usar um dispositivo de loop como um container criptografado, um usando losetup diretamente e outro não.

Sem losetup

Usar diretamente o losetup pode ser evitado completamente ao fazer o seguinte[1]:

$ dd if=/dev/urandom of=grande_segredo.img bs=100M count=1 iflag=fullblock
$ cryptsetup luksFormat grande_segredo.img

Neste caso cryptsetup vai encontrar um dispositivo de loop livre, adicionar o arquivo para ele, e também desanexá-lo quando cryptsetup close for invocado.

Tenha certeza de não omitir a opção iflag=fullblock, de outro modo dd pode retornar uma leitura parcial. Veja dd#Leitura parcial para detalhes.

Antes de executar cryptsetup, veja Opções de encriptação para o modo LUKS e cifras criptográficas e modos de operação primeiro para selecionar configurações adicionais do seu interesse.

As instruções para abrir o dispositivo e criar o sistema de arquivos são do mesmo jeito que em #Partição.

Nota: Se criar um arquivo menor que o cabeçalho do LUKS (16 MiB) vai receber um erro Requested offset is beyond real size of device grande_segredo.img quando tentar abrir o dispositivo.

O procedimento de montagem e desmontagem manual é igual a #Montando e desmontando manualmente.

Com losetup

Um dispositivo de loop permite mapear um dispositivo de bloco para um arquivo com a ferramenta padrão do util-linux losetup. O arquivo pode então conter um sistema de arquivos, que pode ser usado como qualquer outro. Vários usuários conhecem TrueCrypt como uma ferramenta para criar containers criptografados. É possível conseguir essa mesma funcionalidade com um sistema de arquivos de looback criptografado com LUKS, como é mostrado no exemplo a seguir.

Primeiro, crie um container criptografado com dd, usando um gerador de números aleatórios apropriado:

# dd if=/dev/urandom of=grande_segredo.img bs=100M count=1 iflag=fullblock

O arquivo grande_segredo.img vai ser criado com o tamanho de 100 mebibytes.

Nota: Evite redimensionar o container, crie ele maior do que a soma do tamanho de todos os arquivos que serão criptografados, de modo que consiga hospedar a metadata associada utilizada pelo sistema de arquivos interno. Se pretende usar o modo LUKS, o cabeçalho de metadata dele sozinho vai ocupar mais de 16 mebibytes.

Depois, crie um dispositivo de nó, agora podemos montar/usar nosso container:

# losetup /dev/loop0 grande_segredo.img
Nota: Se você receber um erro /dev/loop0: No such file or directory, você precisa carregar o módulo do kernel modprobe loop comoo superusuário. Nestes dias (kernel 3.2) dispositivos de loop são criados em demanda. Solicite um novo com losetup -f como superusuário.

A partir de agora, o procedimento é o mesmo que o especificado em #Partição, exceto pelo fato que o container já está com dados aleatórios e não será necessário apagar com segurança.

Dica: Containers com dm-crypt podem ser muito flexíveis. Veja as funcionalidades e documentação de Tomb. Ele oferece um script para um manuseio rápido e flexível do dm-crypt.

Montando e desmontando manualmente

Para desmontar o container:

# umount /mnt/segredo
# cryptsetup close segredo
# losetup -d /dev/loop0

Para montar o container novamente:

# losetup /dev/loop0 grande_segredo.img
# cryptsetup open /dev/loop0 segredo
# mount -t ext4 /dev/mapper/segredo /mnt/segredo