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 shred
comando e o secure-delete
conjunto de utilitários.
Índice
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 tree
comando a seguir. A -d
opção (diretório) faz tree
com 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
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
shred
nos diz o que está fazendo. - z : Executa uma substituição final com zeros.
shred -uvz Preliminary_Notes.txt_01.txt
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, ele remove o arquivo e sobrescreve alguns dos metadados no inode
Definir o número de passes de substituição
Podemos pedir shred
para usar mais ou menos passagens de substituição usando a -n
opção (número). shred
sempre usará pelo menos um passe. O número que fornecemos aqui é o número de passes extras que precisamos shred
executar. 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
Como esperado, shred
faz três passes.
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 shred
para selecionar grupos de arquivos a serem apagados. O *
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 _ *. *
Os arquivos restantes são processados shred
separadamente.
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 shred
seja, 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 rm
teria feito, shred
provavelmente 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-delete
comandos 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.
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-delete
comandos. 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
Existem quatro comandos incluídos no secure-delete
pacote.
-
srm
é um segurorm
, 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 substituir e limpar seu espaço de troca.sdmem
é usado para limpar sua RAM.
O Comando srm
Você usa o srm
comando da mesma forma que o faria rm
. Para remover um único arquivo, use o seguinte comando. A -z
opção (zeros) faz smr
com que sejam usados zeros para a limpeza final em vez de dados aleatórios. A -v
opção (detalhada) srm
nos informa 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 drasticamente.
srm -lvz Chapter_One_02.txt
srm
informa que isso – em sua opinião – é menos seguro, mas ainda assim 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
sua vez.
Excluindo diretórios e seus conteúdos com srm
A -r
opção (recursiva) fará com que srm
apague 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 começa a processar os diretórios e arquivos.
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.
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 sfill
comando 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 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, essa é uma tarefa de manutenção que deve ser realizada fora do horário.
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 sfill
ocupa 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 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 sswap
comando sobrescreve o armazenamento em sua partição swap. A primeira coisa que precisamos fazer é identificar sua partição swap. Podemos fazer isso com o blkid
comando, 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 /dev/sda5
.
Precisamos desligar as gravações em disco na partição de swap durante a substituição. Usaremos o swapoff
comando:
sudo swapoff / dev / sda5
Agora podemos usar o sswap
comando.
Usaremos /dev/sda5
como parte da linha de comando para o sswap
comando. Também usaremos as -v
opções (verbosa) e -ll
(diminuir a segurança), que usamos anteriormente.
sudo sswap -llv / dev / sda5
sswap
começ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 swapon
comando:
sudo swapon / dev / sda5
O comando sdmem
O secure-delete
pacote 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
A janela do terminal será preenchida com asteriscos como uma indicação de que sdmem
está passando por 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 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.