Criptografia de disco completo LUKS: Guia de configuração do servidor Linux

15 min de leitura - 5 de junho de 2026

hero section cover
Índice
  • Guia do servidor de encriptação de disco completo LUKS
  • Porquê o LUKS2 e o que verificar primeiro
  • Estrutura do disco
  • Configurar o LUKS com o LVM
  • Gestão de chaves e desbloqueio remoto
  • Reforço da segurança e prevenção de bloqueios
Partilhar

Encriptação total do disco LUKS para servidores Linux, abrangendo a configuração do LUKS2, disposição do LVM, gestão de chaves, desbloqueio remoto com Tang e TPM e endurecimento.

Guia do servidor de encriptação de disco completo LUKS

O LUKS (Linux Unified Key Setup) encripta um dispositivo de bloco Linux na totalidade, de modo que o conteúdo fica ilegível sem a chave mestra. Uma unidade roubada, um chassis desativado, um disco de backup esquecido: nenhum destes expõe os seus dados, desde que o LUKS esteja configurado corretamente. Esta publicação aborda como implementar a encriptação de disco completo LUKS num servidor, incluindo o layout LVM, a gestão de chaves, o desbloqueio remoto e os modos de falha que impedem as pessoas de aceder aos seus próprios dados.

A implementação de referência aqui é o LUKS2 com LVM dentro do contentor encriptado, num servidor Linux com AES-NI na CPU. Essa combinação lida com todas as cargas de trabalho modernas, tem um bom desempenho e cumpre os requisitos de dados em repouso da HIPAA, PCI-DSS, RGPD e SOC 2.

Porquê o LUKS2 e o que verificar primeiro

O LUKS encripta na camada de dispositivos de bloco utilizando o dm-crypt, com a chave mestra armazenada em slots de chave dentro do cabeçalho do LUKS. Essa separação é importante: pode alternar frases-passe ou adicionar novas chaves sem ter de encriptar novamente o disco.

O LUKS2 é o padrão atual. Suporta até 32 slots de chave, metadados no formato JSON, re-encriptação online e encriptação autenticada através do --integrity sinalizador. O LUKS1 suporta 8 slots de chave e funciona bem em sistemas mais antigos, mas novas implementações devem começar com o LUKS2.

A sobrecarga de desempenho com o AES-NI é normalmente inferior a 5% em hardware moderno. Verifique antes de começar:

grep -o aes /proc/cpuinfo | head -1
cryptsetup benchmark

Se grep não retornar nada, a sua CPU não possui AES-NI e a encriptação ficará limitada pela CPU sob I/O intenso. cryptsetup benchmark mostra a taxa de transferência por algoritmo de encriptação, para que possa escolher o mais rápido que o seu hardware suporta. Confirme também que o cryptsetup está instalado e que o dm-crypt módulo do kernel está disponível. Ambos vêm por padrão no Ubuntu, Debian, RHEL e Arch.

Estrutura do disco

Duas partições permanecem sem encriptação: a partição do sistema EFI (512 MB FAT32) e /boot (1 a 2 GB, ext4 ou xfs). O GRUB precisa de ler ambas antes de poder solicitar a frase-passe. Tudo o resto fica dentro do contentor LUKS.

O layout recomendado é LVM dentro do LUKS: um contentor LUKS a conter um grupo de volumes LVM, com volumes lógicos para as partições raiz, swap e quaisquer partições de dados. Isto mantém os metadados do LVM encriptados e permite redimensionar ou criar instantâneos de volumes sem afetar a camada LUKS. O LUKS sobre LVM também funciona, mas expõe a estrutura do grupo de volumes.

PartiçãoTamanhoSistema de ficheirosCriptografado
Sistema EFI512 MB a 1 GBFAT32Não
/boot1 a 2 GBext4 / xfsNão
Contentor LUKSEspaço restanteLUKS2Sim
Raiz LVM20 a 100 GB+ext4 / xfsSim (dentro do LUKS)
LVM swapIgual à RAMswapSim (dentro do LUKS)

O ext4 é a opção padrão segura para o volume raiz. O xfs lida melhor com ficheiros grandes e gravações paralelas, o que é importante para servidores de multimédia, ML e bases de dados. Para SSDs e NVMe, adicione a discard opção em /etc/crypttab para ativar o TRIM. O TRIM revela quais os setores que estão em uso, o que constitui uma pequena fuga de informação. Na maioria das cargas de trabalho, vale a pena pelo benefício do nivelamento de desgaste. Se o seu modelo de ameaças incluir a análise forense do dispositivo, mantenha-o desativado.

Configurar o LUKS com o LVM

Identifique o disco de destino com lsblk e limpe quaisquer metadados existentes:

wipefs -a /dev/sdX

Opcionalmente, sobrescreva com dados aleatórios para que os blocos encriptados não sejam distinguíveis do espaço vazio:

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

Inicialize o contentor LUKS2. Utilize --sector-size 4096 para NVMe e SSDs modernos com setores físicos de 4K:

cryptsetup luksFormat --type luks2 --sector-size 4096 /dev/sdX
cryptsetup luksOpen /dev/sdX cryptdata

Faça uma cópia de segurança do cabeçalho imediatamente, antes de colocar quaisquer dados no disco:

cryptsetup luksHeaderBackup /dev/sdX --header-backup-file luks-header-backup.img

Crie o LVM sobre o contentor desbloqueado e, em seguida, formate os volumes lógicos:

pvcreate /dev/mapper/cryptdata
vgcreate vg_secure /dev/mapper/cryptdata
lvcreate -L 50G -n lv_root vg_secure
lvcreate -L 8G -n lv_swap vg_secure
 
mkfs.xfs /dev/vg_secure/lv_root
mkswap /dev/vg_secure/lv_swap

Adicione uma entrada ao /etc/crypttab usando o UUID, e não /dev/sdX, que pode mudar entre reinicializações. Obtenha-o com blkid /dev/sdX:

cryptdata UUID=<your-uuid> none luks,discard

Em seguida, monte através de /etc/fstab:

/dev/vg_secure/lv_root  /  xfs  defaults,noatime  0 1

Regenera o initramfs para que os ganchos de encriptação sejam carregados no arranque:

# Debian/Ubuntu
update-initramfs -u -k all
 
# RHEL/Fedora
dracut -f --regenerate-all

Reinicie, introduza a frase de passagem e confirme a configuração com cryptsetup status cryptdata e lsblk -f. Este último deve mostrar crypto_LUKS como o FSTYPE na partição encriptada.

Gestão de chaves e desbloqueio remoto

O LUKS2 suporta 32 slots de chave. Utilize pelo menos três desde o início: uma frase-passe de administrador, uma chave de recuperação armazenada offline (impressa e guardada em local seguro, ou numa pen USB encriptada num cofre) e um ficheiro de chave para o desbloqueio automático de volumes de dados secundários. Limite-se aos 95 caracteres ASCII imprimíveis, pois os caracteres não ASCII causam problemas de disposição do teclado no prompt de arranque que são irritantes de depurar. Altere a frase-passe de administrador sempre que alguém com acesso sair da equipa.

Visualize os slots ativos com cryptsetup luksDump /dev/sdX, adicione uma chave com cryptsetup luksAddKey, e revogue uma com cryptsetup luksKillSlot. Proteja todos os ficheiros de chave com permissões rigorosas:

chmod 0400 /etc/luks/keyfile.bin

Para servidores sem monitor em centros de dados remotos, o prompt da senha é um problema. Três formas de lidar com isso:

MétodoIdeal paraCompromisso
Dropbear no initramfsDesbloqueio manual via SSHAinda requer intervenção humana no reinício
Clevis + Tang (NBDE)Desbloqueio automático numa rede de confiançaO servidor tem de aceder ao servidor Tang para arrancar
TPM2 via systemd-cryptenrollAutomatização dependente do hardwareAs atualizações de firmware podem alterar os valores PCR e bloquear o acesso

O Dropbear executa um pequeno servidor SSH no initramfs. Inicia sessão via SSH após o arranque e introduz a frase-passe manualmente. O Clevis com Tang utiliza encriptação de disco ligada à rede: o servidor desbloqueia-se desde que consiga aceder a um servidor Tang na rede de confiança. O Tang não armazena a sua chave, fornece apenas metade de uma troca McCallum-Relyea. Utilize vários servidores Tang com o sss pin para que o desbloqueio continue a funcionar se um estiver offline. A ligação TPM 2.0 via systemd-cryptenroll vincula a chave ao PCR 7 (estado de Arranque Seguro), pelo que o servidor só se desbloqueia se o firmware e o gestor de arranque não tiverem sido adulterados. Mantenha sempre uma frase-passe como alternativa ao utilizar o TPM, porque as atualizações de firmware alteram os valores do PCR.

Reforço da segurança e prevenção de bloqueios

Utilize frases-passe com pelo menos 20 caracteres. Ative a encriptação autenticada com --integrity se luksFormat se o seu modelo de ameaças incluir a adulteração de dados, em vez de apenas a confidencialidade. Isto acarreta um custo de amplificação de gravação, por isso faça primeiro um teste de desempenho.

Não clone um contentor LUKS entre máquinas. A chave do volume é copiada com ele, pelo que alterar a frase-passe num host não protegerá o outro. Reformate cada disco individualmente.

Para um desmantelamento seguro, cryptsetup erase /dev/sdX limpa todas as entradas de chave em milésimos de segundo, tornando o disco irrecuperável sem destruição física. Isso por si só é um forte argumento para encriptar tudo por predefinição.

Modos de falha comuns:

SintomaCausa provávelSolução
O arranque fica bloqueado no prompt da frase de passagemIncompatibilidade do layout do tecladoAltere o layout ou utilize a chave de recuperação
«O dispositivo não é um dispositivo LUKS válido»Caminho do dispositivo incorretoVerifique lsblk se é uma partição ou o disco inteiro
Teclado não responde ao arrancarOrdem dos ganchos do InitramfsColocar keyboard antes encrypt em mkinitcpio.conf
O GRUB ignora o prompt da senhaGRUB_ENABLE_CRYPTODISK não definidoDefinir GRUB_ENABLE_CRYPTODISK=y em /etc/default/grub, reinstale o GRUB
"Falha ao encontrar o dispositivo raiz"Faltando lvm2 ou encrypt ganchosAdicione hooks e execute mkinitcpio -P

O modo de falha mais importante é a corrupção do cabeçalho. Se o cabeçalho LUKS se perder ou ficar corrompido, os dados desaparecem. Não há recuperação possível, a não ser restaurando a partir de uma cópia de segurança do cabeçalho. Guarde uma cópia num suporte separado, idealmente em dois locais, e nunca no próprio disco encriptado. Para volumes secundários não críticos, adicione nofail a /etc/crypttab para que uma montagem falhada não bloqueie o arranque.

Os servidores dedicados da FDC vêm equipados com hardware que suporta AES-NI e encriptação total do disco de fábrica. Configure um servidor dedicado quando estiver pronto para a implementação.

background image
O seu servidor está a travar o seu crescimento?

Cansado de implementações lentas ou limites de largura de banda? A FDC Servers oferece potência dedicada instantânea, alcance global e planos flexíveis criados para qualquer escala. Pronto para atualizar?

Desbloquear o desempenho agora

Blogue

Em destaque esta semana

Mais artigos
Controlo de tráfego Linux (tc): um guia prático

Controlo de tráfego Linux (tc): um guia prático

Controlar a largura de banda, dar prioridade ao tráfego e modelar a entrada e saída no Linux com o tc. Configuração funcional de HTB, IFB, DSCP e fq_codel para servidores reais.

12 min de leitura - 5 de junho de 2026

Porque é que é importante ter um VPS potente e ilimitado

7 min de leitura - 9 de maio de 2025

Mais artigos