Linux

Linux: ¿cómo eliminar archivos de forma segura?

Destruya archivos de datos antiguos por la misma razón por la que destruye documentos en papel antiguos. Le decimos lo que necesita saber sobre la eliminación segura de archivos de Linux. Este tutorial cubre el comando de destrucción y el conjunto de utilidades de eliminación segura.

Los archivos eliminados son normalmente recuperables

La eliminación de un archivo no lo elimina realmente del disco duro. Todo se debe a la forma en que tu sistema de archivos usa inodos. Estas son las estructuras de datos dentro del sistema de archivos que contienen los metadatos de 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 inode de los archivos que contiene el directorio.

Cuando borra un fichero con rm, el sistema de ficheros libera el inodo apropiado y ajusta el fichero del 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 tarjetas, encuentras la tarjeta del catálogo de un libro y la rompes. El libro sigue en la estantería. Es más difícil de encontrar.

En otras palabras, el espacio que usaba el archivo es ahora libre para ser usado por otros archivos. Pero el contenido del viejo archivo aún está en ese espacio. Hasta que ese espacio sea sobrescrito, hay una buena posibilidad de que el archivo pueda ser recuperado.

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

No hagas esto con las SSD’s

Estas técnicas son para las unidades de disco duro electromecánicas tradicionales (HDD) y no deben utilizarse con unidades de estado sólido (SSD). No funcionará y causará escritura extra y desgaste innecesario en su SSD. Para borrar de forma segura los datos de una unidad SSD, debe utilizar la utilidad proporcionada por el fabricante de la unidad SSD.

El comando Shred

shred está diseñado para realizar la sobrescritura por usted, por lo que un archivo eliminado no se puede recuperar. Está incluido en todas las distribuciones de Linux que fueron probadas durante la investigación para este artículo, incluyendo 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. Vamos a asumir que estos archivos son sensibles y deben ser borrados completamente del disco duro.

Podemos ver la estructura del árbol de directorios usando el comando de árbol de la siguiente manera. La opción -d (directorio) hace que el árbol sólo liste directorios, y no todos los archivos. La estructura del árbol de directorios tiene el siguiente aspecto:

tree -d

Trituración de una sola instalación

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 Verbosa, de modo que la tira nos dice lo que está haciendo.
z: Realiza una sobrescritura final con ceros.

shred -uvz Preliminary_Notes.txt_01.txt

Linux

shred sobrescribe el archivo cuatro veces por defecto. Los tres primeros pasos utilizan datos aleatorios, y el último paso utiliza ceros, como pedimos. A continuación, elimina el archivo y sobrescribe algunos de los metadatos del inode.

Linux

Ajuste del número de pases de sobreescritura

Podemos pedirle a Shred que use más o menos pasadas de sobreescritura usando la opción -n (número). Shred siempre usará al menos una pasada. El número que proporcionamos aquí es el número de pasadas adicionales que requerimos triturar para realizar. Así que Shred siempre hará una pasada más que el número que pedimos. Para obtener tres pases en total, solicitamos dos pases adicionales:

shred -uvz -n 2 Notas_preliminares.txt_02.txt

Linux

Como era de esperar, Shred hace tres pasadas.

Linux

Menos pasadas -menos trituraciones si se quiere- es obviamente más rápido. ¿Pero es menos seguro? Tres pases, curiosamente, es probablemente más que suficiente.

Trituración de múltiples campos

Los comodines se pueden utilizar con el destructor para seleccionar los grupos de archivos que se van a borrar. El asterisco () representa varios caracteres y el asterisco () representa un solo carácter. Este comando borraría todos los archivos «Preliminary_Notes» restantes en el directorio de trabajo actual.

shred -uvz -n 2 Preliminary_Notes_.

El resto de los archivos se procesan por turnos.

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

El problema de eliminar archivos de forma segura

Por muy buena que sea, hay un problema. Los sistemas de archivos de diario modernos como ext3 y ext4 hacen un gran esfuerzo para asegurar que no se rompan, se corrompan o pierdan datos. Y con los sistemas de archivos de registro en diario, no hay garantía de que la sobrescritura se esté produciendo realmente en el espacio del disco duro utilizado por el archivo eliminado.

Si todo lo que busca es la tranquilidad de saber que los archivos han sido borrados un poco más a fondo de lo que rm lo habría hecho, entonces destruir está bien. Pero no cometa el error de pensar que los datos definitivamente han desaparecido y son totalmente irrecuperables. Es muy posible que ese no sea el caso.

La suite de eliminación segura

Los comandos de borrado seguro intentan superar los mejores esfuerzos de los sistemas de archivos de journaling y conseguir sobrescribir el archivo de forma segura. Pero exactamente las mismas advertencias se aplican. Todavía no hay garantía de que la sobrescritura se esté produciendo en la región del disco duro que usted necesita para borrar el archivo de interés. Hay más posibilidades, pero no hay garantías.

Los comandos de borrado seguro utilizan la siguiente secuencia de sobreescrituras y acciones:

1 sobreescritura con bytes de valor 0xFF.
5 sobrescribe con datos aleatorios.
27 sobrescribe con valores especiales definidos por Peter Gutmann.
5 sobrescrituras más con datos aleatorios.

Cambie el nombre del archivo a un valor aleatorio.

Trunca el archivo.

Si todo eso te parece excesivo, estás en buena compañía. También le parece excesivo a Peter Gutmann, un profesor de la Universidad de Aukland. Publicó un artículo en 1996 discutiendo estas técnicas, de donde surgió el mito urbano de que es necesario usar todas las técnicas discutidas en ese artículo a la vez.

Desde entonces, Peter Gutmann ha intentado meter al genio de nuevo en la botella diciendo: «Un buen fregado con datos aleatorios es lo mejor que se puede esperar».

Pero estamos donde estamos, y estas son las técnicas empleadas por los comandos de borrado seguro. Pero primero, tenemos que instalarlos.

Instalación de borrado seguro: eliminar

Utilice apt-get para instalar este paquete en su sistema si está utilizando Ubuntu u otra distribución basada en Debian. En otras distribuciones de Linux, use en su lugar la herramienta de administración de paquetes de su distribución de Linux.

sudo apt-get install secure-delete

Linux

Hay cuatro comandos incluidos en el paquete de eliminación segura de Linux.

srm es un rm seguro, usado para borrar archivos borrándolos y sobrescribiendo su espacio en el disco duro.

sfill es una herramienta para sobrescribir todo el espacio libre de su disco duro.

sswap se utiliza para sobrescribir y limpiar el espacio de intercambio.

sdmem se utiliza para limpiar su RAM.

El comando srm

Usas el comando srm de la misma manera que usarías el comando rm. Para eliminar un único archivo, utilice el siguiente comando. La opción -z (ceros) hace que smr utilice ceros para el borrado final en lugar de datos aleatorios. La opción -v (verbosa) hace que srm nos informe de su progreso.

srm -vz Chapter_One_01.txt

Lo primero que notará es que el srm es lento. Proporciona alguna retroalimentación visual mientras funciona, pero es un alivio cuando vuelve a ver la línea de comandos.

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

srm -lvz Chapter_One_02.txt

srm nos informa que esto, en su opinión, es menos seguro, pero aún así borra y sobrescribe el archivo por nosotros.

Puede utilizar la opción -l (disminuir la seguridad) dos veces, para reducir el número de pasadas a una.

srm -llvz Chapter_One_03.txt

Uso de srm con varios archivos

También podemos usar comodines con srm en Linux. Este comando borrará y limpiará las partes restantes del capítulo uno:

srm -vc Chapter_One_0?.txt

Los archivos son procesados por srm a su vez.

Borrar directorios y sus contenidos con srm

La opción -r (recursiva) hará que srm borre todos los subdirectorios y sus contenidos. Puede pasar la ruta al primer directorio a srm.

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

srm -vz *

srm comienza a procesar los directorios y archivos.

Con el tiempo, regresa a la línea de comandos. En la máquina de prueba en la que se investigó este artículo, se tardó alrededor de una hora en eliminar unos 200 archivos distribuidos entre el directorio actual y tres directorios anidados.

Todos los archivos y subdirectorios fueron eliminados como se esperaba.

El comando sfill

¿Qué pasa si estás preocupado por un archivo que has borrado usando rm, cómo puedes repasar esa vieja base y asegurarte de que está sobreescrito? El comando sfill sobrescribirá todo el espacio libre de su disco duro.

Al hacer esto, notará que tiene cada vez menos espacio libre en su disco duro, hasta el punto de que no hay espacio libre en absoluto. Cuando sfill se completa, libera todo el espacio libre de vuelta a usted. Si está administrando un sistema multiusuario, esto sería muy perturbador, por lo que se trata de una tarea de mantenimiento que debe llevarse a cabo fuera de horas.

Incluso en un ordenador de un solo usuario, la pérdida de espacio en el disco duro significa que es inutilizable una vez que sfill ha utilizado la mayor parte del espacio. Esto es algo que usted comenzaría y luego se alejaría.

Para tratar de acelerar un poco las cosas, puedes usar la opción -l (disminuir la seguridad). Las otras opciones son las opciones -v (verboso) 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.

sudo sfill -lvz /home

Póngase cómodo. En el ordenador de prueba de Linux, que sólo tiene un disco duro de 10 GB, se inició a media tarde y se completó en algún momento de la noche a la mañana.

Se agitará durante horas. Y esto es con la opción -l (disminuir la seguridad). Pero, eventualmente, volverá a la línea de comandos.

El comando sswap

El comando sswap sobrescribe el almacenamiento de la partición swap. Lo primero que tenemos que hacer es identificar su partición swap. Podemos hacerlo con el comando blkid, que lista los dispositivos de bloqueo.

sudo blkid

Necesita localizar la palabra «swap», y anotar el dispositivo de bloque al que está conectado.

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

Necesitamos desactivar las escrituras de disco en la partición swap durante el tiempo que dure la sobreescritura. Usaremos el comando swapoff:

sudo swapoff /dev/sda5

Ahora podemos usar el comando sswap en Linux.

Usaremos /dev/sda5 como parte de la línea de comandos para el comando sswap. También usaremos las opciones -v (verboso) y -ll (disminuir la seguridad), que usamos anteriormente.

sudo sswap -llv /dev/sda5

sswap comienza a abrirse camino a través de su partición de intercambio, sobrescribiendo todo lo que hay en ella. No toma tanto tiempo como rellenar. Se siente como si lo fuera.

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

sudo swapon /dev/sda5

El Comando sdmem

El paquete de eliminación segura incluso contiene una herramienta para limpiar los chips de memoria de acceso aleatorio (RAM) del equipo.

Un ataque de arranque en frío requiere acceso físico al equipo poco después de apagarlo. Este tipo de ataque puede, potencialmente, permitir la recuperación de datos de sus chips RAM.

Si cree que necesita protegerse contra este tipo de ataque, y sería difícil para la mayoría de las personas pensar que lo necesitan, puede borrar la memoria RAM antes de apagar el equipo. Usaremos las opciones -v (verboso) y -ll (disminuir la seguridad) una vez más.

sudo sdmem -vll

La ventana del terminal se llenará de asteriscos como indicación de que sdmem está trabajando a través de su RAM.

La opción fácil: Sólo tiene que cifrar su unidad de Linux

En lugar de eliminar archivos de forma segura, ¿por qué no proteger su disco duro o su carpeta personal mediante el cifrado?

Si haces eso, nadie puede acceder a nada, ya sea un archivo vivo o un archivo eliminado. Además, no tiene que estar alerta y recordar borrar de forma segura los archivos confidenciales, ya que todos los archivos ya están protegidos.

La mayoría de las distribuciones de Linux preguntan si desea usar encriptación en el momento de la instalación. Decir «sí» ahorrará muchas molestias en el futuro. Usted no puede tratar con información secreta o sensible. Pero si usted piensa que puede dar o vender la computadora a otra persona cuando haya terminado con ella, el cifrado también simplificará eso.


¿Tienes alguna pregunta o problema relacionado con el tema del artículo? Queremos ayudarte.

Deja un comentario con tu problema o pregunta. Leemos y respondemos todos los comentarios, aunque a veces podamos tardar un poco debido al volumen que recibimos. Además, si tu consulta inspira la escritura de un artículo, te notificaremos por email cuando lo publiquemos.
*Moderamos los comentarios para evitar spam.

¡Gracias por enriquecer nuestra comunidad con tu participación!

Deja un comentario