Apagando arquivos, partições e discos com segurança no Linux

Eu sempre levo comigo um pequeno cartão comprovando minha inscrição na UISP (União Internacional dos Super Paranóicos, divisão de lata). Cuidado nunca é demais. Afinal, vivemos em um mundo perigoso e os computadores são uma extensão disso. Depois de instalar o sistema operacional certo — o GNU/Linux, é claro — navegadores seguros, antivírus e verificadores de rootkits, você pode começar a sentir orgulho da sua segurança. Não faça isso. Até que você entenda e domine alguns destes utilitários do GNU para apagar, picotar e aniquilar arquivos, diretórios, partições e HDs com segurança, você não estará a salvo. E por que não?

No ano passado, a imprensa britânica falou várias vezes sobre departamentos governamentais e funcionários que perderam laptops e pendrives. Eles eram perdidos nos correios, esquecidos nos trens e onde mais você imaginar. Não estavam protegidos por senhas nem criptografados. Nenhuma proteção, e pode apostar que todos os notebooks rodavam Windows. Um verdadeiro banquete para ladrões de identidade e chantagistas. Essa abordagem indiferente quanto à segurança do computador não é de causar espanto. A maioria das pessoas só quer ligar o computador e sair usando. A segurança fica para depois — quando fica.

“Eu uso GNU/Linux, meu chapa, tô seguro”, você diz, cheio de pretensão. Bom, é certo que você está melhor do que um usuário não profissional de Windows, mas não se dê por satisfeito. Nós todos sabemos como apagar arquivos e diretórios, ou como arrastá-los para a lixeira. Sumiram? Pense duas vezes. Isso é só o começo. Se você soubesse o que acontece nesse momento seu sono não seria tão tranqüilo. Vou dar uma olhada no que acontece e em como destruir para valer quaisquer dados sensíveis, indo de um simples arquivo a um disco inteiro. Você pode querer apagar o disco inteiro antes de uma reinstalação, ou antes de dar o HD para um conhecido ou de doá-lo para alguma instituição de caridade. Nesses casos, é bom ter certeza de que não sobraram dados importantes no disco. A imprensa britânica já publicou várias histórias sobre discos doados que foram verificados, revelando loucuras impublicáveis. As doações corporativas são especialmente vulneráveis. Não acredita? Em 2003, dois alunos do MIT compraram 158 HDs no eBay e conseguiram descobrir números de 5.000 cartões de crédito, informações médicas pessoais, registros de transações financeiras, emails e, como não poderia deixar de ser, pornografia, só para citar alguns dos achados. E olha que muitos desses discos foram “apagados”. Por isso, vamos dar uma olhada nas ferramentas do GNU que podem ser usadas para que ninguém chore sobre o leite derramado.

Shred

O Shred (“picotar”, em inglês) faz parte dos utilitários básicos do GNU, e já deve estar instalado na sua distro. Ao escrever meu artigo sobre o Krusader, percebi que o menu de contexto dele oferece a opção de picotar arquivos/diretórios, mas obviamente esse recurso é uma ferramenta de linha de comando, como um simples man shred na linha de comando pode demostrar. O shred pode ser incluído no service menu do KDE e o Wipe pode entrar em um script do Nautilus. A implementação do PGP (Pretty Good Privacy) no GNU/Linux, o KGpg, abre um assistente de configuração na primeira utilização, que oferece a opção de instalar um ícone do picotador no desktop. É só arrastar arquivos até o ícone para removê-los com segurança. Funciona na minha versão, a 1.2.2, mas pode ser que as versões posteriores não tenham mais esse recurso. Se você estiver usando uma versão mais recente e ela não oferecer esse recurso, experimente um service menu do KDE chamado Qwipe.

Mas qual é o problema de simplesmente excluir um arquivo ou diretório? Nenhum, a não ser pelo fato de que o arquivo não é realmente excluído do HD. A única coisa que é removida é o ponteiro para o arquivo. O arquivo original ainda está lá, esperando por alguém que possua a habilidade de localizá-lo. Usar o comando rm também não ajuda, pois só o que ele faz é marcar o bloco de dados do arquivo como livre. A remoção do arquivo dessa forma equivale a remover o cartão de identificação de um livro da biblioteca. O livro continua na estante.

O Shred e os sistemas de arquivo com journaling: um aviso

Um dos pontos atraentes do GNU/Linux, dentre muitos outros, é que você não será afrontado pela necessidade de rodar um programa de desfragmentação ocasionada pela progressiva desorganização na seqüência de blocos dos arquivos ou por um travamento do sistema. Os sistemas de arquivos ext3 do GNU/Linux contêm journaling. Resumindo, para evitar desfragmentações entediantes em sistemas de arquivos como ext3, ReiserFS, XFS, JFS e ext4, as alterações são registradas em um diário (o journal), para que em caso de travamento seja mais difícil o corrompimento dos dados e para que os dados possam ser restaurados a um estado consistente. Obviamente esse recurso repercute no desempenho, já que os dados são escritos duas vezes. Há três tipos de sistemas de journaling: journal, ordered e writeback. O uso do Shred com um sistema de arquivos ext3 deixa o usuário com o problema da remoção segura, porque ele só pode ser utilizado de maneira efetiva com os tipos ordered e writeback de journaling.

A solução para o ext3 é convertê-lo em um sistema sem journaling como o ext2, rodar o shred e convertê-lo para ext3 de novo. Isso pode ser feito de maneira dinâmica. Se não tiver certeza de qual sistema de arquivos está usando, digite /etc/fstab na barra de localização do Konqueror para descobrir. Se for ext3, você pode convertê-lo para ext2 com o procedimento a seguir.

Abra um terminal como root e converta o ext3 para ext2:

# tune2fs -O ^has_journal /dev/hda1

e depois:

# e2fsck /dev/hda1

Também é preciso editar o /etc/fstab (como root) em seu editor de textos preferido, alterando a entrada para ext2. Depois de usar o comando shred será preciso converter o arquivo de volta para ext3:

# tune2fs -j /dev/hda1

Parece meio complicado fazer tudo isso para excluir arquivos com segurança, mas pelo menos você vai ter certeza de que nada escapou. Existe outro método. Edite as opções de montagem em /etc/fstab (como root), alterando o tipo do journal para um dos outros dois mencionados acima, use o Shred e volte para o tipo de journal anterior usando o mesmo procedimento.

Saiba que dispositivos com RAID e sistemas de arquivos compactados oferecem problemas potenciais semelhantes. Por fim, se houver arquivos com nomes estranhos, incluindo caracteres especiais ou de controle, pode ser necessários exclui-los de maneira segura identificando seu número de inode. Se quiser uma alternativa rápida ao Shred, considere o chattr, usado para alterar os atributos de arquivos e diretórios. Use a opção -s para excluir com segurança o bloco ocupado por eles com uma série de zeros, mas isso é bem básico. O uso da opção +i protege um arquivo contra a exclusão marcando-o como “imutável”, caso você saia usando o Shred loucamente. Se isso não funcionar, tente o Libtrash.

As opções do Shred

E como se usa esse comando? A primeira coisa a se fazer, como de costume, é executar um man shred e um shred –help. O Shred pode sobrescrever os arquivos várias vezes. A quantidade de vezes é especificada pela linha de comando: -n 5, por exemplo, fará o programa sobrescrever um arquivo cinco vezes (o padrão é 25). Você picotou o arquivo, mas agora você quer exclui-lo e ocultar o fato de que fez isso. Como ocorre em muitos comandos do GNU/Linux, é possível combinar tudo. Para picotar, sobrescrever e excluir um arquivo chamado coisas_secretas.txt é só digitar shred -u -z coisas_secretas.txt. Se você tiver que se certificar de que o arquivo foi picotado e excluído, acompanhe o andamento do processo adicionando -v: o comando shred exibirá “0” ou algum outro número (como o Kpackage faz) para indicar o sucesso ou o fracasso da operação, respectivamente.

Só mais uma coisa: você pode acrescentar -f. Isso permite usar o shred em arquivos nos quais você não tem permissão. Se você também quiser ver como o Shred realmente funciona, chame-o sem nenhum parâmetro, e será possível exibir o lixo de um arquivo picotado. Digite shred coisas_secretas.txt e depois dê um cat coisas_secretas.txt, e o terminal vai mostrar o que o Shred fez com o arquivo. Depois é só usar opções como -u -v para concluir o serviço.

Caso não acredite nas afirmações dos desenvolvedores do Shred, é possível pô-las à prova com o debugfs (que é parte dos utilitários do e2fsprogs). Como sempre, dê um man debugfs antes de experimentar o programa. Vamos supor, por exemplo, que você tenha excluído arquivos sem usar o Shred em uma determinada partição. O debugfs pode ser usado para listar esses arquivos: entre com debugfs /dev/hda2 (obviamente substituindo a parte final do comando pela partição desejada) para abrir um prompt. Digite lsdel e o debugfs irá listá-los com seus números de inode e datas de exclusão, dados que podem ser usados em uma tentativa de recuperação pelo comando dump.

É importante destacar que esse comando funciona melhor com partições do que com arquivos individuais, já que alguns sistemas de arquivos fazem backups. Pode parecer que reinstalar sua distro ou reformatar o disco seja seguro, mas ferramentas competentes podem farejar as informações, então é bom saber o que o shred pode fazer pelas partições — com uma condição. Não é possível picotar a partição a partir da qual o comando é executado. Você vai precisar de um live CD para uma limpeza completa, e como vamos excluir uma partição inteira ou um HD inteiro, faz sentido limitar o número de vezes que os arquivos serão sobrescritos; caso contrário, pode cair bem dar uma relida em Guerra e Paz para passar o tempo.

Sobrescrever quantas vezes?

Você pode ficar com o padrão ou definir o número por conta própria. Por padrão, o governo norte-americano sobrescreve os arquivos várias vezes, mas há registros apócrifos de arquivos que foram recuperados depois de serem sobrescritos quatorze vezes. O padrão do Shred é 25, mas no secure-delete, logo abaixo, é 38.

O Shred com esteróides

O Shred certamente é um comando poderoso, mas não cobre todas as possibilidades. Para isso você vai precisar de algo ainda mais poderoso; os usuários do Ubuntu estão com sorte, porque têm ao seu dispor uma ferramenta que pode lidar com dados na RAM, no espaço livre e no swap. Outras distros podem baixar o arquivo tar compactado. Basta um apt-get install secure-delete no console (como root — su) e um destes comandos:

  • srm secreto.txt — exclui arquivos e diretórios com segurança.
  • smem — elimina os dados da memória para acabar com possíveis dados residuais.
  • sfill mountpoint/ — limpa o espaço livre do disco. Deve ser usado com um live CD, possivelmente como root.
  • sswap — limpa as partições de swap usadas quando a RAM está cheia. Use junto com o smem.

Para o último comando é preciso desativar o swap primeiro. É só abrir o /etc/fstab ou digitar cat /proc/swaps para descobrir onde o swap está montado e desativá-lo com um sudo swapoff/dev/hda2 (insira os detalhes da sua partição swap). O swap já pode ser limpo com um sudo sswap /dev/hda2 e reativado com um sudo swapon/dev/hda2.

Uma das maiores vantagens do Secure-delete sobre o Shred é que ele não usa apenas dados aleatórios e zeros, mas também aplica técnicas de criptografia desenvolvidas por Peter Gutmann (que se descreve como um “paranóico profissional”). O método Gutmann é um algoritmo para a exclusão segura de arquivos e HDs baseado em seu paper sobre a exclusão segura de arquivos em memórias magnéticas e em estado sólido. Se preferir, você pode baixar e queimar um CD com o DBAN, que inclui o método de Gutmann e o Mersenne twister. Essa é a ferramenta para a exclusão de dados com segurança. Se ela é boa o suficiente para agências governamentais, incluindo a Real Polícia Montada do Canadá, é boa o suficiente para mim. Se não houver um binário para sua distro, sempre há um pacote tar compactado do SRM (secure delete) no Sourceforge.

É claro que você pode optar pelo tradicional comando dd, mais associado a backups da MBR e à criação de imagens de discos inteiros. É bem simples: dd if=/dev/zero of=/dev/hda para sobrescrever um HD com uma série de zeros ou dd if=/dev/urandom of=/dev/hda que sobrescreve o HD com dados aleatórios (embora alguns afirmem que ele usa uma pseudo-aleatoriedade). Mas se você acha que o dd é muito básico e não pode competir com a relativa granularidade do Shred ou do Secure-delete, há quem discorde. A equipe da 16 Systems lançou o “Grande Desafio do Zero”, que desafia empresas profissionais de recuperação de dados a recuperarem um arquivo e uma pasta de um HD que tenha sido limpo pelo comando dd. Até agora, ninguém reclamou o prêmio.

Se nada der certo

Independente dos métodos e motivos que o levem a limpar um HD ou excluir partições, diretórios e arquivos, vale a pena usar os poderosos comandos que fazem parte de praticamente todas as distros GNU/Linux. Esses comandos podem tirar você de enrascadas mais rápido do que você entrou nelas.

Se nenhuma dessas alternativas lhe agradarem, ou se você for um paranóico incurável, acho que só uma breve incursão ao galpão nos fundos do quintal vai dar conta. Separe um espaço para uma destruição da pesada (é, arranje outro lugar para aquelas “revistas raras” que você guarda por lá), saque de uma bela britadeira e prepare um tanque de ácido sulfúrico para pulverizar o HD. Mas mesmo assim…

Créditos a Gary Richmond – freesoftwaremagazine.com
Tradução por Roberto Bechtlufft <roberto at bechtranslations.com>

[Voltar]