Cómo eliminar archivos de forma segura en Linux

Abra el disco duro en la bandeja de intercambio en caliente
Biehler Michael / Shutterstock.com

Triture los archivos de datos antiguos por la misma razón por la que tritura los documentos en papel antiguos. Te contamos lo que necesitas saber sobre la eliminación segura de archivos Linux. Este tutorial cubre el shredcomando y el secure-deleteconjunto de utilidades.

Los archivos eliminados son normalmente recuperables

Eliminar un archivo en realidad no lo elimina de su disco duro. Todo depende de la forma en que su sistema de archivos usa los inodos. Estas son las estructuras de datos dentro del sistema de archivos que contienen los metadatos relacionados con los archivos. El nombre del archivo, su posición en el disco duro, los atributos y permisos que tiene, etc., se almacenan dentro de 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 elimina 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. Imagina 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 todavía está en el estante. Simplemente es más difícil de encontrar.

En otras palabras, el espacio que fue utilizado por el archivo ahora está libre para ser utilizado por otros archivos. Pero el contenido del archivo antiguo todavía se encuentra en ese espacio. Hasta que se sobrescriba ese espacio, es muy probable que se pueda recuperar el archivo.

Pero deshacerse completamente 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 tradicionales (HDD) y no deben usarse con unidades de estado sólido (SSD). No funcionará y provocará escrituras adicionales y un desgaste innecesario de su SSD. Para borrar de forma segura los datos de un SSD, debe utilizar la utilidad proporcionada por el fabricante de su SSD.

El comando Shred

shred está diseñado para realizar la sobrescritura por usted, de modo que un archivo eliminado no se pueda recuperar. Está incluido en todas las distribuciones de Linux que se probaron durante la investigación de este artículo, incluidas 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 por completo del disco duro.

Podemos ver la estructura del árbol de directorios usando el treecomando de la siguiente manera. La -dopción (directorio) hace treeque se muestren solo los directorios y no todos los archivos. La estructura del árbol de directorios se ve así:

árbol -d

estructura de árbol de directorios en una ventana de terminal

Trituración de un solo archivo

Para triturar 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 shrednos dice lo que está haciendo.
  • z : Realiza una sobrescritura final con ceros.
triturar -uvz Preliminary_Notes.txt_01.txt

shred -uvz Preliminary_Notes.txt_01.txt en una ventana de terminal

shredsobrescribe el archivo cuatro veces de forma predeterminada. Las primeras tres pasadas usan datos aleatorios y la pasada final usa ceros, como solicitamos. Luego elimina el archivo y sobrescribe algunos de los metadatos en el inodo

Relacionado:  Cómo usar el comando strings en Linux

triturar haciendo cuatro pasadas

Configuración del número de pasadas de sobrescritura

Podemos solicitar shredusar más o menos pases de sobrescritura usando la -nopción (número). shredsiempre usará al menos una pasada. El número que proporcionamos aquí es el número de pases adicionales que debemos shredrealizar. Por shredeso siempre haremos una pasada más del número que pedimos. Para obtener tres pases en total, solicitamos dos pases adicionales:

triturar -uvz -n 2 Preliminary_Notes.txt_02.txt

shred -uvz -n 2 Preliminary_Notes.txt_02.txt en una ventana de terminal

Como era de esperar, shredrealiza tres pases.

triturar haciendo tres pasadas en una ventana de terminal

Menos pasadas, menos trituraciones si lo desea, es obviamente más rápido. ¿Pero es menos seguro? Curiosamente, tres pases son probablemente más que suficientes.

Trituración de varios archivos

Se pueden utilizar comodines shredpara seleccionar grupos de archivos que se borrarán. El  * representa varios caracteres y  ? representa un solo carácter. Este comando eliminaría todos los archivos «Preliminary_Notes» restantes en el directorio de trabajo actual.

triturar -uvz -n 2 Notas_ preliminares _ *. *

shred -uvz -n 2 Preliminary_Notes _ *. * en una ventana de terminal

Los archivos restantes son procesados ​​por  shredturno.

salida de shred en una ventana de terminal

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

El problema de eliminar archivos de forma segura

Tan bueno como shredestá, hay un problema. Los sistemas de archivos de registro en diario modernos, como ext3 y ext4, realizan enormes esfuerzos para garantizar que no se rompan, se corrompan o pierdan datos. Y con los sistemas de archivos de registro por diario, no hay garantía de que la sobrescritura se esté realizando en el espacio del disco duro utilizado por el archivo eliminado.

Si lo único que busca es tener la tranquilidad de que los archivos se han eliminado un poco más a fondo de rmlo que lo habría hecho, entonces shredprobablemente esté bien. Pero no cometa el error de pensar que los datos definitivamente se han ido y son totalmente irrecuperables. Posiblemente ese no sea el caso.

La suite de eliminación segura

Los secure-delete comandos intentan superar los mejores esfuerzos de los sistemas de archivos de diario y 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é realizando en la región del disco duro que necesita para borrar el archivo de interés. Hay más posibilidades, pero no hay garantía.

Los secure-deletecomandos utilizan la siguiente secuencia de sobrescrituras y acciones:

  • 1 sobrescribir 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.
  • Truncar el archivo.

Si todo eso le parece excesivo, está en buena compañía. También le parece excesivo a Peter Gutmann, 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 utilizar todas las técnicas discutidas en ese artículo a la vez.

Desde entonces, Peter Gutmann ha intentado volver a meter al genio en la botella diciendo: «Un buen lavado con datos aleatorios funcionará tan bien como se puede esperar».

Relacionado:  Cómo usar el comando finger en Linux

Pero estamos donde estamos, y esta es la variedad de técnicas empleadas por los secure-deletecomandos. Pero primero, necesitamos instalarlos.

Instalación de eliminación segura

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

sudo apt-get install eliminación segura

sudo apt-get install secure-delete en una ventana de terminal

Hay cuatro comandos incluidos en el secure-deletepaquete.

  1.  srmes una herramienta segura que se rmutiliza para borrar archivos eliminándolos y sobrescribiendo el espacio de su disco duro.
  2. sfill es una herramienta para sobrescribir todo el espacio libre en su disco duro.
  3. sswap se utiliza para sobrescribir y limpiar su espacio de intercambio.
  4. sdmem se utiliza para limpiar tu RAM.

El comando srm

Usa el srmcomando de la misma manera que lo haría rm. Para eliminar un solo archivo, use el siguiente comando. La -zopción (ceros) hace smrque se utilicen ceros para el borrado final en lugar de datos aleatorios. La -vopción (verbosa) srmnos informa de su progreso.

srm -vz Chapter_One_01.txt

srm -vz Chapter_One_01.txt en una ventana de terminal

Lo primero que notará es que srmes lento. Proporciona algunos comentarios visuales mientras está funcionando, pero es un alivio cuando vuelve a ver el símbolo del sistema.

salida de srm en una ventana de terminal

Puede usar la -lopción (disminuir la seguridad) para reducir la cantidad de pases a dos, lo que acelera las cosas de manera espectacular.

srm -lvz Chapter_One_02.txt

srm -lvz Chapter_One_02.txt en una ventana de terminal

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

Salida de srm en una ventana de terminal

Puede utilizar la opción -l (reducir la seguridad) dos veces para reducir el número de pases a uno.

srm -llvz Chapter_One_03.txt

srm -llvz Chapter_One_03.txt en una ventana de terminal

Usando srm con varios archivos

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

srm -vc Chapter_One_0? .txt

srm -vc Chapter_One_0? .txt en una ventana de terminal

Los archivos son procesados ​​por srmturno.

srm limpiando varios archivos en una ventana de terminal

Eliminando directorios y su contenido con srm

La -ropción (recursiva) srmeliminará todos los subdirectorios y su contenido. Puede pasar la ruta al primer directorio a srm.

En este ejemplo, borramos 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 -vz * en una ventana de terminal

srm comienza a procesar los directorios y archivos.

srm comenzando a procesar en una ventana de terminal

Eventualmente lo regresa al símbolo del sistema. En la máquina de prueba en la que se investigó este artículo, se tardó aproximadamente una hora en eliminar unos 200 archivos distribuidos entre el directorio actual y tres directorios anidados.

srm completo en una ventana de terminal

Todos los archivos y subdirectorios se eliminaron como se esperaba.

El comando sfill

¿Qué pasa si le preocupa un archivo que ha eliminado usando rm, cómo puede repasar ese viejo terreno y asegurarse de que se sobrescriba? El sfillcomando sobrescribirá todo el espacio libre en su disco duro.

Mientras hace esto, notará que tiene cada vez menos espacio libre en su disco duro, hasta el punto en que no hay espacio libre en absoluto. Cuando se sfillcompleta, le devuelve todo el espacio libre. Si está administrando un sistema multiusuario, esto sería muy perturbador, por lo que esta es una tarea de mantenimiento que debe realizarse fuera de horario.

Incluso en una computadora de un solo usuario, la pérdida de espacio en el disco duro significa que es inutilizable una vez que se sfillha utilizado la mayor parte del espacio. Esto es algo de lo que comenzarías y luego te alejarías.

Relacionado:  Cómo usar el comando sed en Linux

Para intentar acelerar un poco las cosas, puede utilizar la -lopción (reducir la seguridad). Las otras opciones son las opciones -v(detallado) y -z  (ceros) que hemos visto anteriormente. Aquí, le pedimos sfillque sobrescriba de forma segura todo el espacio libre en el directorio / home.

sudo sfill -lvz / home

sudo sfill -lvz / home en una ventana de terminal

Póngase 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.

sfill salida en una ventana de terminal

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

El comando sswap

El sswapcomando sobrescribe el almacenamiento en su partición de intercambio. Lo primero que debemos hacer es identificar su partición de intercambio. Podemos hacer esto con el blkidcomando, que enumera los dispositivos de bloque.

sudo blkid

sudo blkid en una ventana de terminal

Debe ubicar la palabra «intercambio» y anotar el dispositivo de bloqueo al que está conectado.

salida de blkid en una ventana de terminal

Podemos ver que la partición de intercambio está conectada /dev/sda5.

Necesitamos desactivar las escrituras de disco en la partición de intercambio mientras dure la sobrescritura. Usaremos el swapoffcomando:

sudo swapoff / dev / sda5

sudo swapoff / dev / sda5 en una ventana de terminal

Ahora podemos usar el sswapcomando.

Usaremos /dev/sda5como parte de la línea de comando para el sswapcomando. También usaremos la -vopción (verbosa) y las opciones -ll(reducir la seguridad), que usamos anteriormente.

sudo sswap -llv / dev / sda5

sudo sswap -llv / dev / sda5 en una ventana de terminal

sswapcomienza a abrirse camino a través de su partición de intercambio, sobrescribiendo todo lo que contiene. No toma tanto tiempo como sfill. Simplemente se siente así.

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

sudo swapon / dev / sda5

sudo swapon / dev / sda5 en una ventana de terminal

El comando sdmem

El secure-deletepaquete incluso contiene una herramienta para limpiar los chips de memoria de acceso aleatorio (RAM) de su computadora.

Un ataque de arranque en frío requiere acceso físico a su computadora poco después de que se apaga. Este tipo de ataque puede, potencialmente, permitir la recuperación de datos de sus chips de RAM.

Si cree que necesita protegerse contra este tipo de ataque, y sería una exageración para la mayoría de las personas pensar que es necesario, puede borrar la RAM antes de apagar la computadora. Usaremos las opciones -v(detallado) y -ll(reducir la seguridad) una vez más.

sudo sdmem -vll

sudo sdmem -vll en una ventana de terminal

La ventana de la terminal se llenará de asteriscos como una indicación de que se sdmemestá abriendo camino a través de su RAM.

salida de sdmem en una ventana de terminal

La opción fácil: simplemente cifre su disco

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

Si lo hace, nadie podrá acceder a nada, ya sea un archivo en vivo o un archivo eliminado. Y no tiene que estar en guardia y recordar borrar de forma segura los archivos confidenciales porque todos sus archivos ya están protegidos.

La mayoría de las distribuciones de Linux preguntan si desea utilizar el cifrado en el momento de la instalación. Decir «sí» evitará muchas molestias futuras. No puede tratar con información confidencial o confidencial. Pero si cree que puede regalar o vender la computadora a otra persona cuando haya terminado con ella, el cifrado también lo simplificará.