Hace no mucho publiqué acerca de cómo formatear un disco duro en Linux (o una partición) desde la terminal. Hoy veremos un concepto parecido aunque diferente, y es como formatear un disco de forma segura, en Linux, desde la linea de comandos.
La linea de comandos vuelve a ser la opción preferida, por el simple hecho de que la compatibilidad será mayor y mejor aceptado el procedimiento entre diferentes sistemas. Por ejemplo, muchos servidores empresariales ni siquiera tienen GUI o entorno gráfico.

Siempre que nos vayamos a deshacer de un dispositivo basado en Linux, sin importar si es un teléfono, ordenador o dispositivo IoT (más aún si lo vamos a vender a un tercero o tirar sin más a la basura) deberíamos formatearlo.

Borrar datos de forma segura en Linux

El concepto de borrar datos es amplio, podríamos estar hablando de archivos concretos, de particiones concretas y, por último, de unidades de disco.
Antes de seguir, podría ser interesante revisar mi artículo sobre técnicas de borrado seguro de discos.

Borrado seguro con HDParm

Hdparm es una utilidad que nos permite asignar propiedades y hacer pruebas de rendimiento en sistemas Linux. Es la base de otros programas con GUI (entorno gráfico) como pueden ser GParted. Con él podemos hacer borrado seguro de unidades de disco.
Debemos instalarlo antes.

1
sudo apt install hdparm

Una vez hecho esto, listaremos las unidades de disco conectadas al sistema.

1
sudo fdisk -l

En mi ejemplo utilizaré /dev/sdb.
Ahora ejecutaremos esto, para determinar si el disco está en estado “congelado” (frozen).

1
hdparm -I /dev/sdb

NOTA: en una unidad extraíble comoun pendrive, no aplica.

También se indica el tiempo estimado por el comando para conseguir el borrado seguro

Si tenemos el texto “not frozen” podemos continuar en el paso posterior al siguiente.
Para descongelar la unidad, escribiremos:

1
echo -n mem > /sys/power/state

Con esto, al poner el dispositivo bajo suspensión, la desbloquearemos.
Volveremos a ejecutar el comando para revisar el estado de la unidad.
Ahora, estableceremos una contraseña segura en la unidad.

1
hdparm --user-master u --security-set-pass p /dev/sdb

Deberíamos ver esta salida:
security_password: “password”

sudo hdparm --user-master u --security-set-pass password /dev/sdb
/dev/sdb:
Issuing SECURITY_SET_PASS command, password="password", user=user, mode=high

Ahora ejecutaremos el borrado seguro de la unidad:

1
hdparm --user-master u --security-erase-enhanced password /dev/sd-b
Borrar unidades en Linux de forma segura con hdparm
He metido un guión en sd-b por si alguien copia/pega y se la pega 🙂

Esperaremos el tiempo estimado, como poco, antes de hacer nada más. Para ver si ha terminado, ejecutaremos de nuevo (esto es opcional):
hdparm -I /dev/sdb
El texto Enabled debería haber desaparecido del apartado Security.

Verificar el borrado seguro de la unidad

Aparte de que el comando finalice, no debemos dar por supuesto sin más que los datos han sido sobreescritos. Tenemos varias formas de verificar rápidamente si la unidad ha sido sanitizada correctamente.

1
dd if=/dev/sda bs=1M count=5

Si no devuelve datos dicho comando, sabemos que en los primeros sectores del disco no existe contenido. Es razonablemente seguro asumir que su totalidad lo ha sido también.
En caso de haber escogido la opción “enhanced” podría haber datos aleatorios.

Borrado seguro con DD

Una de las opciones que podríamos utilizar es la herramienta DD que ya incluyen por defecto los sistemas operativos basados en Linux. Aunque no es la más segura, has de saber.
Sin embargo, dado el escaso nivel de seguridad y el penoso rendimiento (imagen siguiente) es mejor buscar otras opciones.

1
sudo dd if=/dev/urandom of=/dev/<dispositivo> -count=N
borrado seguro de disco en Linux con DD

Leyenda

  • if = Input File u Origen
  • /dev/urandom = generador criptográfico aleatorio
  • of = Fichero de salida o dispositivo
  • count = número de pasadas

También se puede utilizar random en su lugar, aunque es preferible la primera opción.

Borrado seguro de archivos en Linux con Shred

Capítuelo aparte merece la utilidad shred, porque se enfoca exclusivamente a un apartado que no podemos atender con otros como hdparm o dd. Shred se utiliza de forma sencilla y nos permite personalizar sus opciones como sigue:

-f, --force cambia los permisos para permitir la escritura si es necesario
-n, --iterations=N sobreescribe N veces en vez de lo predeterminado (3)
--random-source=FICHERO obtiene bytes aleatorios de FICHERO
-s, --size=N efectúa el `shred' sobre este número de bytes
(se permiten los sufijos K, M y G)
-u deallocate and remove file after overwriting
--remove[=HOW] like -u but give control on HOW to delete; See below
-v, --verbose show progress
-x, --exact do not round file sizes up to the next full block;
this is the default for non-regular files
-z, --zero add a final overwrite with zeros to hide shredding
--help muestra esta ayuda y finaliza
--version informa de la versión y finaliza

Eliminar el contenido de un fichero

Por ejemplo, podemos eliminar un fichero con la sintaxis:

1
sudo shred -vz archivo

Leyenda

  • v para Verbose
  • z para sobrescribir con ceros al final

Es decir, el archivo permanece pero lo sanitizamos. Normalmente no es la opción interesante, sino que queremos deshacernos de cualquier referencia al archivo.

Eliminar un fichero con más pasadas

1
sudo shred -uv -n 10 <archivo>

Leyenda

  • u para eliminar el fichero
  • n para especificar el número de pasadas

Eliminar una carpeta o directorio requiere un diferente procedimiento. Os dejo un ejemplo de como eliminar de forma recursiva un directorio y sus contenidos.

1
find <dir> -type f -exec shred {} \;

Eso sí, con ciertos sistemas de archivos como ReiserFS, XFS, ext3 (con journal/log) o JFS, así como sistemas con RAID, ficheros comprimidos o ubicaciones temporales conviene andarse con cuidado, porque no siempre funciona.

Borrado seguro con Secure Delete

Finalmente, la opción de Secure Delete es más recomendable si queremos un nivel de seguridad más paranoico. Para instalar la utilidad:

1
sudo apt-get install secure-delete

Ahora, para eliminar un fichero haremos esto:

1
srm -rv <ruta/archivo>

Con esto habremos eliminado de forma recursiva y modo “verbose”.

Eliminar directorio de forma segura en Linux
Fuente noticia: protegermipc.net
Fuente foto: bonaval.com