Cómo cifrar discos, particiones y archivos usando LUKS en Linux Debian

El cifrado de datos en discos duros o SSD, particiones y archivos es esencial hoy en día. Actualmente tenemos la posibilidad de cifrar los datos de un servidor NAS, un ordenador de sobremesa e incluso un portátil. Sobre todo, en los portátiles es donde más se necesita el cifrado de datos, ya que si lo perdemos podrían acceder a todos nuestros datos, al igual que si perdiéramos nuestro disco duro o pendrive. Hoy en este artículo te vamos a enseñar a cifrar todo el contenido del disco duro desde cero, usando LUKS en Linux.

En los sistemas operativos Linux tenemos muchas opciones para cifrar datos en Linux, por example, podemos usar dm-crypt, LUKS, eCryptfs e incluso programas como Veracrypt que son realmente versátiles y muy recomendables. LUKS (Linux Unified Key Setup) nos permite cifrar discos, particiones y también volúmenes lógicos que creamos en nuestro ordenador. Algunas de las ventajas que tiene LUKS frente a otros es que su uso es realmente sencillo, sin tener que configurar ni ejecutar comandos complicados, viene incluido en el propio kernel, por lo tanto, el rendimiento a la hora de cifrar/descifrar datos será muy alto, debemos También hay que tener en cuenta que podemos gestionar la clave de cifrado como queramos.

Vamos a dividir este tutorial claramente en dos secciones, en la primera sección te enseñaremos a instalar un sistema operativo Debian con cifrado en toda la partición, cifrada por defecto, y en la segunda sección te enseñaremos a cifrar el computadora una vez que Debian se instala normalmente, no hay cifrado en la partición por defecto. Un detalle muy importante es que la partición orientada al “arranque” no estará encriptada, para permitir la lectura de la información, sino que el resto del disco estará encriptado con LUKS, ya sean particiones o volúmenes lógicos (LVM).

Instale Debian o Linux con cifrado LUKS por defecto

En el asistente de instalación de Debian, ya sea con la interfaz gráfica de usuario completa, o con el asistente de instalación con interfaz mínima, tenemos la posibilidad de configurar todo el disco con un LVM encriptado, para tener la máxima confidencialidad cuando usemos la computadora, porque todos los datos en la partición del sistema y los datos serán encriptados.

Simplemente tendremos que elegir “Guiado – Usar todo el disco y configurar LVM encriptado”, luego elegimos el disco, y seleccionamos si queremos todo en una partición o separarlo por particiones, esto no importa porque podemos separar el / Partición de casa en otra.

Nos indicará que, si queremos guardar todos los cambios realizados, es muy recomendable utilizar LVM para posteriormente ampliar o disminuir su capacidad. Una vez lo hayamos hecho, el sistema operativo se encargará de borrar todo el disco con datos aleatorios para mejorar la seguridad y evitar la recuperación de datos. Esto llevará un tiempo, dependiendo del tamaño del disco que hayamos seleccionado.

Una vez finalice nos indicará que pongamos la contraseña de cifrado, para cifrar y descifrar el disco con esta contraseña. Como mínimo se recomienda poner 8 caracteres, pero nuestra recomendación es poner al menos 12 caracteres, utilizando una contraseña segura. Una vez terminado nos saldrá un resumen de todo lo que hará el asistente de instalación de Debian en nuestro disco, lo más importante es la parte de “cifrado sda5_scrypt”, un detalle importante es que el /boot no estará encriptado, y tampoco el intercambio (swap), por lo tanto, le recomendamos que nunca use ningún intercambio, ni lo cifre después.

Una vez que hemos visto todo lo que se va a hacer, indicamos que queremos escribir los cambios en el disco, y también instalar el cargador de arranque en el grub, seleccionando el disco /dev/sda que tenemos.

Una vez hayamos terminado la instalación nos saldrá el grub, y elegiremos la primera opción, o dejaremos pasar el tiempo. Automáticamente nos pedirá la contraseña para poder iniciar el sistema operativo, si no ingresamos la contraseña directamente, no podrá iniciarse, porque todo está encriptado. Si introducimos la clave, veremos como los diferentes servicios empiezan a arrancar en Debian.

Si queremos comprobar las particiones que hemos creado podemos poner el siguiente comando:

lsblk --fs

Si queremos ver las características de LUKS (algoritmo de cifrado simétrico utilizado, longitud de clave, etc.), podemos poner el siguiente comando:

cryptsetup luksDump /dev/sda5

El /dev/sda5 es en nuestro caso, si has hecho una instalación diferente es posible que estos datos cambien. Como puede ver, LUKS encripta todos los datos con AES-XTS en su versión de 512 bits, usa un PBKDF argon2i y un hash SHA256.

Como has podido comprobar, configurar nuestro sistema operativo con Linux por defecto es realmente sencillo, tan solo debemos seguir los pasos del asistente de configuración, sin tener que hacer nada más. Una vez que sabemos cómo cifrar todos los datos por defecto, veamos cómo hacerlo cuando el sistema operativo ya está instalado.

Configure el cifrado LUKS en un sistema ya instalado sin cifrado previo

En este apartado del tutorial vamos a ver cómo podemos cifrar particiones cuando ya están creadas, e incluso cómo podemos cifrar cualquier archivo con LUKS que tengamos en el sistema operativo. Realizaremos estas pruebas con un sistema Debian 10 sin tener nada encriptado por defecto, ni partición del sistema, ni datos ni nada.

Lo primero que tenemos que hacer es instalar LUKS en el sistema operativo, ya que no viene instalado por defecto si no lo hemos utilizado en el asistente de instalación. La instalación se realiza directamente desde el repositorio oficial de Debian de la siguiente manera:

sudo apt install cryptsetup

Una vez instalado, podemos utilizarlo para cifrar el contenido de discos duros, particiones o cualquier dispositivo de almacenamiento extraíble.

Antes de empezar, sesiempre es recomendable formatear completamente la partición y reescribir los datos, para tener la mayor seguridad posible, de esta forma, toda la partición o disco se reescribirá con información aleatoria, por lo que será muy difícil o casi imposible recuperar la información. Actualmente LUKS no permite encriptar el disco o partición cuando está en uso, por lo tanto, tendríamos que hacerlo desde otro equipo. Además, debe hacer uso de ”cryptsetup-recifrarque nos ayudará a volver a cifrar completamente la partición, sin pérdida de datos, aunque sería muy recomendable que antes de hacerlo hicieras una copia de seguridad de los archivos importantes. Esta herramienta le permite cifrar los datos en el dispositivo local de LUKS, pero la partición no debe estar en uso.

Cifre cualquier disco o partición (con pérdida de datos)

Lo primero que tenemos que hacer es crear una nueva partición en el disco, para utilizarla posteriormente. Ejecutamos el siguiente comando:

sudo fdisk /dev/sdb

Y seguimos poniendo “n” para crear una nueva partición, ponemos “p” para que sea primaria, y aceptamos los valores que nos indican tener una partición de todo el disco duro, si queremos hacerla más pequeña, hacemos Habrá que modificar los sectores para esta partición en particular.

Una vez que hayamos hecho esto, debemos poner la partición sdb1 recién creada con el formato LUKS, para ello ejecutamos el siguiente comando:

sudo cryptsetup luksFormat /dev/sdb1

Ponemos en mayúscula “SI”, ingresamos la contraseña que queremos, y esperamos a que esté lista.

Si ejecutamos el comando:

lsblk -f

Podremos ver todos los discos duros, las particiones y el sistema de archivos que estamos usando. Deberíamos ver que en sdb1 tenemos “crypto_LUKS” como aparece aquí:

Una vez que lo hayamos hecho, tendremos que abrir esta partición con LUKS que acabamos de crear, para ello ponemos el comando:

cryptsetup luksOpen /dev/sdb1 particioncifrada

Introducimos la contraseña, y luego volvemos a ejecutar «lsblk -f» y aparecerá «partición cifrada», que es el nombre identificador que le hemos dado, pero podemos cambiarlo en cualquier momento.

Ahora tenemos que darle formato de archivo a esta partición, lo normal sería hacerlo con EXT4 también, para ello ponemos el siguiente comando:

mkfs.ext4 /dev/mapper/particioncifrada

Y ya tendremos el sistema de archivos EXT4 en esta partición cifrada.

Ahora debemos montar la partición en un directorio, para ello debemos crear en /home o donde queramos el punto de montaje:

mkdir -p /home/bron/particioncifrada/archivos

Y ahora tenemos que montarlo:

mount /dev/mapper/particioncifrada /home/bron/particioncifrada/archivos

Y si accedemos al directorio «/home/bron/partitioncryption/files» podremos escribir todos los datos que queramos, el cifrado es sobre la marcha y totalmente transparente.

Si reiniciamos el equipo, la unidad no se montará, ni tendremos la partición abierta con LUKS, por lo tanto, cada vez que reiniciemos y queramos acceder a esta partición, tendremos que hacer lo siguiente:

cryptsetup luksOpen /dev/sdb1 particioncifrada

Ingresamos la contraseña cuando se nos solicite, y volvemos a montar la unidad:

mount /dev/mapper/particioncifrada /home/bron/particioncifrada/archivos

Si queremos que se abra y se monte automáticamente al principio del sistema operativo, tendremos que editar los archivos /etc/crypttab y /etc/fstab para poner esta partición, pero nuestra recomendación es que montes la unidad manualmente y pide la contraseña, por seguridad, porque si no, tendrás que guardar la clave en texto plano en la partición /boot/.

Ahora sabemos todo lo que debemos saber para poder encriptar discos completos o particiones usando LUKS y haciéndolo directamente desde Linux, incluso cuando el sistema ya está funcionando, tendremos que tener cuidado con nuestras contraseñas, pero estaremos hablando de un sistema tremendamente seguro con cifrado de datos.

Artículos Relacionados