
Tengo un servidor (físicamente) remoto que me gustaría destruir de forma segura. Desafortunadamente, el disco está particionado con una única partición raíz grande y nada más. ¿Puedo utilizarlo de manera confiable dd
para borrar el dispositivo que contiene el sistema de archivos raíz?
Algo simple como:
$ sudo nohup dd if=/dev/urandom of=/dev/sda bs=1024
Obviamente, nunca veré el resultado del trabajo, por lo que no podré verificar que se haya completado correctamente. Los programas dd
y nohup
deben ser lo suficientemente pequeños y no hay nada más ejecutándose en el servidor en este momento, por lo que no hay razón para que esos programas sean expulsados de la memoria mientras se ejecutan. ¿Se ejecutarán hasta su finalización o es probable que el kernel entre en pánico en algún momento antes de que dd
se complete?
Estoy contemplando otras posibilidades, pero las preguntaré en preguntas separadas.
Respuesta1
Sí, esto esabsolutamenteposible, pero requiere algo de trabajo.
La mayor parte de la respuesta está disponible en StackExchange, pero la resumiré aquí con enlaces a las fuentes que tienen muchos más detalles y merecen crédito por su excelente información.
- Cree un entorno Linux base en memoria y cámbielo usando
pivot_root
. - Asegúrese de poder acceder al servidor desde el exterior mediante
ssh
. Limpia el dispositivo raíz.
# nohup dd if=/dev/urandom of=/dev/sda bs=512 > wipe.log &
A intervalos, no dudes en comprobar el progreso de
dd
, ya que normalmente no te da ninguna indicación de progreso.# kill -USR1 [ddpid]
Vuelva más tarde y verifique que el proceso se haya completado (verifique el archivo de registro). Eche un vistazo al disco para verificar que tenga basura aleatoria en lugar de un sistema de archivos real. Límpielo una segunda (o tercera) vez si lo desea.
Decide qué hacer a continuación.
Si lo desea, simplemente puede detenerse aquí y alejarse. Cuando la máquina se apague, tendrá un dispositivo que no se puede iniciar y que será tan seguro como usted decida
dd
.Lo que decidí hacer a continuación es intentar algo que no había hecho antes: construir un sistema base Linux de forma remota. Entonces continué:
Úselo
fdisk
para volver a particionar el dispositivo raíz como desee y úselomkfs
para crear sistemas de archivos en esas particiones.- Usar
debootstrap
ainstalar un entorno base Debianen el (futuro) sistema de archivos raíz. chroot
al nuevo entorno base, instale paquetes adicionales (p. ej.sshd
), un kernel y un gestor de arranque (p. ej.grub
, asegúrese de que el gestor de arranque realmente se instale en el dispositivo, no instale simplemente el paquete).- Úselo
root_pivot
para cambiar al nuevo entorno de la misma manera que lo hizo en el paso 1 anterior. Abra todos los servicios (por ejemplo,sshd
) para asegurarse de poder acceder al servidor, por ejemplo, a través dessh
. - Reiniciar. Su nuevo sistema operativo debería estar listo para funcionar.
Respuesta2
En un entorno empresarial, querrá tener algún tipo de administración fuera de banda, como IPMI, iDRAC u otra solución KVM remota. Usaría ese sistema para iniciar desde un LiveCD donde se podría realizar y confirmar el borrado. Si su objetivo es el borrado seguro, entonces debe verificar la operación. No puedes simplemente decir "Bueno, se suponía que iba a funcionar". Porque incluso si se supone que funciona, eso no significa que lo haya hecho. Algunos sistemas IPMI le permiten iniciar de forma remota desde una ISO que tenga de forma remota. Podrías usar algo simple como una imagen DBAN.
Respuesta3
Esta no es una gran respuesta, pero logré hacer algo similar. Estoy sudo dd if=./bootcd-usb-debug.iso of=/dev/sda
escribiendo una iso de ReactOS en lo que pretendía que fuera mi unidad USB, pero como no verifiqué si era mi sistema Linux en ejecución. Ojalá pueda recuperar mis datos.