Cómo eliminar archivos de forma segura en Linux

Debes destruir los archivos con datos antiguos por la misma razón que trituras los documentos en papeles viejos.

Te diremos lo que necesitas saber sobre la eliminación segura de archivos de Linux.

Este tutorial cubre el comando shred y el conjunto de utilidades secure-delete.

Los archivos eliminados son normalmente recuperables

Eliminar un archivo en realidad no lo borra de tu disco duro. Todo se debe a la forma en que tu sistema de archivos usa inodes.

Estas son las estructuras de datos dentro del sistema de archivos que contienen los metadatos con respecto a los archivos.

El nombre del archivo, su posición en el disco duro, qué atributos y permisos tiene, etc., se almacenan en un inodo.

Un directorio no es más que un archivo en sí mismo. Uno que contiene los nombres y números de inodo de los archivos que contiene el directorio.

Cuando eliminas un archivo con rm, el sistema de archivos libera el inodo apropiado y ajusta el archivo de directorio.

Esto marca el espacio en el disco duro que el archivo solía ocupar como no utilizado.

Imagínate que entras en una biblioteca y revisas el índice de la tarjeta, encuentras la tarjeta del catálogo de un libro y la rompes.

El libro todavía está en el estante. Pero es más difícil de encontrar.

En otras palabras, el espacio que fue utilizado por el archivo ahora es libre para ser utilizado por otros archivos.

Pero el contenido del archivo antiguo todavía se encuentra en ese espacio.

Hasta que se sobreescriba ese espacio, existe una buena posibilidad de que se pueda recuperar el archivo.

Pero deshacerse por completo de un archivo no es tan sencillo como simplemente sobrescribirlo. Como ya veremos.

No hagas esto con SSD

Estas técnicas son para unidades de disco duro electromecánicas (HDD) tradicionales y no deben usarse con unidades de estado sólido (SSD).

No funcionará y causará escrituras adicionales y desgaste innecesario en tu SSD.

Para borrar de forma segura los datos de un SSD, debes usar la utilidad proporcionada por el fabricante de tu SSD.

Comando shred

shred está diseñado para realizar la sobrescritura para que un archivo eliminado no se pueda recuperar.

Viene en todas las distribuciones de Linux que probamos durante la realización de este artículo, incluidos Ubuntu, Fedora y Manjaro.

En este ejemplo, vamos a trabajar en un directorio llamado ~/research, que contiene muchos archivos de texto.

También contiene algunos otros directorios que a su vez contienen otros archivos.

Asumiremos que estos archivos son confidenciales y deben borrarse completamente del disco duro.

Podemos ver la estructura de árbol de directorios usando el tree comando de la siguiente manera. La opción -d (directorio) hace que tree solo se enumeren los directorios y no se enumeren todos los archivos. La estructura del árbol de directorios se ve así:

 

Destruir un solo archivo

Para destruir un solo archivo, podemos usar el siguiente comando. Las opciones que estamos usando son:

  • u: Desasignar y eliminar el archivo después de sobrescribirlo.
  • v: opción detallada, por lo que shred nos dice lo que está haciendo.
  • z: realiza una sobrescritura final con ceros.

shred sobrescribe el archivo cuatro veces por defecto.

Los primeros tres pases (ciclos) usan datos aleatorios, y el pase final usa ceros, como solicitamos.

Luego elimina el archivo y sobrescribe algunos de los metadatos en el inodo

Establecer el número de ciclos de sobrescritura

Podemos indicar a shred usar más o menos ciclos de sobrescritura utilizando la opción –n (número).

shred siempre usará al menos un ciclo. El número que proporcionamos aquí es el número de ciclos adicionales que debe realizar shred.

Por lo tanto, shred, siempre hará un ciclo más que el número que pedimos. Para obtener tres ciclos en total, solicitamos dos ciclos adicionales:

Como era de esperar, shred realiza tres ciclos.

Menos ciclos, menos destrucción si lo deseas, es obviamente más rápido.

¿Pero es menos seguro? Tres ciclos, curiosamente, es probablemente más que suficiente.

Destruir múltiples archivos

Los comodines se pueden usar con shred para seleccionar grupos de archivos que se borrarán.

El  * representa múltiples caracteres, y ? representa un único caracter.

El siguiente comando eliminaría todos los archivos restantes “Preliminary_Notes” en el directorio de trabajo actual.

Los archivos restantes se procesan por shred en turnos.

shred no tiene una opción recursiva, por lo que no se puede usar para borrar árboles de directorios de directorios anidados.

El problema con la eliminación segura de archivos

Tan bueno como shred es, el uso de este conlleva un problema.

Los sistemas de archivos journaling modernos, como ext3 y ext4, hacen grandes esfuerzos para garantizar que no se dañen, se corrompan o pierdan datos.

Y con los sistemas de archivos de registro diario, no hay garantía de que la sobrescritura se realice realmente en el espacio del disco duro utilizado por el archivo eliminado.

Si todo lo que buscas es tranquilidad de que los archivos se han eliminado un poco más de lo que rm lo hubiera hecho, entonces shred probablemente esté bien.

Pero no cometas el error de pensar que los datos definitivamente se han ido y son totalmente irrecuperables. Posiblemente ese no sea el caso.

Suite secure-delete

Los comandos secure-delete intentan superar los mejores esfuerzos de registro en los sistemas de archivos y lograr sobrescribir el archivo de forma segura.

Pero se aplican exactamente las mismas advertencias. Todavía no hay garantía de que la sobrescritura se esté llevando a cabo realmente en la región del disco duro que necesitas para borrar el archivo de interés.

Hay más posibilidades, pero no hay garantía.

Los comandos secure-delete usan la siguiente secuencia de sobrescrituras y acciones:

  • 1 sobrescribe con 0xFF bytes de valor.
  • 5 sobrescribe con datos aleatorios.
  • 27 sobrescribe con valores especiales definidos por Peter Gutmann.
  • 5 sobrescrituras más con datos aleatorios.
  • Cambia el nombre del archivo a un valor aleatorio.
  • Truncar el archivo.

Si todo eso te parece excesivo, estás en buena compañía. También parece excesivo para Peter Gutmann, profesor de la Universidad de Aukland.

Publicó un artículo en 1996 discutiendo estas técnicas, de las cuales surgió el mito urbano de que debes usar todas las técnicas discutidas en ese documento a la vez.

Desde entonces, Peter Gutmann ha intentado recuperar el genio en la botella diciendo: “Un buen fregado con datos aleatorios funcionará tan bien como se puede esperar”.

Pero estamos donde estamos, y estas son la variedad de técnicas empleadas por los comandos de secure-delete. Pero primero, necesitamos instalarla.

Instalar Secure-Delete

Usa apt-get para instalar este paquete en tu sistema si estás usando Ubuntu u otra distribución basada en Debian.

En otras distribuciones de Linux, debes usar la herramienta de administración de paquetes de tu distribución de Linux.

Hay cuatro comandos incluidos en el paquete secure-delete.

  1.  srm es security rm, se utiliza para borrar archivos eliminándolos y sobrescribiendo su espacio en el disco duro.
  2. sfill es una herramienta para sobrescribir todo el espacio libre en tu disco duro.
  3. sswap se utiliza para sobrescribir y limpiar tu espacio de intercambio.
  4. sdmem se usa para limpiar tu RAM.

Comando srm

Usarías el comando srm tanto como usarías el comando rm.

Para eliminar un solo archivo, utiliza el siguiente comando. La opción –z (ceros) hace que smr use ceros para el borrado final en lugar de datos aleatorios.

La opción –v (detallada) de srm nos informa del progreso.

Lo primero que notarás es que srm es lento.

Proporciona algunos comentarios visuales mientras está funcionando, pero es un alivio cuando vuelves a ver el símbolo del sistema.

Puedes usar la opción –l (disminuir la seguridad) para reducir el número de ciclos a dos, lo que acelera las cosas drásticamente.

srm nos informará que esto, en su opinión, es menos seguro, pero aun así elimina y sobrescribe el archivo para nosotros.

Puedes usar la opción -l (disminuir la seguridad) dos veces, para reducir el número de ciclos a uno.

Usar srm con múltiples archivos

También podemos usar comodines con srm. Este comando suprimirá y borrará las partes restantes de chapter one:

Los archivos son procesados ​​por srm en turnos.

Eliminar directorios y sus contenidos con srm

La opción –r (recursiva) de srm eliminará todos los subdirectorios y sus contenidos. Puedes pasar la ruta al primer directorio a srm.

En este ejemplo, estamos eliminando todo el directorio actual, ~/research. Esto significa que todos los archivos en ~/research y todos los subdirectorios se eliminan de forma segura.

srm comienza a procesar los directorios y archivos.

Eventualmente te regresa al símbolo del sistema.

En la máquina de prueba en la que se realizó este artículo, esto tomó alrededor de una hora para eliminar unos 200 archivos distribuidos entre el directorio actual y tres directorios anidados.

Todos los archivos y subdirectorios se eliminaron como esperábamos.

Comando sfill

¿Qué sucede si te preocupa un archivo que has eliminado usando rm, cómo puedes repasar ese antiguo terreno y asegurarte de que se sobrescriba?

El comando sfill sobrescribirá todo el espacio libre en tu disco duro.

Al hacerlo, notarás que tienes cada vez menos espacio libre en tu disco duro, hasta el punto en que no hay espacio libre en absoluto.

Cuando se completa sfill, te devuelve todo el espacio libre.

Si estás administrando un sistema multiusuario, esto sería muy perjudicial, por lo que esta es una tarea de mantenimiento que debe realizarse con mucha precaución.

Incluso en una computadora de un solo usuario, la pérdida de espacio en el disco duro significa que no se puede usar una vez que se sfill ha utilizado la mayor parte del espacio.

Esto es algo de lo que comenzarías y luego te alejarías.

Para intentar acelerar un poco las cosas, puedes usar la opción –l (disminuir la seguridad).

Las otras opciones son las opciones –v (detalladas) y -z (ceros) que hemos visto anteriormente.

Aquí, le pedimos a sfill que sobrescriba de forma segura todo el espacio libre en el directorio /home.

¡¡¡Ponte cómodo!!!

En la computadora de prueba, que solo tiene un disco duro de 10 GB, esto se inició a media tarde y se completó en algún momento durante la noche.

Se moverá por horas. Y esto es con la opción –l (disminuir la seguridad). Pero, eventualmente, volverá al símbolo del sistema.

Comando sswap

El comando sswap sobrescribe el almacenamiento en tu partición de intercambio (swap).

Lo primero que debemos hacer es identificar tu partición swap. Podemos hacer esto con el comandob lkid, que enumera los dispositivos.

Debes localizar la palabra “swap” y anotar el dispositivo al que está conectada.

Podemos ver que la partición swap está conectada a /dev/sda5.

Necesitamos desactivar las escrituras de disco en la partición swap durante la sobrescritura. Usaremos el comando swapoff:

Ahora podemos usar el comando sswap.

Usaremos /dev/sda5 como parte de la línea de comandos para el comando sswap.

También usaremos la opción –v (detallada) y –ll (disminuir seguridad), que usamos anteriormente.

sswap comienza a abrirse camino a través de tu partición swap, sobrescribiendo todo lo que contiene.

No lleva tanto tiempo como sfill. Simplemente debes comprobarlo tú.

Una vez que se haya completado, necesitamos restablecer la partición swap como un espacio de intercambio activo. Hacemos esto con el comando swapon:

Comando sdmem

El paquete secure-delete incluso contiene una herramienta para borrar los chips de memoria de acceso aleatorio (RAM) en tu computadora.

Un ataque de arranque en frío requiere acceso físico a tu computadora poco después de que se apaga.

Este tipo de ataque puede, potencialmente, permitir la recuperación de datos de tus chips RAM.

Si crees que necesitas protegerte contra este tipo de ataques, y sería difícil para la mayoría de las personas pensar que necesita hacerlo, puedes limpiar tu RAM antes de apagar tu computadora.

Usaremos las opciones –v (detallado) y –ll una vez más.

La ventana de la terminal se llenará de asteriscos como una indicación de que sdmem está funcionando a través de tu RAM.

La opción fácil: simplemente cifra tu unidad

En lugar de eliminar archivos de forma segura, ¿por qué no proteger tu disco duro o tu carpeta de inicio utilizando cifrado?

Si haces eso, nadie puede acceder a nada, ya sea un archivo activo o un archivo eliminado.

Y no tienes que estar en guardia y recordar borrar archivos confidenciales de forma segura porque todos tus archivos ya están protegidos.

La mayoría de las distribuciones de Linux te preguntan si deseas usar el cifrado en el momento de la instalación.

Decir “sí” ahorrará muchas molestias futuras. No puedes tratar información secreta o sensible.

Pero si crees que puedes regalar o vender la computadora a otra persona cuando hayas terminado, el cifrado también lo simplificará.