Eu preciso apagar discos rígidos com segurança de tempos em tempos e usei uma variedade de ferramentas para fazer isso:
cat /dev/zero > /dev/disk
cat /dev/urandom > /dev/disk
shred
badblocks -w
- DBAN
Todos eles têm em comum o fato de levarem séculos para serem executados.
Em um caso cat /dev/urandom > /dev/disk
matou o disco, aparentemente superaquecendo-o.
Existe uma abordagem "boa o suficiente" para conseguir que quaisquer dados no disco sejam inutilizados em tempo hábil? Sobrescrever superblocos e alguns blocos estrategicamente importantes ou algo assim?
Os discos (tanto giratórios quanto ssd) vêm de computadores doados e serão usados para instalar Linux-Desktops neles posteriormente, entregues a pessoas que não podem comprar um computador, mas precisam de um.
Os discos dos computadores doados geralmente não foram criptografados. E às vezes os doadores nem pensam em excluir os arquivos antes.
Atualização :
Das respostas que chegaram até agora, parece que não há atalhos. Minha melhor aposta é provavelmente configurar um computador de laboratório para apagar vários discos de uma só vez. Mais um motivo para pedir doações a grandes empresas :-)
Obrigado a todos!
Sobrescrever o superblock ou a tabela de partição apenas torna inconveniente reconstruir os dados, que obviamente ainda estão lá se você apenas fizer um dump hexadecimal.
Os discos rígidos têm um recurso de apagamento integrado: ATA Secure Erase , que você pode ativar usando
hdparm
:Escolha uma senha (qualquer senha):
hdparm --user-master u --security-set-pass hunter1 /dev/sdX
Iniciar apagamento:
hdparm --user-master u --security-erase hunter1 /dev/sdX
Como esse é um recurso integrado, é improvável que você encontre um método mais rápido que realmente ofereça um apagamento real. (Cabe a você, no entanto, determinar se ele atende ao seu nível de paranóia.)
Como alternativa, use o disco com criptografia de disco completo e jogue fora a chave quando quiser descartar os dados.
Resposta potencialmente impopular: Aguente o tempo para limpar completamente os discos com segurança.
Você aceitou doação de hardware de várias fontes e fez promessas de que seus dados serão apagados com segurança. Então você tem que fazer o que prometeu e apagar os discos com segurança.
Se eu fosse um doador e descobrisse que você não estava cumprindo suas promessas, não lhe daria mais hardware no futuro.
E não reduza o tempo de execução do DBAN pensando que limpar a primeira metade ou os primeiros 10% é suficiente, quando não é.
Para tornar suas execuções de DBAN mais convenientes, você geralmente remove unidades de hosts? Nesse caso, tenha um desktop de baixo consumo de energia com várias portas SATA. Quando você tiver algumas unidades prontas para limpeza, configure-as todas nesta máquina e limpe-as com um DBAN ISO inicializável ou uma sessão DBAN de inicialização por rede. Em seguida, deixe a máquina funcionando até que a última esteja concluída.
Você pode usar um dock de disco SATA-USB, mas eles tendem a ser muito lentos em comparação com as conexões SATA nativas.
Segundo, você tem um fluxo de trabalho para armazenar doações e depois processá-las? Ou você aceita o hardware, testa, limpa e guarda os itens para uso? Eu sugiro que você crie um pipeline que funcione para você e faça do DBAN um estágio nesse pipeline. Então, quando você retira uma máquina da loja, ela já está limpa e em boas condições.
dd
com grandes blocos pode ser mais rápido quecat
:Matar um disco no processo é bom, provavelmente foi marginal de qualquer maneira.
Se você criptografar com LUKS, isso pode ser feito após a configuração da criptografia (torna mais difícil identificar o espaço usado/não usado no disco).
Você não pode evitar a E/S, a 50 MB/s (que é uma boa velocidade para discos antigos), 250 GB levam 5.000 segundos (cerca de 1,5 horas) para gravar. A única questão é o quão perto disso você pode chegar.
blkdiscard - descarta setores em um dispositivo
Eu não tentei isso, mas de uma leitura rápida, você pode tentar blkdiscard .
Isso apenas enviará comandos simples para a unidade e deve ser muito rápido, mas não encontrei nenhuma garantia de que os dados nos blocos serão apagados. Existem algumas dicas embora.
Obviamente, eu não confiaria nisso para negócios sérios, mas como sua exigência é "boa o suficiente", pode ser uma opção viável. Presumivelmente, também funciona em SSDs, o que pode ser um obstáculo mais sério se você estiver lidando com computadores antigos doados.
Do ponto de vista da segurança (paranóico), provavelmente não é possível.
Existe um cenário em que você pode reescrever apenas uma pequena parte do disco, e a maioria das pessoas considerará salvá-lo. Se uma unidade foi criptografada substituindo o cabeçalho de criptografia (um local onde a chave de criptografia é armazenada) deve impossibilitar a recuperação.
Mas há outro problema - o SSD pode potencialmente manter os dados do cabeçalho (os dados aleatórios que foram usados para sobrescrever o cabeçalho podem ser salvos em outras células).
A maioria das empresas que se preocupam com a segurança de dados já criptografa suas unidades, não (deveria) fornecer chaves de criptografia de unidade, portanto, os dados da unidade já são efetivamente 'apagados' de qualquer maneira.
O apagamento paralelo resolveria o maior problema de velocidade. A velocidade de E/S SATA não é o seu gargalo, a velocidade de gravação física do HDD é o limite. As placas-mãe modernas têm pelo menos 4-8 conexões de unidade SATA. Configure um (ou mais) computador(es) de laboratório para inicializar a partir do SSD (rápido). Conecte 4-6 unidades a serem apagadas e, em seguida, use o método preferido para apagar das abordagens fornecidas.
Suponha que você tenha 4 drives (b,c,d,e)... então um script simples apagaria todos os drives em paralelo. E os computadores do laboratório permitem que você registre os apagamentos da unidade.
Embora, eu executasse cada apagamento de unidade em um terminal separado, para poder observar erros em unidades específicas. Unidades com mais de alguns erros devem ser substituídas. As informações SMART das unidades lhe darão uma ideia da idade da unidade.
Se você tiver de 2 a 4 computadores de laboratório configurados, o desafio seria manter unidades suficientes carregadas nos computadores de laboratório para mantê-los ocupados apagando unidades. Suponha que você tenha 5 unidades por computador de laboratório X 3 computadores de laboratório = 15 unidades sendo apagadas em paralelo. Você está terminando um lote a cada 30 (ish) minutos
Todas as apostas estão desativadas com SSD, elas funcionam de maneira diferente. A maioria tem uma velocidade de gravação muito mais rápida. E nenhuma das opções acima apaga setores que foram mapeados fora de uso pela detecção de blocos defeituosos (alguns dados podem não ser apagados de qualquer maneira).
Vários estudos foram feitos, notadamente um grande estudo do Google, que descobriu que após os primeiros dois anos, a probabilidade de falha do disco rígido atingiu 5-6% (por ano) e aumentou significativamente nos anos seguintes. Qualquer disco com mais de 5 anos tem uma probabilidade de falha substancial. Considere apenas aposentar (destruir, reciclar) discos rígidos com mais de cinco anos.
Meu conselho seria apenas manter as unidades com três ou menos anos de idade, ou substituir todas as unidades e aposentar (destruir ou reciclar).
Desafio do quadro:
Pare de desmontar os PCs
Já desmontei muitos PCs na minha vida. Você está reclamando do tempo, mas está perdendo tempo desmontando PCs para geração de imagens - cada PC precisa ser testado duas vezes e depois testado novamente.
E seu período de queima é chá fraco. Você está montando o sistema apenas o tempo suficiente para configurar e testar sua unidade recém-imagerada. Portanto, você enviará PCs defeituosos para os clientes (muitos são fornecidos a você por um motivo ; falhas mesquinhas, por exemplo, problemas térmicos são uma delas).
Mude sua linha de montagem. Coloque o PC em rack, conecte um KVM e use o PC para limpar o PC . Isso também lhe dará um prático burn-in de "executou por algum tempo"; e se você usar /dev/urandom uma CPU robusta/queima térmica também.
Você pode inicializar no ambiente Windows e excluir todos, exceto os arquivos e aplicativos do sistema, ou inicializar a partir de um CD ou, se o sistema for capaz, inicializar a partir de um pendrive. Ou você pode criar uma imagem do sistema primeiro e limpar o espaço livre após a instalação da nova imagem.
Se estiver executando nativamente no sistema operacional legado, não há necessidade de excluir e limpar arquivos e aplicativos do sistema Windows, por exemplo, World of Warcraft tem 40 GB de dados que não precisam ser limpos com segurança. Assim
\Windows
,\Program Files
e outros diretórios do sistema podem ser excluídos da limpeza de segurança. (Se eles colocam dados lá, eles não podem esperar uma limpeza segura deles). Existe uma versão altamente portátil do perl 4 que facilitaria o trabalho com isso, e o perl 4 é poderoso o suficiente para esse tipo de coisa.Se eu estivesse usando o sistema operacional nativo, faria isso em 2 etapas: primeiro exclua todos os arquivos que não são do sistema e não do aplicativo; em seguida, preencha o disco com zeros (ou cópias de um arquivo de sistema se você estiver preocupado com a análise forense de disco da camada CIA).
Ou limpe-o por último , após a imagem
Mesma coisa; ainda usar o próprio PC para a imagem, por exemplo, inicializando a partir de um CD e puxando a imagem pela ethernet ou qualquer outra coisa.
Agora, construa a imagem com uma ação na primeira inicialização, na qual ela limpa o espaço livre e se desativa.
Todos os dados são substituídos por a) os arquivos da nova imagem ou b) sua substituição de espaço livre.
Se você quiser que esta função seja "capaz de check-point", ou seja, não tenha que recomeçar após uma falha de energia, então simplesmente escreva arquivos imensos com nomes aleatórios em /tmp/ até que o disco esteja cheio. Ao confirmar que o disco está cheio, faça com que ele remova os arquivos /tmp/ e, em seguida, remova a si mesmo.
Quando o disco estiver 100% ocupado com novos dados, os dados antigos devem ter sido substituídos.
Mesmo em um dispositivo em que o sistema de arquivos foi descartado, muitas vezes é possível recuperar, digamos, imagens JPG apenas lendo o dispositivo.
Para tornar isso mais difícil, talvez você possa substituir todos os inícios de arquivos com dados.
Algo como:
Se houver apenas alguns arquivos, isso seria mais rápido do que substituir a unidade completa.
/dev/zero é rápido, /dev/urandom é lento e pesado em CPU.
Ambos são melhor usados com dd usando um bloco grande (bs=1M) do que com cat. cat não entende de blocos, ele move um caractere de cada vez, usando muitos ciclos de CPU.
O shred é a ferramenta otimizada para esse fim, fazendo basicamente o que o dd faz de forma organizada. Ele usa menos dados "aleatórios" (em comparação com obter tudo de /dev/urandom) ao substituir o disco com dados aleatórios - ainda aleatório o suficiente para empurrar um SSD para fora dos blocos sobressalentes e dificultar a análise magnética do HDD por interferência de caracteres cruzados, mas menos cpu-com fome para gerar.
Eu nunca usei o DBAN, mas pelo que li parece basicamente uma ferramenta semelhante a um fragmento em um wrapper inicializável.
Então, novamente, há o comando ATA SECURITY_ERASE (e até mesmo o comando SECURITY_ERASE_ENHANCED), acessível em hdparm. Eles simplesmente escrevem 0's no disco sem a necessidade de empurrá-los na interface. No HDD, eles são tão rápidos quanto dd (horas). No SSD, eles são blkdiscard em todo o disco. A variedade aprimorada tenta zerar também os blocos marcados como ruins.
blkdiscard - funciona apenas em SSD. Marca os blocos como livres para que apareçam como 0's, não há garantia de quando serão apagados internamente.
Não instale um sistema operacional, imagine-o
Se você vai colocar GNU/Linux nele de qualquer maneira, você pode fazer as duas coisas em uma única etapa: pegue uma unidade (ou imagem) com uma nova instalação e clone-a no novo disco.
Se o seu sistema operacional ocupa, por exemplo, 8 GB, então são 8 GB de espaço que você não precisa deixar em branco primeiro. Não muito em comparação com 1 TB, admito, mas também pode economizar algum tempo de instalação. Quanto mais você pré-instalar melhor ;)
Se a imagem de origem for muito curta para cobrir todo o disco (melhor muito curta do que muito longa), você pode usar
dd
para apagar o resto do disco. E, em seguida, redimensione a partição após a clonagem, se desejar.Se você quiser usar um arquivo de imagem em vez de clonar um disco, poderá usar um recurso útil chamado "arquivos esparsos" para reduzir o tamanho do arquivo sempre que os blocos forem todos zeros na imagem.