A eliminação de arquivos de dados antigos deve ser tão cuidadosa quanto a destruição de documentos físicos. Este guia detalha as melhores práticas para a exclusão segura de arquivos no Linux, explorando o comando `shred` e o conjunto de utilitários de exclusão segura.
Arquivos “Excluídos” São Frequentemente Recuperáveis
Quando um arquivo é “excluído”, ele não é fisicamente removido do disco rígido. O sistema de arquivos utiliza inodes, estruturas de dados que armazenam metadados cruciais sobre os arquivos, como nome, localização no disco, atributos e permissões. Um diretório, em si, é um arquivo que contém os nomes e os números de inode dos arquivos que ele contém.
Ao usar o comando `rm` para excluir um arquivo, o sistema libera o inode correspondente e ajusta o diretório. Isso indica que o espaço em disco que o arquivo ocupava está disponível. Contudo, o conteúdo do arquivo permanece nesse espaço até ser sobrescrito por novos dados. Essa característica permite que arquivos excluídos sejam potencialmente recuperados.
Remover um arquivo de forma permanente exige mais do que simplesmente marcá-lo como disponível. As técnicas a seguir demonstram como garantir que os dados sejam realmente irrecuperáveis.
Atenção: Não Use Estas Técnicas em SSDs
As técnicas apresentadas neste artigo são projetadas para discos rígidos eletromecânicos tradicionais (HDDs). Não as aplique em unidades de estado sólido (SSDs), pois podem resultar em gravações desnecessárias e desgaste prematuro. Para apagar dados de SSDs, utilize o utilitário fornecido pelo fabricante.
O Comando shred
O comando `shred` foi criado para realizar a sobrescrita de dados, impedindo a recuperação de arquivos excluídos. Este utilitário está presente em todas as distribuições Linux comuns, incluindo Ubuntu, Fedora e Manjaro.
Para demonstrar, consideraremos um diretório chamado `~/research` contendo arquivos de texto e outros diretórios com mais arquivos. Assumiremos que esses arquivos contêm informações confidenciais que precisam ser apagadas permanentemente.
Podemos verificar a estrutura do diretório com o comando `tree -d`. A opção `-d` instrui o comando a exibir apenas diretórios e não todos os arquivos. A estrutura do diretório assemelha-se a:
tree -d
Apagando um Arquivo Individual
O comando a seguir pode ser usado para apagar um único arquivo. As opções utilizadas são:
-u
: desaloca e remove o arquivo após a substituição.-v
: modo verbose, para o `shred` informar suas ações.-z
: executa uma sobrescrita final com zeros.
shred -uvz Preliminary_Notes.txt_01.txt
Por padrão, o `shred` sobrescreve o arquivo quatro vezes. As três primeiras passagens usam dados aleatórios, enquanto a passagem final usa zeros. Em seguida, o arquivo é removido e alguns dos metadados no inode são sobrescritos.
Personalizando o Número de Sobrescritas
O número de sobrescritas pode ser modificado com a opção `-n`. O `shred` sempre realizará pelo menos uma sobrescrita. O valor fornecido com `-n` especifica quantas sobrescritas adicionais serão realizadas. Para obter três sobrescritas no total, solicite duas extras:
shred -uvz -n 2 Preliminary_Notes.txt_02.txt
Conforme esperado, o `shred` realiza três sobrescritas.
Menos sobrescritas resultam em um processo mais rápido, mas diminuem a segurança. Curiosamente, três sobrescritas são frequentemente consideradas suficientes.
Apagando Vários Arquivos
Caracteres curinga podem ser utilizados com o `shred` para selecionar grupos de arquivos. O asterisco (`*`) corresponde a múltiplos caracteres, enquanto o ponto de interrogação (`?`) corresponde a um único caracter. O comando abaixo apagará todos os arquivos restantes com nome `Preliminary_Notes` no diretório atual:
shred -uvz -n 2 Preliminary_Notes_*.*
O `shred` processa os arquivos individualmente.
O comando `shred` não possui uma opção recursiva, portanto, não pode ser usado para apagar hierarquias de diretórios.
Desafios na Exclusão Segura de Arquivos
Apesar da eficácia do `shred`, há uma complexidade: sistemas de arquivos modernos com journaling (como ext3 e ext4) visam proteger a integridade dos dados. Com o journaling, não há garantia de que a sobrescrita ocorra no local exato do disco rígido usado pelo arquivo excluído.
O uso do `shred` proporciona uma maior garantia de exclusão completa do que o `rm`, mas não garante que os dados sejam absolutamente irrecuperáveis.
O Pacote Secure-Delete
Os comandos do pacote `secure-delete` empregam técnicas mais agressivas para tentar superar o comportamento de sistemas de arquivos com journaling, aumentando a probabilidade de uma sobrescrita bem-sucedida. Mesmo assim, não há garantia absoluta.
Os comandos `secure-delete` utilizam a seguinte sequência de sobrescritas e ações:
- Sobrescrita com bytes de valor 0xFF.
- Cinco sobrescritas com dados aleatórios.
- 27 sobrescritas com valores especiais definidos por Peter Gutmann.
- Mais cinco sobrescritas com dados aleatórios.
- Renomeia o arquivo com um valor aleatório.
- Truncar o arquivo.
Peter Gutmann, que publicou um artigo em 1996 sobre estas técnicas, esclarece que o uso de todas as técnicas discutidas em seu artigo é desnecessário. Ele afirmou que “uma boa limpeza com dados aleatórios será tão eficaz quanto o esperado.”
Apesar disso, as ferramentas de exclusão segura utilizam a combinação de técnicas descrita acima. Primeiro, é necessário instalar o pacote:
Instalando Secure-delete
Em distribuições baseadas em Debian, como Ubuntu, utilize `apt-get` para instalar o pacote. Em outras distribuições, utilize a ferramenta de gerenciamento de pacotes correspondente.
sudo apt-get install secure-delete
O pacote `secure-delete` inclui quatro comandos:
srm
: uma versão segura do `rm`, utilizada para apagar arquivos sobrescrevendo seu espaço em disco.sfill
: ferramenta para sobrescrever todo o espaço livre em um disco rígido.sswap
: utilizado para sobrescrever e limpar o espaço de swap.sdmem
: utilizado para limpar a RAM.
O Comando srm
O comando `srm` é utilizado de forma similar ao `rm`. O comando abaixo remove um único arquivo. A opção `-z` usa zeros para a limpeza final, enquanto `-v` habilita o modo verbose.
srm -vz Chapter_One_01.txt
Uma característica notável do `srm` é sua lentidão. O utilitário exibe informações sobre o progresso, mas a demora é perceptível.
A opção `-l` (diminuir a segurança) reduz o número de sobrescritas para duas, acelerando o processo:
srm -lvz Chapter_One_02.txt
O `srm` indica que essa opção é menos segura, mas ainda executa a exclusão e a sobrescrita do arquivo.
Usar `-l` duas vezes reduz o número de sobrescritas para uma:
srm -llvz Chapter_One_03.txt
Utilizando srm
com Vários Arquivos
O `srm` também aceita caracteres curinga. O comando abaixo apagará o restante dos arquivos do capítulo um:
srm -vc Chapter_One_0?.txt
O `srm` processa os arquivos sequencialmente.
Excluindo Diretórios e seu Conteúdo com srm
A opção `-r` (recursiva) instrui o `srm` a excluir subdiretórios e seu conteúdo. Pode-se passar o caminho para o diretório inicial para o `srm`. O exemplo abaixo remove recursivamente todo o conteúdo do diretório `~/research`. Isso inclui todos os arquivos em `~/research` e em seus subdiretórios:
srm -vz *
O `srm` começa a processar os arquivos e diretórios.
Após um período, o prompt do terminal reaparece. Em um sistema de teste com cerca de 200 arquivos distribuídos em três níveis de diretórios, o processo demorou aproximadamente uma hora.
Todos os arquivos e subdiretórios foram removidos conforme esperado.
O Comando sfill
Se você está preocupado com arquivos excluídos anteriormente usando o comando `rm`, o comando `sfill` oferece uma solução. Ele sobrescreve todo o espaço livre no disco rígido. Durante este processo, o espaço disponível no disco diminuirá gradualmente até se esgotar. Ao concluir, o `sfill` libera todo o espaço de volta. Em sistemas multiusuários, esta tarefa de manutenção deve ser realizada fora do horário de pico. Mesmo em um computador de usuário único, a indisponibilidade de espaço no disco durante o processo torna o sistema inutilizável.
Para agilizar o processo, utilize a opção `-l` (diminuir a segurança). As opções `-v` (verbose) e `-z` (zeros) também estão disponíveis. O comando abaixo sobrescreve todo o espaço livre no diretório `/home`:
sudo sfill -lvz /home
Em um computador de teste com um disco rígido de 10 GB, o processo iniciado à tarde foi concluído apenas durante a noite.
Mesmo utilizando a opção `-l`, o processo levará algumas horas. Ao término, o prompt de comando reaparecerá.
O Comando sswap
O comando `sswap` sobrescreve o espaço da partição swap. Primeiro, é necessário identificar a partição swap usando o comando `blkid`:
sudo blkid
Localize a linha que contém a palavra “swap” e anote o dispositivo de bloco correspondente.
Neste exemplo, a partição swap está em `/dev/sda5`.
Antes da sobrescrita, é necessário desabilitar o uso da partição swap com o comando `swapoff`:
sudo swapoff /dev/sda5
Agora podemos utilizar o comando `sswap`:
sudo sswap -llv /dev/sda5
O `sswap` sobrescreve os dados da partição swap. O processo pode ser demorado.
Após a conclusão da sobrescrita, a partição swap precisa ser reativada com o comando `swapon`:
sudo swapon /dev/sda5
O Comando sdmem
O pacote `secure-delete` inclui uma ferramenta para limpar os chips de memória RAM do computador.
Um ataque de inicialização a frio requer acesso físico ao computador logo após o desligamento. Este tipo de ataque pode permitir a recuperação de dados da RAM.
Para se proteger contra esse tipo de ataque, utilize o `sdmem` para limpar a RAM antes de desligar o computador. Utilize as opções `-v` (verbose) e `-ll` (diminuir a segurança):
sudo sdmem -vll
O terminal será preenchido com asteriscos, indicando que o `sdmem` está operando na RAM.
A Solução Mais Prática: Criptografar sua Unidade
Em vez de se preocupar com a exclusão segura de arquivos, considere proteger seu disco rígido ou pasta pessoal com criptografia.
A criptografia impede o acesso a qualquer dado, incluindo arquivos ativos e excluídos. Isso elimina a necessidade de apagar arquivos confidenciais de forma manual. A maioria das distribuições Linux oferece a opção de criptografia durante a instalação. Optar por essa opção simplifica a proteção dos seus dados. Se você planeja descartar ou vender o computador posteriormente, a criptografia também facilitará esse processo.