O que acontece quando eu uso 'dd' para sobrescrever o disco do Ubuntu?

9

O que aconteceria se eu usasse

sudo dd if=/dev/zero of=/dev/sda

de uma instalação do Ubuntu executada em /dev/sda ?

Eu tentei em uma VM, e aparece para limpar corretamente o disco. Será este o caso todas as vezes? Esta é uma maneira segura de "limpar" uma instalação do Ubuntu e todos os dados?

Minha pergunta é inspirada em:

  1. Como faço para desinstalar o Ubuntu de um computador?
  2. Como está 'rm -rf /' capaz de excluir todos os arquivos no sistema? .
por JonasCz 03.07.2016 / 09:30

5 respostas

17

Na verdade, o sistema de arquivos ainda está montado e algumas gravações são armazenadas em buffer, o que significa que ainda estão na RAM aguardando para serem gravadas no disco. Digamos que dd substitui corretamente tudo, e logo atrás os buffers estão sendo liberados e alguns dados potencialmente sensíveis estão sendo gravados de volta no disco. Então, não, isso não é uma maneira segura de limpar um disco.

Você pode evitar esse problema primeiro remontando em modo somente leitura o sistema de arquivos raiz e quaisquer outros sistemas de arquivos que estejam no disco (ou desmontando-os completamente, mas não será possível com o sistema de arquivos raiz) e então, nenhuma escrita mais deve ser permitida nos sistemas de arquivos (portanto, nenhum buffer para liberar), então seu comando deve estar seguro agora, mesmo que ainda seja uma má idéia em caso de pânico, porque leva muito tempo.

Se você quiser ter algum tipo de recurso de exclusão de pânico, sugiro criptografar seu disco com o LUKS (o instalador do Ubuntu pode fazer isso) e depois seguir minha resposta no Security Stack Exchange . Isso envolve limpar o cryptheader, que tem apenas 2MB de tamanho e leva menos de um segundo para sobrescrever. Em seguida, reinicie o sistema e as chaves de criptografia de disco desaparecerão da memória, sem nenhuma maneira de restaurá-las, uma vez que o próprio cryptheader também desapareceu.

    
por André Borie 03.07.2016 / 16:09
9

Eu sacrifiquei uma VM usando um uso um pouco mais avançado de dd emprestado e ligeiramente modificado das páginas do Arch Wiki .

Primeiro instale um bom medidor de progresso:

sudo apt-get install pv

E, em seguida, execute o comando 'aprimorado' dd

sudo openssl enc -aes-256-ctr -pass pass:"$(dd if=/dev/urandom bs=128 count=1 2>/dev/null \
| base64)" -nosalt </dev/zero \
| pv -bartpes "$(sudo blockdev --getsize64 /dev/sda)" \
| sudo dd bs=64K of=/dev/sda

Isso deixará o disco preenchido com o texto cifrado do AES. Um apagamento de disco completo e seguro? Provavelmente melhor que o seu próprio dd exemplo, mas nada é completamente seguro ou garantido ...

E você me deve uma VM:)

Referências:

por andrew.46 03.07.2016 / 11:49
6

Resposta curta: faz o que você quer e nada funciona. Usando dd , você está operando em um nível abaixo do sistema de arquivos, o que significa que qualquer restrição que se aplique lá não é mais relevante (isso não significa que o kernel não possa impedir que você faça isso - mas isso não acontece) . Algum conteúdo do sistema de arquivos já está na memória, por exemplo, o kernel e o programa dd , e alguns estarão no cache. Existe a possibilidade de que, se o sistema estiver no modo multiusuário, alguns arquivos podem ser gravados enquanto o dd estiver em andamento, supondo que eles realmente tenham mudado, e se você estiver sob pressão de memória, algumas páginas podem também get trocado (eles devem ser criptografados e, portanto, inutilizáveis após a reinicialização).

A maioria dos comandos que você emitiria após isso - incluindo reboot - não estaria no cache e, portanto, não funcionaria. Então, se você estiver no modo de usuário único, ele se sairá muito bem, se você estiver no modo multiusuário, ele apagará a grande maioria dos dados. Idealmente, você deve fazê-lo a partir de algum outro meio (mesmo parando no initrd, talvez) para que você possa ter certeza de onde todas as gravações estão vindo.

Se você quiser um apagamento seguro, isso não funcionará porque ainda haverá alguns vestígios dos dados originais restantes se você apenas zerar. Normalmente, você desejaria até três gravações aleatórias, o que significaria copiar de /dev/urandom em vez de /dev/zero - muito mais lento, mas mais seguro. Alguns podem sugerir que você use /dev/random , que é o dispositivo para dados aleatórios "puros" - não é pseudo-aleatório - mas, para isso, a chance de alguém conseguir quebrar a semente PRNG e mascarar os dados com sucesso é essencialmente insignificante. / p>

Se você é realmente paranóico, você precisa jogar o dispositivo de armazenamento em um forno para que ele se desmagnetize / descarregue.

    
por Jim Driscoll 03.07.2016 / 17:29
4

Será como na sua VM limpar o disco e inutilizar seu sistema.

No entanto, se você tiver um tipo de 'exclusão de pânico' em mente, dd pode não ser rápido o suficiente para isso e não tenho certeza se há comandos ou programas mais rápidos para isso.

    
por Videonauth 03.07.2016 / 09:35
1

Deve funcionar, o processo em execução é mantido no Ram e não precisa do disco. Eu usaria um sistema ao vivo a partir de cd ou usb de qualquer maneira. Existe ainda o dban, um live linux especializado para limpeza de disco.

Sobrescrever seu disco com zeros é salvar, mas se você for paranóico o suficiente ou tiver regras legais, poderá sobrescrever dados aleatórios várias vezes.

Tenha cuidado ao usar a sobreposição de ssd não garante a exclusão de todos os dados devido ao desgaste.

Se você usar criptografia completa de disco (luks) você não precisa excluir o disco inteiro, basta excluir o cabeçalho luks.

    
por Uwe Burger 03.07.2016 / 22:16