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.
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 |
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 |
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”.
Fuente noticia: protegermipc.net Fuente foto: bonaval.com