Borrado seguro y permanente de archivos en GNU/Linux

borrado

Un aspecto importante y que cualquier especialista en Seguridad Informática, cualquier persona preocupada por su privacidad o una costumbre que debería estar presente entre todas las personas que utilizan un computador, debe ser el borrado seguro de archivos.

Normalmente cuando usted borra un archivo en un sistema, el proceso parece realizarse a toda velocidad. Apenas uno o dos segundos después de eliminar un documento de nuestro equipo, deja de estar ante nuestros ojos. ¿Cómo ha pasado todo? ¿Los datos se han esfumado para siempre? En realidad, el cambio es ínfimo y todo sigue prácticamente como estaba.

Cada vez que borramos un archivo de nuestro ordenador, como si fuera arte de magia, se esfuma obedientemente de la pantalla. Sin embargo, no todo es lo que parece: por un lado, apenas hay cambios en el equipo cuando lo hacemos y, por otro, como es lógico, no hay ilusionismo alguno detrás de este proceso.

Para empezar, cuando guardamos un documento en un disco duro tradicional, lo que hacemos en realidad es ocupar una serie de bloques (cada uno de ellos tiene unos 4 kb) enlazados entre sí. Pasado el tiempo, cuando decidimos acabar con él y le ordenamos al equipo que lo elimine, en realidad no se borra absolutamente nada.

Lo que sucede es bien distinto: Cuando borramos un fichero, nos vamos al primer bloque y hacemos una marca indicando que ese archivo ya no está disponible. Además, la tabla a la que recurre el sistema para conocer la ubicación exacta de un documento cambia. El primer carácter del nombre del fichero se modifica, y así pasa a estar perdido para el equipo. De esta forma, el proceso de borrado solo se ha llevado a cabo a ojos del sistema operativo, que será incapaz de volver a encontrarlo (al menos, sin la ayuda de un 'software' de recuperación).

Sin embargo, los datos siguen ahí, ocupando los bloques. Pero la marca que tiene el primero de ellos sirve, además, para que el equipo sepa que están disponibles. Así, cuando vayamos a copiar otro fichero, si esos bloques se ajustaran al nuevo que queremos guardar, los utilizaríamos.

Será entonces cuando la eliminación del archivo original se haga efectiva: los datos desaparecerán y, en su lugar, se grabarán los del nuevo archivo. De hecho, el borrado de la información podría ser parcial. Si acabamos con un archivo de, por ejemplo, dos 'gigas', y el equipo usa su espacio para guardar algo de solo un 'giga', los demás bloques permanecerán intactos.

Ahora que conocemos cual es la realidad detrás del proceso de borrado de archivos, vamos explicar como realizar un borrado seguro y permanente de los archivos en nuestro sistema, las herramientas necesarias y una breve explicación de cada una, las cuales básicamente siguen un principio: sobre-escribir con datos random los bloques ocupados por un fichero. Eso implica mayor tiempo al borrar archivos, el cual es proporcional a la cantidad y el peso de los archivos.

Borrado de archivos en GNU/Linux

· Shred

Es una utilidad que viene con todos los sistemas operativos GNU/Linux y hace parte del paquete coreutils. sobrescribir un archivo para ocultar su contenido y, opcionalmente, eliminarlo. Esto hace que sea imposible recuperar un archivo cuando se siguen los procedimientos correctos para su eliminación con shred.

Si usted ejecuta en su terminal de GNU/Linux man shred obtendrá toda la información necesaria para realizar un borrado seguro, sin embargo aquí explicaré las opciones más útiles:

-n : es la cantidad de iteraciones de sobre-escritura que se realizarán sobre el archivo.

-u : indica que el archivo debe ser borrado al finalizar el proceso de sobre-escritura.

-v : muestra el progreso de la operación.

Un comando muy útil para el borrado de archivos sería el siguiente:

shred -v -n 30 -u archivo_para_eliminar

Aquí un ejemplo:

[email protected] ~ ->
 ➤➤➤➤ ▶ shred -v -n 30 -u prueba.sh 
shred: prueba.sh: pass 1/30 (random)...
shred: prueba.sh: pass 2/30 (999999)...
shred: prueba.sh: pass 3/30 (924924)...
shred: prueba.sh: pass 4/30 (492492)...
shred: prueba.sh: pass 5/30 (aaaaaa)...
shred: prueba.sh: pass 6/30 (6db6db)...
shred: prueba.sh: pass 7/30 (888888)...
shred: prueba.sh: pass 8/30 (555555)...
shred: prueba.sh: pass 9/30 (222222)...
shred: prueba.sh: pass 10/30 (ffffff)...
shred: prueba.sh: pass 11/30 (random)...
shred: prueba.sh: pass 12/30 (edb6db)...
shred: prueba.sh: pass 13/30 (bbbbbb)...
shred: prueba.sh: pass 14/30 (dddddd)...
shred: prueba.sh: pass 15/30 (5b6db6)...
shred: prueba.sh: pass 16/30 (000000)...
shred: prueba.sh: pass 17/30 (800000)...
shred: prueba.sh: pass 18/30 (249249)...
shred: prueba.sh: pass 19/30 (b6db6d)...
shred: prueba.sh: pass 20/30 (666666)...
shred: prueba.sh: pass 21/30 (random)...
shred: prueba.sh: pass 22/30 (111111)...
shred: prueba.sh: pass 23/30 (333333)...
shred: prueba.sh: pass 24/30 (777777)...
shred: prueba.sh: pass 25/30 (444444)...
shred: prueba.sh: pass 26/30 (c92492)...
shred: prueba.sh: pass 27/30 (cccccc)...
shred: prueba.sh: pass 28/30 (eeeeee)...
shred: prueba.sh: pass 29/30 (db6db6)...
shred: prueba.sh: pass 30/30 (random)...
shred: prueba.sh: removing
shred: prueba.sh: renamed to 000000000
shred: 000000000: renamed to 00000000
shred: 00000000: renamed to 0000000
shred: 0000000: renamed to 000000
shred: 000000: renamed to 00000
shred: 00000: renamed to 0000
shred: 0000: renamed to 000
shred: 000: renamed to 00
shred: 00: renamed to 0
shred: prueba.sh: removed

Desafortunadamente, la utilidad shred no cuenta con una opción para borrar archivos de manera recursiva, pero podemos hacerlo usando la utilidad find + shred, sería lo siguiente:

find /directorio -type f -exec shred -n 30 -u {} \;

Aquí hemos evitado la opción -v ya que no sería muy cómodo ver 30 iteraciones + proceso de renombramiento + proceso de eliminación, por cada archivo que eliminemos.

En artículos siguientes explicaré como realizar un proceso similar en los demás sistemas operativos más usados.

Síguenos en FacebookTwitterunete a nuestro chat en Matrix y no olvides compartirnos en las redes sociales. También puede hacernos una donación o comprar nuestros servicios.

Acerca del autor

Especialista en Seguridad Informática bajo certificación OSCP, especialista en técnicas de privacidad y seguridad en la red, desarrollador back-end, miembro de la FSF y Fundador de Security Hack Labs. Entusiasta de la tecnología y amante de GNU/Linux. Twitter: @edu4rdshl XMPP/Email: [email protected]