Guia de tecnologias

Como criptografar um disco em (X)Ubuntu Feisty com dm-crypt e LUKS

10 min read Segurança Atualizado 23 Sep 2025
Criptografar disco no (X)Ubuntu Feisty com LUKS
Criptografar disco no (X)Ubuntu Feisty com LUKS

Introdução

Este tutorial explica como proteger dados armazenados em um disco adicional usando criptografia de disco completo com dm-crypt e LUKS no (X)Ubuntu Feisty. A intenção é fornecer um procedimento prático, seguro e reproduzível para administradores e utilizadores avançados que precisam garantir confidencialidade dos dados em repouso.

Definição rápida: dm-crypt é um módulo do kernel Linux para criptografia de blocos; LUKS (Linux Unified Key Setup) é um padrão que define como armazenar chaves e metadados para volumes cifrados.

Motivação

A criptografia do disco protege dados em caso de perda, roubo ou acesso físico não autorizado ao hardware. Mesmo que um adversário tenha acesso físico ao disco, sem a senha ou chave correta os dados permanecem inacessíveis. Neste guia descrevemos um fluxo simples e robusto para criar um volume LUKS e utilizá-lo como um sistema de arquivos comum.

Aviso importante

  • Este procedimento destruirá todos os dados existentes no disco ou partição que você escolher. Faça backup antes de continuar.
  • Não use este tutorial para criptografar o disco raiz do sistema onde o seu Linux está instalado, a menos que saiba exatamente como integrar a chave na inicialização e tenha backups.
  • O objetivo aqui é criptografar um disco adicional usado para dados.

Considerações legais

Existem técnicas de criptografia que tentam oferecer deniabilidade plausível (por exemplo, soluções com vários níveis de senha). Este tutorial foca em dm-crypt/LUKS, que não oferece deniabilidade de múltiplos níveis por padrão.

Observações sobre legislação: o autor original menciona contextos europeus e a possibilidade de ordens judiciais para divulgação de senhas. Regras jurídicas variam por país. Em alguns sistemas judiciais existem proteções que permitem manter silêncio em processos criminais; em outros, a ordem de entrega de senhas pode ter consequências legais. Este documento não é aconselhamento jurídico. O autor também indicou que suas observações refletem a experiência na Suíça.

I. Pré-requisitos e software necessário

Este guia foi escrito para (X)Ubuntu Feisty; ele também pode ser adaptado a outras versões *buntu e a distribuições Debian-based. Execute os comandos abaixo com privilégios de administrador.

Instale os pacotes necessários:

sudo aptitude install cryptsetup hashalot

Explicação curta: cryptsetup é a ferramenta para criar e manipular volumes LUKS; hashalot é útil para testar funções de hash (opcional).

II. Procedimento — preparação do disco

  1. Identifique o dispositivo que será criptografado. Exemplos: /dev/hda, /dev/sda, /dev/sdb. Use com cuidado: escolher o dispositivo errado apaga dados.

  2. Se possível, crie uma partição específica para criptografar em vez de usar o disco inteiro. Ferramentas úteis: fdisk, parted, gparted.

  3. Preencha o disco/partição com dados randômicos (opcional, mas recomendado) para dificultar a identificação de quanto espaço útil existe e para evitar padrões que indiquem dados não criptografados. Isto pode demorar bastante, dependendo do tamanho e da velocidade do disco.

sudo dd if=/dev/urandom of=/dev/HARDDISK bs=1M status=progress

Substitua /dev/HARDDISK pelo seu dispositivo (por exemplo /dev/sdb1). O parâmetro bs=1M acelera a cópia e status=progress mostra progresso em sistemas modernos; retire se não suportado.

Nota: este processo grava dados aleatórios e sobrescreve todo o conteúdo anterior.

III. Carregar módulos do kernel

Para usar dm-crypt, carregue os módulos necessários:

sudo modprobe aes
sudo modprobe dm-crypt
sudo modprobe dm_mod

Para carregar automaticamente no boot, adicione as linhas ao arquivo /etc/modules:

# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
fuse
lp
aes
dm-crypt
dm_mod

Adicione apenas aes, dm-crypt e dm_mod se os restantes já existirem ou não forem necessários no seu sistema. Saia do editor salvando as alterações.

IV. Criar a partição criptografada com LUKS

Para inicializar o cabeçalho LUKS e configurar o volume:

sudo cryptsetup luksFormat /dev/HARDDISK

Você será solicitado a confirmar e a inserir uma senha forte. Boas práticas para senhas: use uma frase longa, misture caracteres e evite senhas curtas ou fracas. Alternativamente, pode usar um ficheiro-chave (keyfile) em vez de senha interativa para processos automatizados — não guarde esse ficheiro em lugares inseguros.

Nota: em sistemas modernos existe LUKS2, com funcionalidades adicionais. No Feisty o comportamento padrão corresponde ao LUKS disponível na época (LUKS1). Consulte a documentação do cryptsetup se quiser opções avançadas (cipher, hash, iteracoes).

V. Abrir (mapear) o volume criptografado

Após criar o cabeçalho LUKS, abra (mapear) o dispositivo para que seja exposto como um dispositivo de bloco no /dev/mapper:

sudo cryptsetup luksOpen /dev/HARDDISK DEVICENAME

Isto cria um dispositivo visível em /dev/mapper/DEVICENAME. A partir daí você trabalha com esse dispositivo como se fosse um disco normal.

VI. Formatar o volume mapeado

Formate o dispositivo mapeado com o sistema de arquivos desejado. Exemplo com ext3 (compatível com o guia original):

sudo mkfs.ext3 /dev/mapper/DEVICENAME

Você pode usar ext4, xfs, btrfs, etc., conforme suas necessidades. Escolha com base em requisitos de desempenho, snapshots e compatibilidade.

VII. Montar e usar

Crie um ponto de montagem e monte o volume:

sudo mkdir /media/DEVICENAME
sudo mount /dev/mapper/DEVICENAME /media/DEVICENAME

Depois de montado, copie arquivos normalmente. Para desmontar, veja a seção apropriada mais abaixo.

VIII. Montagem automática na inicialização

Para que o volume seja aberto no boot e montado automaticamente, edite dois arquivos importantes.

  1. /etc/crypttab — linha para abrir o volume LUKS:
DEVICENAME  /dev/HARDDISK   none    luks,check=ext2,retry=5

No exemplo, “none” indica que a senha será solicitada interativamente durante a inicialização. O parâmetro retry=5 define o número de tentativas.

  1. /etc/fstab — linha para montar o dispositivo já mapeado:
# CryptoDevices
/dev/mapper/DEVICENAME  /media/HARDDISK auto    defaults    0   0

No arranque, o sistema solicitará a senha para abrir o dispositivo (padrão: até 5 tentativas). Se a senha falhar, o sistema continuará a inicialização sem montar o volume; você pode montá-lo manualmente depois.

IX. Adicionar e remover chaves

LUKS permite múltiplas chaves (slots) para o mesmo volume. Assim você pode adicionar várias senhas ou ficheiros-chave.

Adicionar uma chave (será solicitada a senha atual e depois a nova chave):

sudo cryptsetup luksAddKey /dev/HARDDISK

Remover uma chave (em versões atuais usa-se luksKillSlot ou luksRemoveKey conforme a versão; o comando abaixo é válido para muitas versões):

sudo cryptsetup luksDelKey /dev/HARDDISK

Se o seu cryptsetup suporta comandos diferentes (por exemplo luksRemoveKey ou luksKillSlot), confira a saída de –help ou man cryptsetup.

X. Fechar e desmontar corretamente

Mesmo quando o dispositivo está desmontado, o mapeamento em /dev/mapper pode continuar ativo. Isso significa que o conteúdo do volume permanece acessível enquanto o mapeamento existir.

Para desmontar e fechar o volume de forma segura:

sudo umount /media/DEVICENAME && sudo cryptsetup luksClose DEVICENAME

Exemplo de script simples de desmontagem (~/umount.sh):

#!/bin/bash
sudo umount /media/DEVICENAME && sudo cryptsetup luksClose DEVICENAME

Torne-o executável:

sudo chmod a+x ~/umount.sh

Você pode criar um atalho no seu ambiente gráfico (Xfce, GNOME etc.) para executar esse script.

Atalho do Xfce para script de desmontagem

XI. Notas finais e boas práticas de segurança

  • Use uma senha forte ou um ficheiro-chave guardado em local seguro (por exemplo um dispositivo USB removível com permissões restritas).
  • Faça backup do cabeçalho LUKS imediatamente após criar o volume. Se o cabeçalho for corrompido, não será possível recuperar os dados sem backup do cabeçalho.
sudo cryptsetup luksHeaderBackup /dev/HARDDISK --header-backup-file /path/para/backup-header.img
  • Guarde o backup do cabeçalho em mídia externa segura (e não no próprio disco criptografado).
  • Tenha backups regulares dos dados, mesmo quando criptografados; criptografia protege confidencialidade, não substitui backups contra perdas acidentais.
  • Atualize o sistema e o cryptsetup periodicamente para corrigir vulnerabilidades.

Quando este método falha — limitações e pontos de atenção

  • Se perder a senha e não tiver backup do cabeçalho nem das chaves, os dados são praticamente irrecuperáveis. Planeje a gestão de chaves antes de implantar.
  • Criptografia não protege contra ataques com acesso já autenticado (por exemplo, se um atacante obtiver acesso root ao sistema enquanto o volume está montado).
  • Criptografia não evita a coleta de metadados pelo sistema operativo (logs, caches) enquanto o volume estiver montado.
  • Em contextos legais, ordens judiciais podem exigir a entrega de senhas em algumas jurisdições; consulte aconselhamento jurídico local.

Abordagens alternativas

  • VeraCrypt / TrueCrypt: oferece capacidades avançadas, incluindo contêineres e, historicamente, recursos de deniabilidade plausível. Verifique compatibilidade, comunidade e manutenção do projeto (VeraCrypt é sucessor mantido).
  • EncFS / eCryptfs: criptografam sistemas de ficheiros a nível de ficheiro em vez de bloco; útil quando não é desejável criptografar o disco inteiro.
  • LUKS2 e ferramentas modernas: em distribuições recentes prefira LUKS2, que pode oferecer melhorias (metadados, suporte a tpm2, etc.).

Escolha a solução baseada em requisitos: deniabilidade, integração com inicialização, performance e suporte a backups.

Procedimento rápido (mini-metodologia)

  1. Identificar dispositivo e fazer backup.
  2. Preencher com aleatório (opcional): dd if=/dev/urandom of=/dev/HARDDISK.
  3. Carregar módulos do kernel.
  4. sudo cryptsetup luksFormat /dev/HARDDISK (definir senha/ficheiro-chave).
  5. sudo cryptsetup luksOpen /dev/HARDDISK DEVICENAME.
  6. sudo mkfs. /dev/mapper/DEVICENAME.
  7. Criar /media/DEVICENAME e sudo mount.
  8. (Opcional) configurar /etc/crypttab e /etc/fstab para montagem automática.
  9. Fazer backup do header: cryptsetup luksHeaderBackup.

Testes e critérios de aceitação

  • Verificar que ao reiniciar o sistema o kernel solicita a senha para o dispositivo listado em /etc/crypttab.
  • Após fornecer a senha, confirmar que /dev/mapper/DEVICENAME existe e que o sistema de arquivos está montado em /media/DEVICENAME.
  • Testar leitura/gravação: criar ficheiro, desmontar, reiniciar, abrir volume e confirmar persistência dos dados.
  • Verificar que, se o dispositivo for removido fisicamente, os dados não são acessíveis em outro sistema sem a senha e o cabeçalho.

Recuperação e rollback (incidente)

  • Se o cabeçalho LUKS for corrompido mas tiver backup do cabeçalho, restaure-o com:
sudo cryptsetup luksHeaderRestore /dev/HARDDISK --header-backup-file /path/para/backup-header.img
  • Se tiver perdido a senha e não tiver backup das chaves ou do cabeçalho, a recuperação é virtualmente impossível. Considere políticas de rotação de senhas e cópias de segurança para evitar perda total.

Checklists por papel

Administrador:

  • Fazer backup completo antes.
  • Testar em ambiente não-produtivo.
  • Fazer backup do header e guardá-lo off-site.
  • Configurar montagem automática se necessário.

Usuário final:

  • Criar senha forte (ou guardar ficheiro-chave em dispositivo seguro).
  • Confirmar que sabe como desmontar o volume antes de desligar o computador.
  • Assegurar backups de dados.

Segurança adicional e endurecimento

  • Considere usar um ficheiro-chave em conjunto com uma senha para autenticação em dupla.
  • Restrinja permissões do ficheiro de keyfile: chmod 600 /path/to/keyfile.
  • Se dispuser de um TPM e de suporte na sua distribuição, avalie integração com tpm2 para armazenamento de chaves (requer planeamento e testes).
  • Evite deixar o volume montado em laptops desprotegidos; prefira desmontar e fechar o volume antes de transporte.

Migração de dados para o volume criptografado

Para migrar dados de um volume não encriptado para um criptografado, copie com rsync preservando atributos:

sudo rsync -aHAX --progress /ponto_origem/ /media/DEVICENAME/

Verifique permissões e proprietários após a cópia.

Glossário rápido

  • LUKS: formato padrão para armazenar chaves e metadados de volumes criptografados no Linux.
  • dm-crypt: módulo do kernel que fornece criptografia a nível de dispositivo de bloco.
  • Header: metadados do LUKS que contêm informação sobre chaves; essencial para abrir o volume.

Ficha técnica e notas práticas

  • Algoritmos comuns: AES (256 bits recomendado). A escolha de cipher e parâmetros depende da versão do cryptsetup.
  • Chaves: LUKS permite múltiplas chaves/slots para o mesmo volume (útil para administrar acessos diferentes).
  • Backup do header: sempre mantenha uma cópia do header fora do disco criptografado.

Exemplos de comandos úteis (resumo)

sudo aptitude install cryptsetup hashalot
sudo dd if=/dev/urandom of=/dev/HARDDISK bs=1M status=progress
sudo modprobe aes
audo modprobe dm-crypt
sudo cryptsetup luksFormat /dev/HARDDISK
sudo cryptsetup luksOpen /dev/HARDDISK DEVICENAME
sudo mkfs.ext3 /dev/mapper/DEVICENAME
sudo mkdir /media/DEVICENAME
sudo mount /dev/mapper/DEVICENAME /media/DEVICENAME
sudo cryptsetup luksHeaderBackup /dev/HARDDISK --header-backup-file /path/backup.img
sudo umount /media/DEVICENAME && sudo cryptsetup luksClose DEVICENAME

(Altere HARDDISK e DEVICENAME conforme o seu ambiente.)

Exemplo de decisão (Mermaid)

flowchart TD
  A[Precisa criptografar disco?] --> B{Sim}
  B --> C[É disco do sistema raiz?]
  C -- Não --> D[Proceder com LUKS no disco adicional]
  C -- Sim --> E[Planejar criptografia do root com initramfs e backups]
  D --> F[Escolher senha forte/backup do header]
  E --> F
  F --> G[Implementar e testar]
  A --> H[Não] --> I[Fazer backup e políticas de retenção]

Resumo final

Criptografar um disco com dm-crypt e LUKS oferece um nível sólido de proteção para dados em repouso. Planeje a gestão de chaves e backups do header antes de executar o procedimento. Teste a recuperação e verifique o processo de boot se optar por montagem automática.

Importante: criptografia é uma peça da estratégia de segurança. Combine-a com políticas de backup, controle de acesso e atualizações regulares.

Autor
Edição

Materiais semelhantes

Corrigir espaço insuficiente para atualização do Windows
Windows

Corrigir espaço insuficiente para atualização do Windows

Steam não abre: como corrigir o erro de conexão
Suporte Técnico

Steam não abre: como corrigir o erro de conexão

Alterar arquivo de paginação no Windows
Windows

Alterar arquivo de paginação no Windows

Recuperar e-mails apagados no Mac — 7 métodos
Tutoriais

Recuperar e-mails apagados no Mac — 7 métodos

Criptografar disco no (X)Ubuntu Feisty com LUKS
Segurança

Criptografar disco no (X)Ubuntu Feisty com LUKS

Ver e apagar histórico de pesquisa do YouTube
Privacidade

Ver e apagar histórico de pesquisa do YouTube