Posso usar com segurança 'dd' para limpar o sistema de arquivos raiz em um servidor Linux em execução?

2

Eu tenho um servidor (fisicamente) remoto que gostaria de destruir com segurança. Infelizmente, o disco é particionado com uma única partição raiz grande e nada mais. Posso usar com fiabilidade dd para limpar o dispositivo que contém o sistema de arquivos raiz?

Algo simples como:

$ sudo nohup dd if=/dev/urandom of=/dev/sda bs=1024

Obviamente, nunca verei a saída do trabalho, por isso não poderei verificar se foi concluída com êxito. Os programas dd e nohup devem ser pequenos o suficiente e não há mais nada sendo executado no servidor neste momento, portanto, não há motivo para esses programas serem ejetados da memória enquanto são executados. Eles serão executados até a conclusão, ou o kernel provavelmente entrará em pânico em algum momento antes que dd seja concluído?

Estou pensando em outras possibilidades, mas vou perguntar sobre isso em questões separadas.

    
por Christopher Schultz 02.01.2018 / 17:16

2 respostas

1

Sim , isso é absolutamente possível, mas requer algum trabalho.

A maior parte da resposta está disponível no StackExchange, mas vou resumir aqui com links para as fontes que têm muito mais detalhes e merecem crédito por excelentes informações.

  1. Construa um ambiente Linux de base na memória e mude para ele usando pivot_root .
  2. Garanta que você possa acessar o servidor pelo lado de fora usando ssh .
  3. Limpe o dispositivo raiz.

    # nohup dd if=/dev/urandom of=/dev/sda bs=512 > wipe.log &

  4. Em intervalos, sinta-se à vontade para verificar o progresso de dd , já que isso não costuma indicar o progresso.

    # kill -USR1 [ddpid]

  5. Volte mais tarde e verifique se o processo foi concluído (verifique o arquivo de log). Dê uma olhada no disco para verificar se ele tem lixo aleatório em vez de um sistema de arquivos real. Limpe um segundo (ou terceiro) tempo, se quiser.

  6. Decida o que fazer a seguir.

    Se você quiser, pode simplesmente parar aqui e ir embora. Quando a máquina é desligada, você terá um dispositivo não inicializável que é tão seguro quanto você decide que dd pode fazer isso.

    O que eu decidi fazer em seguida é tentar algo que eu não fiz antes: construir um sistema básico Linux remotamente. Então eu continuei:

  7. Use fdisk para reparticionar o dispositivo raiz conforme desejado e use mkfs para criar sistemas de arquivos nessas partições.

  8. Use debootstrap para Instale um ambiente Debian básico no (futuro) sistema de arquivos raiz.
  9. chroot para o novo ambiente base, instale pacotes adicionais (por exemplo, sshd ) um kernel e um gerenciador de inicialização (por exemplo, grub - certifique-se de que o carregador de boot realmente seja instalado no dispositivo - não instale apenas o pacote).
  10. Use root_pivot para alternar para o novo ambiente da mesma maneira que você fez na etapa 1 acima. Trazer todos os serviços (por exemplo, sshd ) para garantir que você possa acessar o servidor, por exemplo, através de ssh .
  11. Reinicie. Seu novo SO deve estar pronto para ser usado.
por 04.01.2018 / 16:14
1

Em um ambiente corporativo, você gostaria de ter algum tipo de Gerenciamento Out-Of-Band, como um IPMI, iDRAC ou outra solução KVM remota. Você usaria esse sistema para inicializar em um liveCD onde a limpeza poderia ser executada e confirmada. Se o seu objetivo for apagar com segurança, você precisará verificar a operação. Você não pode simplesmente dizer "Bem, isso deveria funcionar". Porque mesmo se for para funcionar, isso não significa que aconteceu. Alguns sistemas IPMI permitem que você inicialize remotamente a partir de um ISO que você tenha remotamente. Você poderia usar algo simples como uma imagem DBAN.

    
por 02.01.2018 / 19:08