Fragmentar tudo: arquivos / pastas e nomes de arquivos correspondentes

4

Usando find , é fácil destruir o conteúdo de um diretório recursivamente (como discutido em nesta questão ). No entanto, às vezes, os nomes de arquivos por conta própria já contêm informações confidenciais. Existe uma maneira de fragmentar tudo associado a algum arquivo / diretório, ou seja, ele substitui o conteúdo do arquivo e o nome do arquivo / diretório em cada ciclo?

    
por David 06.10.2012 / 02:31

2 respostas

3

shred é praticamente inútil. Para remover o conteúdo de um arquivo excluído da imagem do disco, não é suficiente substituir os locais onde o arquivo estava: você precisa remover todas as cópias do arquivo. Não é apenas uma questão de o arquivo ter sido substituído no lugar. Com muitos tipos de arquivos, pode haver vários arquivos com o mesmo conteúdo, porque o arquivo foi editado e há cópias de backup excluídas por aí.

Além disso, se o disco for danificado, pode ser impossível ler os dados por meios de software, mas ainda é possível recuperá-los por meios de hardware ou deixar o disco esfriar (colocar um disco rígido em um freezer o torna menos propenso a erros por um tempo, até que finalmente desista do fantasma).

O modo seguro de fragmentar um arquivo é armazená-lo desde o início dentro de um contêiner criptografado protegido por uma senha strong (gerar uma senha aleatória o suficiente e anotá-la; quando terminar o arquivo, grave o pedaço de papel). Esfregue seu sistema de arquivos completamente (faça o backup dos dados, depois substitua-os por zeros), crie um contêiner ecryptfs e restaure seus arquivos. Não se esqueça de limpar o backup quando tiver certeza de que a restauração foi bem-sucedida ou guarde o backup em um local seguro.

    
por 27.02.2013 / 02:14
2

shred é uma fonte aleatória rápida no Linux, útil para sobrescrever um dispositivo de bloco em uma única passagem (ao contrário de /dev/*random , que são muito lentos), mas não é particularmente útil para sobrescrever arquivos únicos. O sistema de arquivos em si não sabe onde as cópias antigas podem ser armazenadas, portanto, sobrescrever no lugar não é possível.

Eu apenas tentei com o ext4, em uma imagem de 1GB depois de criar e deletar 3 arquivos, preenchendo-o com um zerofile, e depois extraindo uma árvore fonte do linux ... cada passo com sync / remount entre e os nomes dos arquivos originais ainda estavam lá.

Então, eu criei este comando:

mkdir filenamescrubbing
cd filenamescrubbing
dd if=/dev/zero bs=1M | split -b 4096 -a 254

Isso cria muitos e muitos arquivos com nomes muito longos (se seu sistema de arquivos permitir nomes de arquivos com > 256 caracteres, use um valor maior para -a). Até ficar sem espaço (use um valor menor para -b) ou inodes.

Isso eliminou os nomes de arquivos para mim, porque onde quer que esses nomes de arquivos sejam armazenados, criar um novo nome para cada inode disponível é limpo em todos eles.

É claro que esse método é tão estúpido quanto preencher espaço livre com zeros. Nunca há uma garantia de 100% de que ele realmente funcionou (se for um grande número de arquivos).

O que você pode fazer para verificar um único nome de arquivo é grep -a -b --only-matching yourfilename /dev/yourdevice , supondo que o sistema de arquivos os armazene claramente. Eu acho que você também pode fazer uma substituição com sed ou similar no dispositivo diretamente se você quiser arriscar corrompê-lo.

A criptografia total de disco pode ser uma bênção.

    
por 27.02.2013 / 05:40