BitVPS
Criptografia de disco completo em um VPS: LUKS, desbloqueio remoto e o que uma apreensão realmente recupera
Passo a passo de hardening

Criptografia de disco completo em um VPS: LUKS, desbloqueio remoto e o que uma apreensão realmente recupera

"Criptografe o disco e o servidor está seguro" é o formato de quase toda resposta sobre esse assunto, e está errado de um jeito que importa. A criptografia de disco completo em uma máquina alugada defende contra um evento específico — alguém lendo o armazenamento enquanto a máquina está desligada. Contra uma máquina em execução, ela faz muito pouco, porque a chave que desbloqueia o volume está na RAM desde o boot. Este guia mostra onde fica essa linha, como configurar a criptografia corretamente mesmo assim, e o que é realmente recuperável de um disco do qual foi feita uma imagem.

Nunca KYC DMCA ignorado Sem logs de tráfego Ativo em 60 segundos

O que criptografar um disco alugado realmente te dá

Um servidor tem dois estados, e a criptografia de disco só tem opinião sobre um deles. Desligado, o volume é texto cifrado: o armazenamento contém bytes indistinguíveis de ruído sem a chave. Em execução, o volume está montado, o que significa que a chave mestra foi derivada, carregada na memória do kernel e deixada lá enquanto a máquina estiver ligada. Todo arquivo que o sistema operacional consegue ler, ele consegue ler porque essa chave está residente. A criptografia não parou de funcionar — ela está simplesmente fazendo exatamente o que foi pedido para fazer.

Essa é uma garantia mais restrita do que o marketing sugere, e ainda assim vale a pena ter, porque os eventos que ela cobre são os que realmente acontecem. Um drive é desativado e revendido. Um NVMe com defeito volta para o fabricante em RMA com seus dados dentro. Um nó é desligado e seus discos são copiados. Um arquivo de backup sai do prédio em uma mídia que ninguém criptografou. Alguém com acesso físico a um rack leva para casa a coisa errada. Isso não tem nada de glamouroso e é a esmagadora maioria das exposições do mundo real — muito mais comum do que a batida em uma máquina em funcionamento que todo mundo imagina.

CenárioEstado da máquinaO LUKS ajuda?O que fica exposto
Drive desativado, revendido ou em RMADesligadaSim, completamenteTexto cifrado e o cabeçalho LUKS
Nó desligado, discos copiadosDesligadaSimTexto cifrado, layout de partições, /boot em texto plano
Arquivo de backup copiado para fora do localn/aSó se o próprio arquivo estiver criptografadoO que quer que o arquivo contenha, em texto plano
Aquisição ao vivo de uma instância em execuçãoEm execuçãoPraticamente nãoTudo — a chave está na RAM
Comprometimento do sistema em execuçãoEm execuçãoNãoTudo o que o volume montado expõe

O hypervisor está dentro do seu modelo de ameaça, e a criptografia não o remove

Em um VPS, o seu kernel é um convidado. Quem opera o hypervisor tem acesso à memória desse convidado da mesma forma que você tem acesso ao conteúdo de um arquivo, e não existe nenhuma etapa criptográfica no meio do caminho. virsh dump grava a RAM de um domínio em execução em um arquivo como uma operação de rotina; a migração ao vivo copia essa mesma memória pela rede por design, porque é exatamente isso que a migração é. Uma chave mestra do LUKS que vive na memória do convidado está dentro de tudo isso.

Então a frase honesta é esta: a criptografia de disco completo em um VPS protege seus dados de todo mundo, exceto de quem opera o hypervisor — e até dessa parte também, mas só enquanto a máquina está desligada. Qualquer hospedagem que afirme que criptografar o disco do seu convidado torna seus dados ilegíveis para ela em uma instância em execução está descrevendo uma máquina que não existe. Preferimos deixar isso escrito do que deixar você inferir algo mais confortável.

Se o provedor genuinamente faz parte do seu modelo de ameaça, a resposta não é uma cifra mais forte. É remover o hypervisor: um servidor dedicado roda o seu kernel direto no metal, então ler a memória dele exige ter a máquina fisicamente em mãos e montar um ataque estilo DMA ou cold-boot contra a RAM — lento, barulhento, e exigindo um nível de acesso que uma solicitação de rotina não concede. O guia VPS versus dedicado cobre onde essa troca também se paga por outros motivos. Extensões de computação confidencial como AMD SEV-SNP e Intel TDX visam exatamente essa lacuna, mas hoje não são commodity em VPS alugados, e elas transferem a confiança para o fabricante da CPU em vez de eliminá-la.

Três formas de rodar isso, e o que cada uma custa para você

Na prática existem três formatos, e eles trocam segurança por quanto seus reboots vão doer. Uma raiz criptografada desbloqueada pelo console é a mais forte e a mais chata: nada sobrevive a um reboot sem um humano. Uma raiz criptografada com um servidor SSH no initramfs tem a mesma segurança com desbloqueio remoto, e é o que a maioria das pessoas deveria montar. Um volume de dados criptografado sobre uma raiz em texto plano é a opção fácil, e a que decepciona silenciosamente.

Decepciona porque uma raiz em texto plano coleta seus segredos, você querendo ou não. O journal do systemd escreve lá. Assim como o histórico do shell, o cache de pacotes, os core dumps, o /tmp, o data root padrão do Docker e — o que pega quase todo mundo — o swap, que é para onde vai a memória de um processo quando a máquina está sob pressão. Criptografar o /var/lib/mysql enquanto o swap fica descriptografado ao lado não é uma defesa parcial, é uma defesa completa com um buraco no meio.

ConfiguraçãoDesbloqueioSobrevive a um reboot sem supervisãoVeredito honesto
Raiz criptografada, desbloqueio pelo consoleKVM-over-VNC ou IPMINão — fica fora do ar até um humano desbloquearA mais forte; ótima para uma máquina que você reinicia raramente
Raiz criptografada, dropbear no initramfsSSH para a porta de desbloqueioNão — mas você pode desbloquear de qualquer lugarO padrão sensato
Volume de dados criptografado, raiz em texto planoScript ou manual após o bootSimFraca a menos que swap, logs e temporários sejam tratados
Raiz criptografada, arquivo de chave no /boot em texto planoAutomáticoSimDefende contra um drive revendido e nada além disso

Instalando uma raiz criptografada, passo a passo

1. Inicie um instalador, não um template. Uma imagem pré-pronta não pode te dar uma raiz criptografada, porque o disco foi escrito antes de você existir como cliente. Todo plano BitVPS suporta rebuild a partir de ISO, upload de ISO personalizada e netboot, e todo plano inclui um console de emergência KVM-over-VNC — que é a parte que importa, porque você precisa acompanhar um instalador que vai fazer perguntas. Servidores dedicados expõem a mesma capacidade por meio de um endpoint IPMI protegido por VPN, com montagem de ISO e acesso à BIOS.

2. Particione com uma pequena área de boot em texto plano. Uma partição pequena para o /boot ou a partição de sistema EFI, e tudo o mais em um único container LUKS. O bootloader e o initramfs precisam ser legíveis antes que qualquer chave exista, então essa partição continua legível para quem quer que copie o disco. Projete em torno disso em vez de fingir que é diferente.

3. Crie o container. cryptsetup luksFormat --type luks2 --pbkdf argon2id /dev/vda2. LUKS2 com argon2id é todo o ponto da coisa: argon2id é memory-hard, especificado na RFC 9106, e torna um ataque de força bruta offline caro em hardware, em vez de apenas lento em software — a diferença entre uma fazenda de GPUs mastigando sua passphrase e uma fazenda de GPUs que não vale a pena apontar para isso. Mantenha o custo de memória dentro do que a máquina consegue alocar durante o boot inicial; em uma instância de 4 GB, um custo ajustado no seu laptop de 64 GB simplesmente vai falhar ao desbloquear.

4. Abra e instale. cryptsetup open /dev/vda2 cryptroot, depois LVM ou um sistema de arquivos diretamente em /dev/mapper/cryptroot, depois rode o instalador da distribuição apontado para isso, com /boot na partição em texto plano. Debian, Ubuntu, Alpine, Arch, Rocky, Fedora e FreeBSD lidam com isso; as páginas de dm-crypt da wiki do Arch são a referência mais completa, independentemente de qual distribuição você realmente roda.

5. Coloque um servidor SSH no initramfs. Instale o dropbear-initramfs, coloque sua chave pública em /etc/dropbear/initramfs/authorized_keys, e adicione um parâmetro ip= na linha de comando do kernel para que a interface suba antes do prompt de passphrase. Pule esse parâmetro e você terá construído uma máquina que inicializa até um prompt que ninguém consegue alcançar.

6. Reconstrua e reinicie. update-initramfs -u incorpora o servidor, sua chave e as configurações de rede na imagem que o bootloader carrega. Depois reinicie com o console aberto, porque a primeira tentativa é a que dá errado.

7. Desbloqueie e confirme a transição. Conecte via SSH na porta de desbloqueio e rode cryptroot-unlock. O initramfs apresenta uma host key diferente da do sistema instalado, então seu cliente vai avisar em voz alta na primeira conexão — isso é comportamento correto e um sinal útil, não um obstáculo: fixe essa fingerprint como sua própria entrada em known_hosts em vez de desligar a verificação de host key. A sessão cair é como você sabe que o sistema real assumiu.

Desbloqueio remoto, e a pergunta das 04h que ninguém faz primeiro

Rode o servidor SSH do initramfs em sua própria porta — 2222 é o convencional — para que as duas host keys nunca colidam na mesma entrada de known_hosts. Prefira um ip= estático em vez de DHCP: o initramfs é um ambiente mínimo, e um round trip de DHCP que falha te deixa com uma máquina que está ligada, inalcançável e travada em um prompt. Se você depende de IPv6, verifique se o seu initramfs realmente o configura; várias distribuições ainda sobem apenas v4 nesse estágio.

Mantenha o console como alternativa mesmo depois que o desbloqueio via SSH funcionar. A falha que você eventualmente vai encontrar não é criptográfica, é uma atualização de kernel que reconstruiu o initramfs sem a sua chave, ou um parâmetro de rede que mudou debaixo de você — e nesse momento a única rota de entrada é o console KVM-over-VNC que veio com o plano. Ter os dois não é redundância, é a diferença entre um inconveniente e uma reconstrução do zero.

Depois vem a questão operacional, que é a que você precisa resolver antes de construir qualquer coisa disso: uma raiz criptografada significa que um reboot sem supervisão deixa o seu serviço fora do ar até que um humano o desbloqueie. Manutenção de nó, um kernel panic, um evento de energia — a máquina volta para um prompt, não para a sua aplicação. Se isso for inaceitável para a carga de trabalho, não maquie o problema com um arquivo de chave na partição de boot em texto plano. Isso é uma fechadura com a chave colada na porta, e defende contra um drive revendido e nada além disso. Escolha isso deliberadamente se quiser, mas escreva no seu próprio runbook que foi essa a escolha que você fez.

Tudo o que vaza ao redor do volume criptografado

O volume raramente é onde as coisas dão errado. O que dá errado é o material que nunca chegou a entrar nele.

VazamentoPor que aconteceCorreção
SwapA memória do processo — incluindo chaves — transborda para o disco sob pressãoSwap dentro do container, ou um dispositivo de swap com chave aleatória, ou nenhum swap
Imagem de hibernaçãoUm dump completo da RAM gravado no disco por designDesative isso em um servidor; não tem razão de estar lá
/boot e initramfs em texto planoPrecisam ser legíveis antes que qualquer chave existaAceite isso, e trate qualquer modificação como um comprometimento — verifique, ou use Secure Boot onde estiver disponível
Journal escrito antes da montagemLogs do boot inicial caem na partição em texto planoVerifique onde o seu journal realmente vive antes de o volume abrir
Data root do DockerUsa /var/lib/docker por padrão, fora de um volume de dados anexado à parteMova para dentro, ou criptografe a raiz em vez disso
Monitoramento e logs fora da máquinaAgentes enviam o conteúdo de arquivos para terceiros em texto planoAudite o que o agente envia antes de confiar no volume

Uma propriedade que precisa ficar clara, porque é regularmente vendida além da conta: um cabeçalho LUKS se anuncia sozinho. Qualquer um que copie o disco vê que existe um container criptografado presente, qual cifra ele usa, os parâmetros do KDF e quantos slots de chave estão ocupados. O LUKS te dá confidencialidade, não negação plausível, e construir um plano que depende de ninguém notar o container é construir sobre areia.

Passphrases, arquivos de chave e cabeçalhos destacados

A passphrase é o sistema inteiro. O argon2id torna cada tentativa cara, mas caro multiplicado por um keyspace pequeno ainda é barato: cinco ou seis palavras de uma lista diceware superam uma senha de onze caracteres com substituições, por uma margem que nem é próxima. Ajuste o custo com --iter-time contra a máquina que realmente vai desbloquear o volume, não a que você está usando para digitar, e nunca reutilize uma passphrase que já chegou perto de uma conta com KYC.

Um arquivo de chave elimina a digitação e move o problema: cryptsetup luksAddKey adiciona um a um slot livre, e a única versão que vale a pena ter é a que nunca fica no servidor — guardada na sua própria máquina ou em um token de hardware e entregue ao desbloqueio durante a sessão SSH. Um cabeçalho destacado (--header) vai além: o dispositivo de dados fica indistinguível de bytes aleatórios porque os metadados vivem em outro lugar. O lado ruim disso é implacável. Perca o cabeçalho e o volume desaparece, permanentemente, sem nenhum tipo de recurso — então leve o cryptsetup luksHeaderBackup a sério e guarde esse backup em algum lugar que também esteja criptografado. A FAQ do cryptsetup oficial e a documentação do dm-crypt do kernel são as duas referências que vale a pena ler antes de você se comprometer com um layout.

E uma regra sem exceções: a passphrase nunca entra em um ticket de suporte. Nem o nosso, nem o de ninguém. Nada do que fazemos exige isso, nenhuma operação que podemos realizar em seu nome precisa disso, e um ticket é um registro escrito em um banco de dados. Se uma hospedagem algum dia pedir isso a você, ali termina a conversa.

O que a imagem de um disco realmente revela

Vamos ao caso desligado de forma concreta, porque vagueza aqui não ajuda ninguém. Um investigador com uma imagem do seu disco tem: o texto cifrado, o cabeçalho LUKS com sua cifra, parâmetros do KDF e contagem de slots, a tabela de partições, os tamanhos de tudo, e a partição de boot inteira em texto plano — seu kernel, seu initramfs e os timestamps de modificação de cada arquivo nela. Esse último item é mais informativo do que as pessoas esperam. Os horários de instalação de pacotes esboçam uma linha do tempo, e um initramfs contendo uma chave do dropbear diz algo sobre como a máquina foi administrada.

O que ele não tem é o conteúdo. Contra um container LUKS2 moderno com argon2id e uma passphrase de verdade, o ataque offline não é uma questão de esperar mais tempo — simplesmente não está na mesa. Essa é toda a proposta de valor, e é uma boa proposta.

O caso em execução é o oposto, e é curto: tudo. Não porque a criptografia falhou, mas porque a chave está residente, que é justamente a condição que faz um sistema de arquivos montado funcionar.

Os snapshots ficam no meio do caminho e surpreendem as pessoas. Nossos snapshots por hora com retenção de 7 dias são em nível de bloco, então um volume criptografado gera snapshots como texto cifrado — bom, e a consequência morde: esse snapshot também não é uma cópia que você consegue ler sem a passphrase. Perca a chave e os snapshots ficam exatamente tão irrecuperáveis quanto o original. Planeje um caminho de restauração que inclua a passphrase, ou você construiu sete dias de ruído muito confiável. O que guardamos sobre você fora do volume está escrito na política de privacidade, e publicamos semanalmente um warrant canary assinado com PGP como evidência permanente, não como promessa.

As partes que decidem o resultado não são criptográficas

Ninguém perdeu dados porque o AES-256-XTS falhou. As pessoas perdem dados porque a passphrase foi reutilizada de uma conta de exchange que tinha o passaporte delas cadastrado, porque o arquivo de chave foi deixado na partição de boot em texto plano para deixar os reboots tranquilos, porque o backup fora do local era um tarball puro, porque a passphrase está no histórico do shell do laptop delas, ou porque um agente de monitoramento estava enviando o conteúdo de arquivos para um SaaS o tempo todo.

E o silencioso: um servidor que nunca é desligado passa a vida inteira no estado em que nada disso ajuda. Uma instância com 400 dias de uptime está descriptografada há 400 dias. Se o dado é genuinamente frio — um arquivo morto, um backup de chave, registros que você consulta duas vezes por ano — mantenha-o em um container que você abre quando precisa e fecha com cryptsetup close quando termina. Dez segundos digitando convertem uma exposição permanente em uma momentânea, e essa conversão vale mais do que qualquer parâmetro que você possa passar para o luksFormat.

Já que está nisso, alinhe a jurisdição ao mesmo raciocínio. A criptografia decide o que é legível; onde a máquina está fisicamente decide quem tem o direito de pedir, e por quais alianças o pedido passa. As duas coisas não são substitutas uma da outra, e quem acerta nisso trata as duas como uma única decisão.

O que nós fornecemos, e o que não podemos fornecer

Todo plano a partir do Starter de $8.50 já vem com o que uma raiz criptografada realmente exige: virtualização KVM com root completo, a capacidade de dar boot em ISOs personalizadas e netboot, rebuild a partir de ISO pelo painel, carregamento de módulos de kernel, e um console de emergência KVM-over-VNC para o momento em que o initramfs não volta. Os níveis dedicados adicionam um endpoint IPMI protegido por VPN, com console, power cycle, montagem de ISO e acesso à BIOS. Nada na criptografia é um produto que vendemos a você — é algo que você constrói, e o nosso trabalho é não atrapalhar.

O que não podemos fazer é mais útil de declarar. Em um VPS em execução, o hypervisor consegue ler a memória do convidado; isso é arquitetura, não uma configuração de política, e nenhuma criptografia que você instale dentro do convidado muda isso. O que oferecemos contra isso não é matemática, mas postura e evidência: sem netflow, sem PCAP, sem espelhamento de NIC, IPs de sessão do painel apagados em 24 horas, sem KYC no cadastro para que a conta não seja uma alavanca, pagamento só em cripto para que o rastro de faturamento também não seja uma, e um canary semanal assinado com PGP que você mesmo pode conferir. Só o hardware dedicado remove o hypervisor da equação, e só desligar a máquina remove a RAM dela.

Se isso soa como um argumento contra o nosso próprio VPS em certos modelos de ameaça, é porque é mesmo. Preferimos vender a você a coisa certa duas vezes do que a coisa errada uma vez. Faça o deploy de uma instância com uma ISO e teste a instalação em um Starter por um mês; se a resposta acabar sendo metal, os níveis dedicados começam em $39.50 e levam de duas a quatro horas para provisionar, em vez de 41 segundos.

Respostas rápidas

Perguntas frequentes

A criptografia de disco completo me protege se o datacenter for alvo de uma batida policial?
Depende inteiramente de a máquina estar em execução naquele momento, e normalmente está. Um volume criptografado desligado é texto cifrado e continua assim. Uma instância em execução tem a chave mestra na RAM, e em um VPS o hypervisor consegue ler essa memória — então a resposta honesta para o cenário que a maioria das pessoas está imaginando é não. A criptografia é uma defesa forte contra discos que saem do prédio e uma defesa fraca contra máquinas apreendidas enquanto ligadas.
A BitVPS consegue ler o conteúdo do meu volume criptografado?
Enquanto a instância está em execução, a chave mestra está na memória do convidado, e o hypervisor consegue ler a memória do convidado — então, tecnicamente, sim, e qualquer provedor que diga o contrário sobre um VPS em execução está errado. Nós não lemos, não guardamos netflow, PCAP nem espelhamento de NIC, e publicamos um canary semanal assinado com PGP em vez de pedir que você acredite na palavra. Mas isso é política e evidência, não matemática. Se você precisa da matemática, o volume tem que estar fechado, ou o hypervisor tem que não existir — o que significa hardware dedicado.
Como eu desbloqueio o disco depois de um reboot sem usar o console?
Coloque um servidor SSH no initramfs. O dropbear-initramfs com sua chave pública em /etc/dropbear/initramfs/authorized_keys e um parâmetro ip= na linha de comando do kernel te dão um prompt que você pode acessar de qualquer lugar; o cryptroot-unlock abre o volume e passa o controle para o sistema real. Rode isso em uma porta separada, e espere um aviso de host key na primeira conexão, porque o initramfs tem sua própria chave. Mantenha o console KVM-over-VNC como alternativa para o dia em que uma atualização reconstruir o initramfs sem a sua chave.
O LUKS deixa o servidor mais lento?
Não o suficiente para você notar no hardware que rodamos. Toda CPU da nossa frota tem AES-NI, e o dm-crypt com aceleração de hardware custa uma porcentagem baixa, de um único dígito, para cargas de trabalho típicas de web, e-mail, banco de dados e nó. O lugar onde isso se torna mensurável é em trabalho sustentado de alto IOPS em NVMe rápido, onde a criptografia por requisição adiciona latência que aparece na cauda da distribuição, não na média. Se você está rodando algo que satura um NVMe Gen4, faça o benchmark; para todo o resto, o overhead é ruído.
Eu devo criptografar a raiz inteira, ou só um volume de dados?
A raiz, a menos que você tenha um motivo específico para não fazer isso. Uma configuração só com volume de dados parece organizada, mas vaza pelo swap, pelo journal do systemd, pelo /tmp, pelo cache de pacotes, pelos core dumps e pelo data root padrão do Docker — o material interessante acaba do lado em texto plano por acidente, não por decisão. Criptografe a raiz e a pergunta para de precisar de resposta a cada novo serviço que você instala.
O que acontece com os meus snapshots por hora se o volume estiver criptografado?
Eles são feitos em nível de bloco, então capturam texto cifrado — que é o que você quer, e isso corta dos dois lados. O snapshot não pode ser lido por ninguém sem a passphrase, incluindo você. Restaurar significa restaurar o volume criptografado e depois desbloqueá-lo exatamente como você faria com o original, então a passphrase precisa sobreviver a qualquer evento que te fez recorrer ao snapshot. Uma chave que existe só no servidor que você acabou de perder não é uma chave.
Posso usar um cabeçalho LUKS destacado ou manter a chave fora do servidor?
As duas coisas, e as duas são boas ideias. O cryptsetup luksAddKey adiciona um arquivo de chave a um slot livre, para que você possa mantê-lo na sua própria máquina ou em um token de hardware e entregá-lo à sessão de desbloqueio. Um cabeçalho destacado via --header vai além e deixa o dispositivo de dados parecendo bytes aleatórios. O custo é que perder o cabeçalho destrói o volume permanentemente — faça o luksHeaderBackup antes de precisar dele e guarde esse backup em algum lugar que também esteja criptografado.
Um servidor dedicado é significativamente melhor que um VPS para isso?
Sim, e é o único upgrade que muda a resposta em vez de só mudar as chances. Em hardware dedicado não existe hypervisor entre o seu kernel e a CPU, então ler a sua memória exige posse física da máquina e um ataque estilo DMA ou cold-boot — lento, barulhento, e uma barreira bem mais alta do que uma operação de rotina. Todo o resto da configuração é idêntico, e o IPMI com montagem de ISO torna a instalação mais fácil do que em um VPS. Os níveis começam em $39.50.
Aplicar isto

Cargas de trabalho abordadas neste guia

Cada card abre uma página específica por carga de trabalho com recomendações de dimensionamento e FAQ de sysadmin.

Leu o suficiente? Implantar em 60 segundos

Sem verificação de e-mail, sem ID, sem conta. Escolha um plano, pague em qualquer criptomoeda, receba o root.