OffshoreVps
Segurança19 out. 20269 min de leituraPor a equipe da OffshoreVps

Criptografe um VPS com LUKS: configuração e limites

Configure a criptografia de disco LUKS em um servidor alugado: um volume de dados criptografado, como funciona o desbloqueio remoto do disco raiz e um modelo de ameaças honesto.

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.

Janela de terminal em um VPS mostrando os comandos usados para criptografar um VPS com LUKS, começando com “sudo apt install -y cryptsetup”
O tipo de comandos que você executará no servidor neste guia.

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.

Os passos deste guia em ordem: 1. Decida contra o que você está se protegendo; 2. Opção 1: um volume de dados criptografado; 3. Opção 2: um contêiner baseado em arquivo; 4. Opção 3: o disco raiz com desbloqueio remoto; 5. Trate a chave corretamente
Os passos deste guia, em ordem.

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.