A criptografia de disco protege dados em repouso. Em um VPS, o host controla o hipervisor, então ela não impede que um provedor determinado leia a memória. O que ela faz bem é proteger contra backups perdidos, discos reciclados e armazenamento roubado ou apreendido. Saiba contra qual desses você está se defendendo antes de gastar tempo com isso.
Decida contra o que você está se protegendo
- Discos aposentados ou copiados: a criptografia ajuda muito.
- Snapshots vazados: a criptografia ajuda se a chave não estiver guardada junto com o snapshot.
- Um atacante ativo no sistema em execução: a criptografia não ajuda, porque o volume está desbloqueado.
- Um hipervisor malicioso: a criptografia não ajuda em um VPS. Um servidor dedicado com controle total do hardware é a opção mais forte.
Opção 1: um volume de dados criptografado
Este é o lugar mais seguro para começar. Anexe um segundo disco ou crie um arquivo de loop e guarde os dados sensíveis ali. O exemplo usa um dispositivo vazio chamado /dev/vdb. Confira duas vezes o nome do dispositivo, porque a formatação destrói o conteúdo.
sudo apt install -y cryptsetup
sudo cryptsetup luksFormat /dev/vdb
sudo cryptsetup open /dev/vdb secure
sudo mkfs.ext4 /dev/mapper/secure
sudo mkdir -p /srv/secure
sudo mount /dev/mapper/secure /srv/secure
Para fechá-lo novamente: sudo umount /srv/secure && sudo cryptsetup close secure.
Opção 2: um contêiner baseado em arquivo
Quando você não tem um disco sobrando, use um arquivo como contêiner.
sudo fallocate -l 20G /root/vault.img
sudo cryptsetup luksFormat /root/vault.img
sudo cryptsetup open /root/vault.img vault
sudo mkfs.ext4 /dev/mapper/vault
sudo mount /dev/mapper/vault /srv/vault
Opção 3: o disco raiz com desbloqueio remoto
Criptografar o disco raiz exige uma forma de digitar a senha na inicialização, antes de a rede estar ativa. A resposta usual é um pequeno servidor SSH (dropbear) dentro do initramfs. Isso depende de o seu provedor deixar você instalar uma imagem personalizada ou reinstalar com o seu próprio particionamento, então confira isso primeiro. Muitos painéis de VPS não permitem, e um erro pode deixar o servidor sem conseguir iniciar, por isso tenha uma opção de recuperação à mão.
Em resumo: instale com uma raiz criptografada, adicione o dropbear-initramfs, coloque a sua chave pública SSH em /etc/dropbear/initramfs/authorized_keys, regenere o initramfs, reinicie e desbloqueie por SSH com cryptroot-unlock.
Trate a chave corretamente
- Use uma senha longa e guarde-a em um gerenciador de senhas, não no servidor.
- Faça backup do cabeçalho LUKS:
sudo cryptsetup luksHeaderBackup /dev/vdb --header-backup-file header.img. Guarde-o offline. - Não faça o desbloqueio automático com um arquivo de chave guardado no mesmo disco. Isso anula o objetivo.
- Lembre-se de que desbloquear na inicialização significa que uma reinicialização exige a sua presença.
Combine a criptografia com backups criptografados sólidos e o básico do reforço de segurança em 15 minutos.