Cómo cifrar unidades usando LUKS en Fedora Linux


En este artículo, explicaremos brevemente sobre el cifrado de bloques, Configuración de clave unificada de Linux (LUKS) y describiremos las instrucciones para crear un dispositivo de bloque cifrado en Fedora Linux.

El cifrado de dispositivo de bloque se utiliza para proteger los datos en un dispositivo de bloque cifrándolo, y para descifrar los datos, un usuario debe proporcionar una frase de contraseña o clave para acceder. Esto proporciona mecanismos de seguridad adicionales, ya que protege el contenido del dispositivo incluso si se ha separado físicamente del sistema.

LUKS (Linux Unified Key Setup) es el estándar para el cifrado de dispositivos de bloque en Linux, que funciona estableciendo un formato en el disco para los datos y una política de administración de contraseña/clave. Almacena toda la información de configuración necesaria en el encabezado de la partición (también conocido como encabezado LUKS), lo que le permite transportar o migrar datos sin problemas.

LUKS utiliza el subsistema mapeador de dispositivos del kernel con el módulo dm-crypt para proporcionar un mapeo de bajo nivel que contiene el cifrado y descifrado de los datos del dispositivo. Puede utilizar el programa cryptsetup para ejecutar tareas a nivel de usuario, como crear y acceder a dispositivos cifrados.

Preparación de un dispositivo de bloque

Las siguientes instrucciones muestran los pasos para crear y configurar dispositivos de bloque cifrados después de la instalación.

Instale el paquete cryptsetup.

# dnf install cryptsetup-luks

A continuación, llene el dispositivo con datos aleatorios antes de cifrarlo, ya que esto aumentará significativamente la fuerza del cifrado utilizando los siguientes comandos.

# dd if=/dev/urandom of=/dev/sdb1	           [slow with high quality random data ]
OR
# badblocks -c 10240 -s -w -t random -v /dev/sdb1  [fast with high quality random data]

Advertencia: Los comandos anteriores borrarán cualquier dato existente en el dispositivo.

Formateo de un dispositivo cifrado

A continuación, utilice la herramienta de línea de comandos cryptsetup para formatear el dispositivo como un dispositivo cifrado dm-crypt/LUKS.

# cryptsetup luksFormat /dev/sdb1

Después de ejecutar el comando, se le pedirá que ingrese YES (en mayúsculas) para proporcionar una frase de contraseña dos veces para que el dispositivo sea formateado para su uso, como se muestra en la siguiente captura de pantalla.

Para verificar si la operación fue exitosa, ejecute el siguiente comando.

# cryptsetup isLuks /dev/sdb1 && echo Success

Puede ver un resumen de la información de cifrado del dispositivo.

# cryptsetup luksDump /dev/sdb1

Creación de mapas para permitir el acceso a un contenido descifrado

En esta sección, configuraremos cómo acceder a los contenidos descifrados del dispositivo encriptado. Crearemos un mapeo usando el mapeador de dispositivos del kernel. Se recomienda crear un nombre significativo para esta asignación, algo como luk-uuid (donde se reemplaza con el UUID LUKS

Para obtener el UUID de su dispositivo cifrado, ejecute el siguiente comando.

# cryptsetup luksUUID /dev/sdb1

Después de obtener el UUID, puede crear el nombre de la asignación como se muestra (se le pedirá que ingrese la frase de contraseña creada anteriormente).

# cryptsetup luksOpen /dev/sdb1 luk-59f2b688-526d-45c7-8f0a-1ac4555d1d7c

Si el comando es exitoso, un nodo de dispositivo llamado /dev/mapper/luk-59f2b688-526d-45c7-8f0a-1ac4555d1d7c que representa el dispositivo descifrado.

El dispositivo de bloque que se acaba de crear se puede leer y escribir como cualquier otro dispositivo de bloque sin cifrar. Puede ver información sobre el dispositivo mapeado ejecutando el siguiente comando.

# dmsetup info /dev/mapper/luk-59f2b688-526d-45c7-8f0a-1ac4555d1d7c

Creación de sistemas de archivos en un dispositivo mapeado

Ahora veremos cómo crear un sistema de archivos en el dispositivo mapeado, lo que le permitirá usar el nodo del dispositivo mapeado como cualquier otro dispositivo de bloque.

Para crear un sistema de archivos ext4 en el dispositivo mapeado, ejecute el siguiente comando.

# mkfs.ext4 /dev/mapper/luk-59f2b688-526d-45c7-8f0a-1ac4555d1d7c

Para montar el sistema de archivos anterior, cree un punto de montaje para él, por ejemplo, /mnt/encrypted-device y luego móntelo de la siguiente manera.

# mkdir -p /mnt/encrypted-device
# mount /dev/mapper/luk-59f2b688-526d-45c7-8f0a-1ac4555d1d7c /mnt/encrypted-device/

Agregar información de mapeo a/etc/crypttab y/etc/fstab

A continuación, debemos configurar el sistema para configurar automáticamente una asignación para el dispositivo y montarlo en el momento del arranque.

Debe agregar la información de mapeo en el archivo/etc/crypttab, con el siguiente formato.

luk-59f2b688-526d-45c7-8f0a-1ac4555d1d7c  UUID=59f2b688-526d-45c7-8f0a-1ac4555d1d7c   none

en el formato anterior:

  • luk-59f2b688-526d-45c7-8f0a-1ac4555d1d7c: es el nombre de la asignación
  • UUID u003d 59f2b688-526d-45c7-8f0a-1ac4555d1d7c: es el nombre del dispositivo

Guarde el archivo y ciérrelo.

A continuación, agregue la siguiente entrada a/etc/fstab para montar automáticamente el dispositivo mapeado en el arranque del sistema.

/dev/mapper/luk-59f2b688-526d-45c7-8f0a-1ac4555d1d7c  /mnt/encrypted-device  ext4 0 0

Guarde el archivo y ciérrelo.

Luego ejecute el siguiente comando para actualizar las unidades systemd generadas a partir de estos archivos.

# systemctl daemon-reload

Encabezados LUKS de respaldo

Por último, cubriremos cómo hacer una copia de seguridad de los encabezados LUKS. Este es un paso crítico para evitar perder todos los datos en el dispositivo de bloque cifrado, en caso de que los sectores que contienen los encabezados LUKS se dañen por un error del usuario o una falla del hardware. Esta acción permite la recuperación de datos.

Para hacer una copia de seguridad de los encabezados LUKS.

# mkdir /root/backups  
# cryptsetup luksHeaderBackup --header-backup-file luks-headers /dev/mapper/luk-59f2b688-526d-45c7-8f0a-1ac4555d1d7c 

Y para restaurar los encabezados LUKS.

# cryptsetup luksHeaderRestore --header-backup-file /root/backups/luks-headers /dev/mapper/luk-59f2b688-526d-45c7-8f0a-1ac4555d1d7c 

¡Eso es todo! En este artículo, explicamos cómo cifrar dispositivos de bloque usando LUKS en la distribución de Fedora Linux. Si tiene alguna consulta o comentario sobre este tema o guía, utilice el formulario de comentarios a continuación para comunicarse con nosotros.