Drive rígido Ritmo no Linux

Drive rígido Ritmo no Linux

Quando excluímos um arquivo de um sistema de arquivos, os dados não são removidos fisicamente: o sistema operacional simplesmente marca a área anteriormente ocupada pelo arquivo, como livre e o disponibiliza para armazenar novas informações. A única maneira de garantir que os dados sejam realmente removidos de um dispositivo é substituí -los com outros dados. Podemos querer executar essa operação por motivos de privacidade (talvez planejemos vender o dispositivo e queremos ter certeza de que o novo proprietário não pode acessar nossos dados), ou talvez preparar um dispositivo para criptografia. Neste tutorial, veremos algumas ferramentas que podemos usar para limpar completamente os dados em um dispositivo

Neste tutorial, você aprenderá:

  • Como rasgar dados usando DD
  • Como proteger arquivos e dispositivos
  • Como substituir dados usando badblocks


Requisitos de software e convenções usadas

Requisitos de software e convenções de linha de comando Linux
Categoria Requisitos, convenções ou versão de software usada
Sistema Independente da distribuição
Programas DD, fragmento ou badblocks
Outro
  • Familiaridade com o shell Bash e a interface da linha de comando Linux
Convenções # - requer que os comandos Linux sejam executados com privilégios root diretamente como usuário root ou por uso de sudo comando
$ - Requer que os comandos do Linux sejam executados como um usuário não privilegiado regular

Apagando dados usando DD

DD é um programa muito poderoso incluído por padrão em todas as principais distribuições Linux. Em um artigo anterior, vimos como usar o DD em detalhes; Nesse caso, tudo o que queremos fazer é substituir o conteúdo do nosso dispositivo hipotético de bloco com zeros ou dados aleatórios. Nos dois casos, podemos usar dados gerados por arquivos "especiais": /dev/zero e Dev/Urandom (ou /dev/aleatório) respectivamente. O primeiro retorna zeros sempre que uma operação de leitura é realizada nela; Este último retorna bytes aleatórios usando o gerador de números aleatórios do kernel Linux.

Para encher o disco com zeros, podemos executar:

$ sudo dd if =/dev/zero de =/dev/sdx

Para usar dados aleatórios, em vez disso:

$ sudo dd if =/dev/urandom de =/dev/sdx


Usando um contêiner Luks como gerador de dados aleatório

Substituir um dispositivo com dados aleatórios é uma operação demorada, mas pode ser útil especialmente se planejarmos usar a criptografia completa do disco, a fim de tornar a parte usada e não utilizada dos discos indistinguível. Para acelerar o processo, podemos usar um pouco de "truque": podemos criar um Luks(Linux Unified Key Setup) Contêiner no dispositivo ou na partição que queremos preencher com dados aleatórios e escrever zeros. Graças à criptografia, os dados serão escritos transparentemente no dispositivo subjacente como aleatório.

Primeiro de tudo, criamos o Luks recipiente:

$ sudo CryptsetupUp LuksFormat /Dev /Sdx Aviso! ======== Isso substituirá os dados sobre /dev /sdx irrevogavelmente. Tem certeza? (TIPO UPERCASE SIM): Sim, digite a senha para /dev /sdx: verifique senha:

Nesse caso, não é realmente necessário usar uma senha forte, já que estamos usando o contêiner como um gerador de dados aleatório, e vamos acabar com que a operação seja concluída. Depois que o contêiner estiver pronto, nós o abrimos executando o seguinte comando:

$ sudo CryptsetupUp Luksopen /dev /sdx cripted Enter Passphrase para /dev /sdx:

Agora que o contêiner está aberto, podemos usar DD e preenchê -lo com zeros. Muito importante: escrevemos para o recipiente Luks mapeado como /dev/mapper/cripto, não no subjacente /dev/sdx dispositivo diretamente:

$ sudo dd if =/dev/zero de =/dev/mapper/criptografia bs = 1m

Depois que todos os dados foram escritos, fechamos o contêiner e substituímos o cabeçalho Luks com dados aleatórios. O tamanho do cabeçalho depende do formato de Luks Em uso: é 2mib para o legado Luks formato e 16mib para o LUKS2 formato, que se tornou o padrão nas versões recentes do CryptSetup. Só para ter certeza, podemos substituir os primeiros 20mib do disco:

$ sudo Cryptsetup Luksclose/dev/mapper/criptoed $ sudo dd if =/dev/urandom de =/dev/sdx bs = 1m contagem = 20


Apagando dados usando o Shred

O nome deste utilitário é bastante auto -explicativo: seu principal objetivo, conforme declarado no manual, é substituir arquivos e opcionalmente excluí -lo. O Destruir A utilidade depende da suposição de que o sistema de arquivos substitui os dados. O aplicativo pode não nos deixar alcançar o resultado esperado, por exemplo, em sistemas de arquivos diários, como o Ext4 (provavelmente o sistema de arquivos Linux mais usado), se for montado com o Data = Journal opção.

Ao montar um sistema de arquivos ext4, com o dados = ordenados ou dados = writeback Opções (o primeiro é o padrão), os dados são gravados no sistema de arquivos principal após o Metadados está comprometido com o diário. Em ambos os casos, Destruir funciona bem, produzindo os resultados esperados.

Ao usar o Data = Journal Opção, em vez disso, não apenas os metadados, mas os dados em si são gravados no The FileSystem Journal, antes de serem gravados no sistema de arquivos principais. É fácil ver por que isso pode causar problemas.

Vamos ver alguns exemplos do uso do aplicativo. Suponha que desejemos delireto em um arquivo chamado "teste". Tudo o que precisamos fazer é executar o seguinte comando (aqui usamos o -v opção para tornar o programa mais detalhado):

$ Shred -V Teste Shred: Teste: Passe 1/3 (Random)… Shred: Teste: Passe 2/3 (Random)… Shred: Teste: Passe 3/3 (aleatório)… 

Por padrão, o aplicativo substitui o arquivo especificado 3 tempos com dados aleatórios. O número de passes pode ser alterado usando o -n (abreviatura de --iterações) opção. Para substituir o arquivo 6 vezes que executamos:

Shred -v -n 6 Teste PRYTE: Teste: Passe 1/6 (Random)… Shred: Teste: Passe 2/6 (000000)… PERSILHO: Teste: Passe 3/6 (55555)… PERSILHO: TESTE: PASSE 4/ 6 (FFFFFF)… PERSIDO: Teste: Passe 5/6 (AAAAAAA)… PERSILHO: Teste: Passe 6/6 (aleatório)… 

Existem alguns casos em que queremos esconder o fato de que uma operação de trituração foi realizada em um arquivo ou dispositivo. Nessas situações, podemos usar o programa -z (abreviatura de --zero) Opção para fazer o programa executar um passe adicional com Zeroes após o trituração:

$ Shred -v -n 6 -z Teste Shred: Teste: Pass 1/7 (Random)… PRYSTRA: Teste: PASS 2/7 (FFFFFF)… Shred: Teste: Passe 3/7 (AAAAAA)… Shred: Teste: Passe 4/7 (555555)… PERSILHO: Teste: Passe 5/7 (000000)… Shred: Teste: Passe 6/7 (aleatório)… Shred: Teste: Passe 7/7 (000000)… 


A partir da saída detalhada do comando, podemos realmente notar como o último passe é realizado escrevendo zeros (000000). Podemos verificar isso executando o Hexdump programa no arquivo:

$ HEXDUMP Teste 0000000 0000 0000 0000 0000 0000 0000 0000 0000 * 0008000 

Excluindo o arquivo

Se dermos uma olhada no sistema de arquivos depois de executar um dos comandos em exemplos acima, podemos notar que, embora substituído com dados aleatórios, o próprio arquivo não foi excluído: isso acontece porque o comando também pode ser usado em arquivos que representam inteiro Bloquear dispositivos ou partições (e.g /Dev/SDA), e esses não devem ser excluídos.

Ao operar em arquivos comuns, no entanto, podemos querer também negociar um arquivo do sistema de arquivos depois de substituí -lo. Para alcançar esse comportamento, podemos usar o -você ou o --remover opções. Ambas as opções fazem com que um arquivo seja excluído, mas com o último também podemos especificar como a exclusão deve ser realizada. Podemos dar um toque entre:

  • desvincular: O arquivo é removido usando um padrão desvincular chamada do sistema;
  • limpar: bytes no nome do arquivo são ofuscados antes da exclusão;
  • WipeSync: Os bytes ofuscados também são sincronizados com o disco;

O WipeSync modo é o padrão.

Apagando dados usando badblocks

Apesar de Badblocks O objetivo principal do utilitário é procurar blocos ruins, usando um modo de gravação Teste disruptivo, podemos efetivamente substituir e proteger dados existentes em um dispositivo. Tudo o que precisamos fazer é lançar o comando e especificar o -c Opção: o teste será realizado pela primeira escrita e depois lendo o 0XAA, 0x55, 0xff e 0x00 padrões de dados em cada bloco e compare o conteúdo.

Podemos usar o -s e -v Opções, para fazer o programa exibir informações de progresso e o número de erros de leitura e gravação encontrados. Para limpar nosso dispositivo, executaríamos, portanto, funcionaríamos:

$ sudo badblbocks -WSV /dev /sdx Verificando para blocos ruins no modo de leitura -gravação do bloco 0 a 3870719 testes com padrão 0XAA: ^C6.30% feito, 0:41 decorrido. (Erros 0/0/0)

Para executar o comando acima, o dispositivo deve ser desmontado, caso contrário, Badblocks se recusará a correr a menos que a operação seja forçada com o -f opção. O número padrão de blocos testados por vez é 64; Podemos, no entanto, alterar este parâmetro usando o -c opção.

Conclusões

Neste artigo, vimos três utilitários que podemos usar para destruir dados em um dispositivo e alguns exemplos de seu uso. Dd e Destruir fazem parte dos utilitários do GNU Core, então eles quase certamente já estão instalados no seu sistema. Badblocks é um software usado para testar a existência de blocos ruins: ao executar um teste de leitura de write com ele, podemos substituir dados em um dispositivo. Observe que a eficácia da troca de dados depende também do tipo de dispositivo em uso: unidades de estado sólido, por exemplo, precisam lidar com fenômenos como a amplificação de gravação.

Tutoriais do Linux relacionados:

  • Coisas para instalar no Ubuntu 20.04
  • Recupere sua privacidade e segurança na era digital
  • Coisas para fazer depois de instalar o Ubuntu 20.04 fossa focal linux
  • Como usar o Google Drive no Linux
  • Como particionar a unidade USB no Linux
  • Como comparar o desempenho do disco no Linux
  • Como particionar uma unidade no Linux
  • Criptografia de disco completo com veracrypt no Ubuntu Linux
  • Mint 20: Melhor que o Ubuntu e o Microsoft Windows?
  • Uma introdução à automação, ferramentas e técnicas do Linux