Como excluir arquivos com segurança no Linux

Abra o disco rígido na bandeja hot swap
Biehler Michael / Shutterstock.com

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 Linux. Este tutorial cobre o shredcomando e o secure-deleteconjunto de utilitários.

Os 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 (HDD) tradicionais 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

shred foi projetado para realizar a substituição para você, de forma que um arquivo excluído não possa 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 treecomando a seguir. A -dopção (diretório) faz treecom que apenas os diretórios sejam listados e não todos os arquivos. A estrutura da árvore do diretório é semelhante a esta:

árvore -d

estrutura de árvore de diretório em uma janela de terminal

Destruindo um único arquivo

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

  • u : Desalocar e remover o arquivo após a substituição.
  • v : opção detalhada, de modo que shrednos diz o que está fazendo.
  • z : Executa uma substituição final com zeros.
shred -uvz Preliminary_Notes.txt_01.txt

destruir -uvz Preliminary_Notes.txt_01.txt em uma janela de terminal

shredsobrescreve 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, ele remove o arquivo e sobrescreve alguns dos metadados no inode

Recomendado:  Como colaborar no Notes no macOS

fragmento fazendo quatro passagens

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

Podemos pedir shredpara usar mais ou menos passagens de substituição usando a -nopção (número). shredsempre usará pelo menos um passe. O número que fornecemos aqui é o número de passes extras que precisamos shredexecutar. Portanto 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

shred -uvz -n 2 Preliminary_Notes.txt_02.txt em uma janela de terminal

Como esperado, shredfaz três passes.

fragmento fazendo três passagens em uma janela de terminal

Menos passes – 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 shredpara selecionar grupos de arquivos a serem apagados. * representa vários caracteres e  ? representa um único caractere. Este comando excluiria todos os arquivos “Preliminary_Notes” restantes no diretório de trabalho atual.

shred -uvz -n 2 Preliminary_Notes _ *. *

shred -uvz -n 2 Preliminary_Notes _ *. * em uma janela de terminal

Os arquivos restantes são processados  shredseparadamente.

saída do shred em uma janela de terminal

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 de excluir arquivos com segurança

Por melhor que shredseja, 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 tudo o que você deseja tranquilidade é que os arquivos foram excluídos um pouco mais completamente do que rmteria feito, shredprovavelmente tudo bem. 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 secure-delete comandos tentam superar os melhores esforços dos sistemas de arquivos com diário e obter 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 esteja 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 secure-deletecomandos 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 sobrescreve 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 é necessário usar todas as técnicas discutidas naquele artigo de uma vez.

Recomendado:  Como encontrar uma estação de carregamento EV perto de você

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 essas são as técnicas empregadas pelos secure-deletecomandos. Mas primeiro, precisamos instalá-los.

Instalando Secure-delete

Use  apt-get para instalar este pacote em seu sistema se você estiver usando o 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

sudo apt-get install secure-delete em uma janela de terminal

Existem quatro comandos incluídos no secure-deletepacote.

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

O Comando srm

Você usa o srmcomando da mesma forma que o faria rm. Para remover um único arquivo, use o seguinte comando. A -zopção (zeros) faz smrcom que sejam usados ​​zeros para a limpeza final em vez de dados aleatórios. A -vopção (detalhada) srmnos informa de seu progresso.

srm -vz Chapter_One_01.txt

srm -vz Chapter_One_01.txt em uma janela de terminal

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.

saída de srm em uma janela de terminal

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

srm -lvz Chapter_One_02.txt

srm -lvz Chapter_One_02.txt em uma janela de terminal

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

Saída de srm em uma janela de terminal

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

srm -llvz Chapter_One_03.txt em uma janela de terminal

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

srm -vc Chapter_One_0? .txt em uma janela de terminal

Os arquivos são processados ​​por srmsua vez.

srm apagando vários arquivos em uma janela de terminal

Excluindo diretórios e seus conteúdos com srm

A -ropção (recursiva) fará com que srmapague todos os subdiretórios e seus conteúdos. Você pode passar o caminho para o primeiro diretório 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 -vz * em uma janela de terminal

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

srm começando a processar em uma janela de terminal

Ele eventualmente retorna você ao 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.

srm completo em uma janela de terminal

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 sfillcomando substituirá todo o espaço livre em seu disco rígido.

Ao fazer isso, você notará que tem cada vez menos espaço livre no disco rígido, até o ponto em que não há espaço livre nenhum. Quando sfillconcluí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, essa é uma tarefa de manutenção que deve ser realizada fora do horário.

Recomendado:  Economize muito em telefones Samsung Galaxy, Smartwatches Fitbit e Google Nest Wi-Fi

Mesmo em um computador de usuário único, a perda de espaço no disco rígido significa que ele fica inutilizável, uma vez que sfillocupa 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(detalhada) e -z  (zeros) que vimos anteriormente. Aqui, estamos pedindo sfillpara sobrescrever com segurança todo o espaço livre no diretório / home.

sudo sfill -lvz / home

sudo sfill -lvz / home em uma janela de terminal

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.

sfill output em uma janela de terminal

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 sswapcomando sobrescreve o armazenamento em sua partição swap. A primeira coisa que precisamos fazer é identificar sua partição swap. Podemos fazer isso com o blkidcomando, que lista os dispositivos de bloco.

sudo blkid

sudo blkid em uma janela de terminal

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

saída do blkid em uma janela de terminal

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

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

sudo swapoff / dev / sda5

sudo swapoff / dev / sda5 em uma janela de terminal

Agora podemos usar o sswapcomando.

Usaremos /dev/sda5como parte da linha de comando para o sswapcomando. Também usaremos as -vopções (verbosa) e -ll(diminuir a segurança), que usamos anteriormente.

sudo sswap -llv / dev / sda5

sudo sswap -llv / dev / sda5 em uma janela de terminal

sswapcomeça a trabalhar em sua partição swap, sobrescrevendo tudo o que está nela. Não leva tanto tempo quanto sfill. 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 swaponcomando:

sudo swapon / dev / sda5

sudo swapon / dev / sda5 em uma janela de terminal

O comando sdmem

O secure-deletepacote ainda contém uma ferramenta para limpar os chips de memória de acesso aleatório (RAM) do computador.

Um ataque de inicialização a frio requer acesso físico ao computador logo após ele 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 sua RAM antes de desligar o computador. Usaremos as opções -v(detalhado) e -ll(diminuir a segurança) mais uma vez.

sudo sdmem -vll

sudo sdmem -vll em uma janela de terminal

A janela do terminal será preenchida com asteriscos como uma indicação de que sdmemestá passando por sua RAM.

saída de sdmem em uma janela de terminal

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 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 sensíveis. 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.