Como excluir arquivos com segurança no Linux

Destrua arquivos de dados antigos pelo mesmo motivo que destrói documentos em papel antigos. Dizemos a você o que você precisa saber sobre a exclusão segura de arquivos do Linux. Este tutorial cobre o comando shred e o conjunto de utilitários de exclusão segura.

Arquivos excluídos são normalmente recuperáveis

Excluir um arquivo, na verdade, não o remove do disco rígido. Tudo depende da forma como seu sistema de arquivos usa inodes. Estas são as estruturas de dados dentro do sistema de arquivos que contêm os metadados relativos aos arquivos. O nome do arquivo, sua posição no disco rígido, quais atributos e permissões ele possui, e assim por diante, são armazenados em um inode. Um diretório não é mais do que um arquivo em si. Aquele que contém os nomes e números de inode dos arquivos que o diretório contém.

Quando você exclui um arquivo com rm, o sistema de arquivos libera o inode apropriado e ajusta o arquivo do diretório. Isso marca o espaço no disco rígido que o arquivo costumava ocupar como não utilizado. Imagine que você entra em uma biblioteca e examina o índice do cartão, encontra o cartão do catálogo de um livro e o rasga. O livro ainda está na estante. É apenas mais difícil de encontrar.

Em outras palavras, o espaço que era usado pelo arquivo agora está livre para ser usado por outros arquivos. Mas o conteúdo do arquivo antigo ainda permanece naquele espaço. Até que esse espaço seja sobrescrito, há uma boa chance de que o arquivo possa ser recuperado.

Mas livrar-se completamente de um arquivo não é tão simples quanto simplesmente substituí-lo. Como veremos.

Não faça isso com SSDs

Essas técnicas são para unidades de disco rígido eletromecânicas tradicionais (HDD) e não devem ser usadas com unidades de estado sólido (SSD). Não funcionará e causará gravações extras e desgaste desnecessário do SSD. Para apagar dados de um SSD com segurança, você deve usar o utilitário fornecido pelo fabricante do SSD.

O Comando de Fragmentação

fragmento é projetado para execute a sobrescrita para você portanto, um arquivo excluído não pode ser recuperado. Ele está incluído em todas as distribuições Linux testadas durante a pesquisa para este artigo, incluindo Ubuntu, Fedora e Manjaro.

Neste exemplo, trabalharemos em um diretório chamado ~ / research, que contém muitos arquivos de texto. Ele também contém alguns outros diretórios que, por sua vez, contêm outros arquivos. Vamos assumir que esses arquivos são confidenciais e devem ser totalmente apagados do disco rígido.

Podemos ver a estrutura em árvore do diretório usando o comando tree da seguinte maneira. A opção -d (diretório) faz com que a árvore liste apenas os diretórios e não todos os arquivos. A estrutura da árvore do diretório é semelhante a esta:

tree -d

Destruindo um único arquivo

Para destruir um único arquivo, podemos usar o seguinte comando. As opções que estamos usando são:

  Como habilitar a autenticação de dois fatores no Linux para fazer login

u: Desalocar e remover o arquivo após a substituição.
v: opção detalhada, para que o fragmento nos diga o que está fazendo.
z: Executa uma substituição final com zeros.

shred -uvz Preliminary_Notes.txt_01.txt

O shred sobrescreve o arquivo quatro vezes por padrão. As três primeiras passagens usam dados aleatórios e a passagem final usa zeros, conforme solicitamos. Em seguida, remove o arquivo e sobrescreve alguns dos metadados no inode

Definir o número de passes de substituição

Podemos pedir ao shred para usar mais ou menos passagens de substituição usando a opção -n (número). shred sempre usará pelo menos uma passagem. O número que fornecemos aqui é o número de passagens extras que exigimos que a fragmentação execute. Portanto, o shred sempre fará uma passagem a mais do que o número que pedimos. Para obter três passes no total, solicitamos dois passes extras:

shred -uvz -n 2 Preliminary_Notes.txt_02.txt

Como esperado, o shred faz três passagens.

Menos passagens – menos retalhamento, se quiser – é obviamente mais rápido. Mas é menos seguro? Curiosamente, três passes são provavelmente mais do que suficientes.

Destruindo vários arquivos

Os curingas podem ser usados ​​com o shred para selecionar grupos de arquivos a serem apagados. O * representa vários caracteres e o? representa um único personagem. Este comando excluiria todos os arquivos “Preliminary_Notes” restantes no diretório de trabalho atual.

shred -uvz -n 2 Preliminary_Notes_*.*

Os arquivos restantes são processados ​​separadamente por fragmentação.

shred não tem opção recursiva, portanto, não pode ser usado para apagar árvores de diretórios de diretórios aninhados.

O problema com a exclusão segura de arquivos

Por melhor que seja o fragmento, há um problema. Os sistemas de arquivos com registro de mudanças modernos, como ext3 e ext4, fazem um tremendo esforço para garantir que não quebrem, sejam corrompidos ou percam dados. E com os sistemas de arquivos com registro em diário, não há garantia de que a sobregravação esteja realmente ocorrendo no espaço do disco rígido usado pelo arquivo excluído.

Se você deseja ter paz de espírito com o fato de que os arquivos foram excluídos de maneira um pouco mais completa do que o rm teria feito, então provavelmente não há problema em fragmentar. Mas não cometa o erro de pensar que os dados definitivamente sumiram e são totalmente irrecuperáveis. Possivelmente não é o caso.

O pacote de exclusão segura

Os comandos secure-delete tentam superar os melhores esforços dos sistemas de arquivos com diário e ter sucesso na substituição do arquivo com segurança. Mas exatamente as mesmas advertências se aplicam. Ainda não há garantia de que a substituição está realmente ocorrendo na região do disco rígido de que você precisa para apagar o arquivo de interesse. Há mais chance, mas não há garantia.

Os comandos de exclusão segura usam a seguinte sequência de substituições e ações:

1 sobrescrever com bytes de valor 0xFF.
5 sobrescreve com dados aleatórios.
27 substituições com valores especiais definidos por Peter Gutmann.
Mais 5 substituições com dados aleatórios.
Renomeie o arquivo com um valor aleatório.
Truncar o arquivo.

Se tudo isso parece excessivo para você, você está em boa companhia. Também parece excessivo para Peter Gutmann, professor da Universidade de Aukland. Ele publicou um artigo em 1996 discutindo essas técnicas, do qual surgiu o mito urbano de que você precisa usar todas as técnicas discutidas naquele artigo de uma vez.

  Como sincronizar o Google Drive no Linux com OverGrive

Peter Gutmann, desde então, tentou colocar o gênio de volta na garrafa, dizendo “Uma boa limpeza com dados aleatórios fará tão bem quanto o esperado.”

Mas estamos onde estamos, e essa é a variedade de técnicas empregadas pelos comandos de exclusão segura. Mas primeiro, precisamos instalá-los.

Instalando Secure-delete

Use apt-get para instalar este pacote em seu sistema se estiver usando Ubuntu ou outra distribuição baseada em Debian. Em outras distribuições Linux, use a ferramenta de gerenciamento de pacotes da distribuição Linux.

sudo apt-get install secure-delete

Existem quatro comandos incluídos no pacote de exclusão segura.

srm é um rm seguro, usado para apagar arquivos excluindo-os e sobrescrevendo seu espaço no disco rígido.
sfill é uma ferramenta para sobrescrever todo o espaço livre em seu disco rígido.
sswap é usado para sobrescrever e limpar seu espaço de swap.
sdmem é usado para limpar sua RAM.

O comando srm

Você usa o comando srm da mesma forma que usaria o comando rm. Para remover um único arquivo, use o seguinte comando. A opção -z (zeros) faz com que smr use zeros para a limpeza final em vez de dados aleatórios. A opção -v (verbose) faz com que srm nos informe de seu progresso.

srm -vz Chapter_One_01.txt

A primeira coisa que você notará é que srm é lento. Ele fornece algum feedback visual enquanto funciona, mas é um alívio quando você vê o prompt de comando novamente.

Você pode usar a opção -l (diminuir a segurança) para reduzir o número de passes para dois, o que acelera as coisas drasticamente.

srm -lvz Chapter_One_02.txt

srm nos informa que isso – em sua opinião – é menos seguro, mas ainda exclui e sobrescreve o arquivo para nós.

Você pode usar a opção -l (diminuir a segurança) duas vezes, para reduzir o número de passes para um.

srm -llvz Chapter_One_03.txt

Usando srm com vários arquivos

Também podemos usar curingas com srm. Este comando apagará e limpará as partes restantes do capítulo um:

srm -vc Chapter_One_0?.txt

Os arquivos são processados ​​por srm por sua vez.

Excluindo diretórios e seus conteúdos com srm

A opção -r (recursiva) fará com que srm exclua todos os subdiretórios e seus conteúdos. Você pode passar o caminho para o primeiro diretório para srm.

Neste exemplo, estamos excluindo tudo do diretório atual, ~ / research. Isso significa que todos os arquivos em ~ / research e todos os subdiretórios foram removidos com segurança.

srm -vz *

srm começa a processar os diretórios e arquivos.

Eventualmente, ele retorna para o prompt de comando. Na máquina de teste em que este artigo foi pesquisado, demorou cerca de uma hora para remover cerca de 200 arquivos distribuídos entre o diretório atual e três diretórios aninhados.

Todos os arquivos e subdiretórios foram removidos conforme o esperado.

O comando sfill

E se você estiver preocupado com um arquivo que excluiu usando rm, como você pode repassar aquele antigo terreno e certificar-se de que foi sobrescrito? O comando sfill substituirá todo o espaço livre em seu disco rígido.

Ao fazer isso, você notará que tem cada vez menos espaço livre em seu disco rígido, até o ponto em que não há espaço livre nenhum. Quando o sfill é concluído, ele libera todo o espaço livre de volta para você. Se você estiver administrando um sistema multiusuário, isso seria muito problemático, portanto, esta é uma tarefa de manutenção que deve ser realizada fora do horário.

  Como jogar Dead Rising 4 no Linux

Mesmo em um computador com um único usuário, a perda de espaço no disco rígido significa que ele está inutilizável, uma vez que o sfill tenha usado a maior parte do espaço. Isso é algo que você começaria e depois se afastaria.

Para tentar acelerar um pouco as coisas, você pode usar a opção -l (diminuir a segurança). As outras opções são as opções -v (detalhado) e -z (zeros) que vimos anteriormente. Aqui, estamos pedindo a sfill para sobrescrever com segurança todo o espaço livre no diretório / home.

sudo sfill -lvz /home

Sinta-se a vontade. No computador de teste – que tem apenas um disco rígido de 10 GB – isso foi iniciado no meio da tarde e concluído durante a noite.

Vai se agitar por horas. E isso é com a opção -l (diminuir a segurança). Mas, eventualmente, você retornará ao prompt de comando.

O comando sswap

O comando sswap sobrescreve o armazenamento em sua partição swap. A primeira coisa que precisamos fazer é identificar sua partição swap. Podemos fazer isso com o comando blkid, que lista os dispositivos de bloco.

sudo blkid

Você precisa localizar a palavra “swap” e anotar o dispositivo de bloco ao qual ela está conectada.

Podemos ver que a partição swap está conectada a / dev / sda5.

Precisamos desligar as gravações em disco na partição de troca durante a substituição. Usaremos o comando swapoff:

sudo swapoff /dev/sda5

Agora podemos usar o comando sswap.

Usaremos / dev / sda5 como parte da linha de comando para o comando sswap. Também usaremos a opção -v (detalhado) e as opções -ll (diminuir a segurança), que usamos anteriormente.

sudo sswap -llv /dev/sda5

O sswap começa a trabalhar em sua partição swap, sobrescrevendo tudo o que está nela. Não leva tanto tempo quanto ainda. Parece que sim.

Depois de concluído, precisamos restabelecer a partição de swap como um espaço de swap ativo. Fazemos isso com o comando swapon:

sudo swapon /dev/sda5

O comando sdmem

O pacote de exclusão segura contém até uma ferramenta para limpar os chips de memória de acesso aleatório (RAM) do computador.

UMA ataque de inicialização a frio requer acesso físico ao seu computador logo após ser desligado. Esse tipo de ataque pode, potencialmente, permitir a recuperação de dados de seus chips de RAM.

Se você acha que precisa se proteger contra esse tipo de ataque – e seria um exagero para a maioria das pessoas pensar que precisariam – você pode limpar a memória RAM antes de desligar o computador. Usaremos as opções -v (detalhado) e -ll (diminuir a segurança) mais uma vez.

sudo sdmem -vll

A janela do terminal será preenchida com asteriscos como uma indicação de que o sdmem está trabalhando em sua RAM.

A opção fácil: basta criptografar sua unidade

Em vez de excluir arquivos com segurança, por que não proteger seu disco rígido ou sua pasta de início usando criptografia?

Se você fizer isso, ninguém poderá acessar nada, seja um arquivo ativo ou excluído. E você não precisa estar em guarda e se lembrar de apagar arquivos confidenciais com segurança, porque todos os seus arquivos já estão protegidos.

A maioria das distribuições do Linux pergunta se você deseja usar criptografia no momento da instalação. Dizer “sim” poupará muitos aborrecimentos futuros. Você não pode lidar com informações secretas ou confidenciais. Mas se você acha que pode dar ou vender o computador para outra pessoa quando terminar de usá-lo, a criptografia também simplificará isso.