Búsqueda de sitios web

Cómo cifrar unidades usando LUKS en Fedora Linux


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

Bloquear cifrado de dispositivo

El cifrado de dispositivo de bloque se utiliza para proteger los datos en un dispositivo de bloque cifrándolos y, para descifrar los datos, el 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 desconectado físicamente del sistema.

Introducción a LUKS

LUKS (Configuración de clave unificada de Linux) es el estándar para el cifrado de dispositivos de bloque en Linux, que funciona estableciendo un formato en disco para los datos y una política de administración de contraseñas/claves. . 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 asignador 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.

Preparando un dispositivo de bloque

Las siguientes instrucciones muestran los pasos para crear y configurar dispositivos de bloques 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 solidez 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.

Formatear 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 se formatee 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

Crear mapeo para permitir el acceso a un contenido descifrado

En esta sección, configuraremos cómo acceder al contenido descifrado del dispositivo cifrado. Crearemos un mapeo usando el mapeador de dispositivos del kernel. Se recomienda crear un nombre significativo para esta asignación, algo así como luk-uuid (donde <uuid> se reemplaza con el LUKS UUIDIdentificador único universal).

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 tiene éxito, se crea un nodo de dispositivo llamado /dev/mapper/luk-59f2b688-526d-45c7-8f0a-1ac4555d1d7c que representa el dispositivo descifrado.

El dispositivo de bloque que acaba de crearse se puede leer y escribir como cualquier otro dispositivo de bloque no cifrado. Puede ver información sobre el dispositivo asignado ejecutando el siguiente comando.

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

Crear 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 del mapeo
  • UUID=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 asignado al iniciar el 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 systemd unidades generadas a partir de estos archivos.

systemctl daemon-reload

Copia de seguridad de encabezados LUKS

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 Fedora Linux. ¿Tiene alguna consulta o comentario sobre este tema o guía? Utilice el formulario de comentarios a continuación para comunicarse con nosotros.