5.6 Almacenamiento Cifrado (LUKS)
LUKS (Linux Unified Key Setup) es el estándar de cifrado de discos en Linux. Cifra el contenido completo de una partición o disco: aunque alguien extraiga el disco físicamente, sin la clave solo verá datos aleatorios. Es el objetivo de almacenamiento más demandado en el examen LFCS.
1. Cómo funciona LUKS
Sección titulada “1. Cómo funciona LUKS"LUKS añade una cabecera al inicio del dispositivo con la configuración de cifrado y hasta 8 ranuras de clave (key slots). Cada ranura puede contener una contraseña o una clave de fichero diferente. El cifrado real usa AES-256-XTS por defecto.
┌─────────────────────────────────────────────────────┐│ Cabecera LUKS │ Datos cifrados (AES-256-XTS) ││ (metadatos + │ (el filesystem está aquí dentro) ││ key slots x8) │ │└─────────────────────────────────────────────────────┘2. Instalación
Sección titulada “2. Instalación"sudo apt install cryptsetup3. Crear un volumen LUKS
Sección titulada “3. Crear un volumen LUKS"# Formatear la partición /dev/sdb1 como LUKS# Te pedirá confirmación (escribe YES en mayúsculas) y una passphrasesudo cryptsetup luksFormat /dev/sdb1
# Con opciones explícitas (valores por defecto de LUKS2):sudo cryptsetup luksFormat \ --type luks2 \ --cipher aes-xts-plain64 \ --key-size 512 \ --hash sha256 \ /dev/sdb1Verificar la cabecera LUKS:
sudo cryptsetup luksDump /dev/sdb1# LUKS header information# Version: 2# Epoch: 3# Metadata area: 16384 [bytes]# Keyslots area: 16744448 [bytes]# ...4. Abrir, formatear y montar
Sección titulada “4. Abrir, formatear y montar"# Abrir el volumen LUKS: crea /dev/mapper/datos_cifradossudo cryptsetup luksOpen /dev/sdb1 datos_cifrados# Te pedirá la passphrase
# El dispositivo mapeado aparece como un disco normalls /dev/mapper/datos_cifrados
# Formatear el dispositivo descifradosudo mkfs.ext4 /dev/mapper/datos_cifrados
# Montarsudo mkdir -p /mnt/privadosudo mount /dev/mapper/datos_cifrados /mnt/privado
# Usar normalmentedf -h /mnt/privado5. Cerrar el volumen LUKS
Sección titulada “5. Cerrar el volumen LUKS"# Desmontar primerosudo umount /mnt/privado
# Cerrar el mapper (vuelve a ser datos cifrados)sudo cryptsetup luksClose datos_cifrados6. Descifrado automático al arranque (/etc/crypttab)
Sección titulada “6. Descifrado automático al arranque (/etc/crypttab)"Para que el volumen se descifre automáticamente durante el arranque, se configura /etc/crypttab.
# Obtener el UUID del dispositivo LUKSsudo blkid /dev/sdb1# /dev/sdb1: UUID="aaaa-bbbb-..." TYPE="crypto_LUKS"
# Añadir a /etc/crypttab# formato: nombre_mapper dispositivo fichero_clave opcionessudo nano /etc/crypttab# nombre dispositivo clave opcionesdatos_cifrados UUID=aaaa-bbbb-cccc-dddd-eeeeeeeeeeee none luks# Crear un fichero de clave aleatoria (solo para volúmenes de datos, no del SO)sudo dd if=/dev/urandom of=/etc/luks-keyfile bs=4096 count=1sudo chmod 400 /etc/luks-keyfile
# Añadir el fichero de clave al volumen LUKS (necesitas la passphrase original)sudo cryptsetup luksAddKey /dev/sdb1 /etc/luks-keyfile
# Configurar crypttab para usar el ficherosudo nano /etc/crypttabdatos_cifrados UUID=aaaa-bbbb-cccc-dddd-eeeeeeeeeeee /etc/luks-keyfile luksAñadir a /etc/fstab para el montaje automático:
/dev/mapper/datos_cifrados /mnt/privado ext4 defaults 0 2Actualizar initramfs para que incluya la configuración:
sudo update-initramfs -u7. Gestión de claves (key slots)
Sección titulada “7. Gestión de claves (key slots)"LUKS soporta hasta 8 claves diferentes para el mismo volumen. Esto permite que varios administradores tengan su propia contraseña, o tener una clave de emergencia.
# Ver qué slots están en usosudo cryptsetup luksDump /dev/sdb1 | grep "Key Slot"
# Añadir una nueva passphrase (ocupa el siguiente slot libre)sudo cryptsetup luksAddKey /dev/sdb1# Primero pide una clave existente para verificar identidad
# Cambiar la contraseña de un slot (no hay forma directa: añade nueva y borra la vieja)sudo cryptsetup luksAddKey /dev/sdb1 # Añade la nuevasudo cryptsetup luksRemoveKey /dev/sdb1 # Elimina la antigua (pide la clave a eliminar)
# Eliminar una clave por número de slot (más preciso)sudo cryptsetup luksKillSlot /dev/sdb1 18. Verificación y auditoría
Sección titulada “8. Verificación y auditoría"# Estado del volumen abiertosudo cryptsetup status datos_cifrados# /dev/mapper/datos_cifrados is active and is in use.# type: LUKS2# cipher: aes-xts-plain64# keysize: 512 bits# key location: keyring# device: /dev/sdb1
# Verificar integridad de la cabecera LUKSsudo cryptsetup luksDump /dev/sdb1
# Hacer backup de la cabecera LUKS (recomendado en producción)sudo cryptsetup luksHeaderBackup /dev/sdb1 --header-backup-file /root/sdb1-luks-header.bak# Guardar este fichero en lugar seguro separado del disco