Saltar al contenido

CyberSkills – Tutoriales de Seguridad y Servidores

Cifrado de Discos con LUKS en Ubuntu Server 24.04

Tutorial: Cifrado de Discos con LUKS en Ubuntu Server 24.04

LUKS (Linux Unified Key Setup) es una especificación estándar para el cifrado de discos en Linux que proporciona una plataforma segura y robusta para proteger datos confidenciales. Este tutorial completo te guiará paso a paso en la implementación del cifrado de discos con LUKS en Ubuntu Server 24.04.

ADVERTENCIA IMPORTANTE: Este proceso implica la manipulación de particiones y datos. Asegúrate de tener una copia de seguridad completa de cualquier dato importante antes de proceder. Un error puede resultar en la pérdida irrecuperable de datos.

1. Requisitos Previos y Preparación

Antes de comenzar con el cifrado, es fundamental preparar el entorno y verificar los requisitos necesarios:

  • Un disco o partición que deseas cifrar (ejemplo: /dev/sdb1)
  • Acceso administrativo con sudo
  • El paquete cryptsetup instalado
  • Copia de seguridad de datos importantes

1.1 Instalación de cryptsetup

sudo apt update
sudo apt install cryptsetup

2. Identificación del Disco/Partición

Es crucial identificar correctamente el disco o partición que deseas cifrar para evitar la pérdida de datos en el dispositivo equivocado.

# Listar dispositivos de bloque con información del sistema de archivos
lsblk -f

# Mostrar información detallada de particiones
sudo fdisk -l

# Verificar el estado actual del dispositivo
sudo blkid /dev/sdb1

NOTA: Una vez identificado el dispositivo (ejemplo: /dev/sdb1), asegúrate de que no contenga datos importantes o que tengas una copia de seguridad completa.

3. Proceso de Cifrado con LUKS

3.1 Crear la Cabecera LUKS

Este comando sobrescribirá la partición con la cabecera LUKS. Todos los datos existentes se perderán permanentemente.

# Crear el volumen LUKS cifrado
sudo cryptsetup -y -v luksFormat /dev/sdb1

El sistema te pedirá:

  1. Confirmar la acción escribiendo YES en mayúsculas
  2. Introducir una frase de contraseña (passphrase) fuerte
  3. Confirmar la frase de contraseña

3.2 Abrir (Desbloquear) el Volumen Cifrado

Una vez cifrado, necesitas abrir el volumen para poder acceder a él. Esto creará un dispositivo de mapeo en /dev/mapper/.

# Abrir el volumen LUKS
sudo cryptsetup luksOpen /dev/sdb1 myencryptedvolume

# Verificar que el dispositivo está disponible
ls -la /dev/mapper/myencryptedvolume

4. Creación del Sistema de Archivos

Una vez que el volumen LUKS está abierto, puedes tratarlo como un disco normal y crear un sistema de archivos.

# Crear sistema de archivos ext4
sudo mkfs.ext4 /dev/mapper/myencryptedvolume

# Alternativas de sistemas de archivos
# sudo mkfs.xfs /dev/mapper/myencryptedvolume
# sudo mkfs.btrfs /dev/mapper/myencryptedvolume

5. Montaje del Volumen Cifrado

5.1 Crear Punto de Montaje

# Crear directorio de montaje
sudo mkdir /mnt/encrypted_data

# Establecer permisos apropiados
sudo chmod 755 /mnt/encrypted_data

5.2 Montar el Volumen

# Montar el volumen cifrado
sudo mount /dev/mapper/myencryptedvolume /mnt/encrypted_data

# Verificar el montaje
df -h /mnt/encrypted_data
mount | grep encrypted_data

6. Configuración para Montaje Automático

Para que el volumen se monte automáticamente al inicio, necesitas configurar /etc/crypttab y /etc/fstab.

6.1 Obtener el UUID del Volumen LUKS

# Obtener UUID del volumen LUKS
sudo blkid /dev/sdb1

# Ejemplo de salida:
# /dev/sdb1: UUID="12345678-1234-1234-1234-123456789abc" TYPE="crypto_LUKS"

6.2 Configurar /etc/crypttab

# Editar el archivo crypttab
sudo nano /etc/crypttab

# Añadir la siguiente línea (reemplaza el UUID):
myencryptedvolume UUID=12345678-1234-1234-1234-123456789abc none luks,discard

6.3 Configurar /etc/fstab

# Editar el archivo fstab
sudo nano /etc/fstab

# Añadir la siguiente línea:
/dev/mapper/myencryptedvolume /mnt/encrypted_data ext4 defaults 0 2

6.4 Actualizar initramfs y Reiniciar

# Actualizar initramfs
sudo update-initramfs -u

# Reiniciar el sistema
sudo reboot

7. Gestión Avanzada de Claves

LUKS permite gestionar múltiples frases de contraseña y archivos de clave para mayor flexibilidad y seguridad.

7.1 Gestión de Frases de Contraseña

# Añadir una nueva frase de contraseña
sudo cryptsetup luksAddKey /dev/sdb1

# Eliminar una frase de contraseña
sudo cryptsetup luksRemoveKey /dev/sdb1

# Listar slots de claves
sudo cryptsetup luksDump /dev/sdb1

7.2 Configuración de Archivo de Clave

# Crear archivo de clave seguro
sudo dd if=/dev/urandom of=/root/keyfile bs=1024 count=4
sudo chmod 0400 /root/keyfile

# Añadir el archivo de clave a LUKS
sudo cryptsetup luksAddKey /dev/sdb1 /root/keyfile

# Configurar crypttab para usar el archivo de clave
# myencryptedvolume UUID=12345678-1234-1234-1234-123456789abc /root/keyfile luks,discard

8. Operaciones de Mantenimiento

8.1 Cerrar el Volumen Cifrado

# Desmontar y cerrar el volumen
sudo umount /mnt/encrypted_data
sudo cryptsetup luksClose myencryptedvolume

# Verificar que está cerrado
ls /dev/mapper/ | grep myencryptedvolume

8.2 Copia de Seguridad de la Cabecera LUKS

# Crear copia de seguridad de la cabecera
sudo cryptsetup luksHeaderBackup /dev/sdb1 --header-backup-file /root/sdb1_luks_header.img

# Restaurar cabecera desde copia de seguridad (si es necesario)
# sudo cryptsetup luksHeaderRestore /dev/sdb1 --header-backup-file /root/sdb1_luks_header.img

9. Configuración de Seguridad con nftables y fail2ban

Para complementar la seguridad del cifrado, es importante configurar el firewall y protección contra ataques.

9.1 Configuración de nftables

# Configurar reglas básicas de nftables
sudo nft add table inet filter
sudo nft add chain inet filter input { type filter hook input priority 0 ; policy drop ; }
sudo nft add rule inet filter input ct state established,related accept
sudo nft add rule inet filter input iif lo accept
sudo nft add rule inet filter input tcp dport 1422 accept

# Guardar configuración
sudo nft list ruleset > /etc/nftables.conf

9.2 Configuración de fail2ban

# Instalar fail2ban
sudo apt install fail2ban

# Configurar jail para SSH en puerto 1422
sudo tee /etc/fail2ban/jail.local << EOF
[sshd]
enabled = true
port = 1422
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
findtime = 600
EOF

# Reiniciar fail2ban
sudo systemctl restart fail2ban
sudo systemctl enable fail2ban

10. Mejores Prácticas de Seguridad

  • Frases de contraseña robustas: Utiliza frases largas, complejas y únicas
  • Gestión segura de archivos de clave: Protege con permisos restrictivos (0400)
  • Copias de seguridad regulares: Incluye la cabecera LUKS en tus backups
  • Monitoreo de logs: Revisa regularmente los logs del sistema
  • Actualizaciones de seguridad: Mantén el sistema actualizado
  • Hardening del sistema: Implementa medidas adicionales de seguridad

CONCLUSIÓN: Has implementado exitosamente el cifrado de discos con LUKS en Ubuntu Server 24.04. Esta configuración proporciona una capa robusta de protección para tus datos confidenciales, complementada con medidas de seguridad adicionales como nftables y fail2ban.

Comandos de Referencia Rápida

# Comandos esenciales de LUKS
sudo cryptsetup luksFormat /dev/sdX1          # Cifrar partición
sudo cryptsetup luksOpen /dev/sdX1 nombre     # Abrir volumen
sudo cryptsetup luksClose nombre              # Cerrar volumen
sudo cryptsetup luksDump /dev/sdX1            # Información del volumen
sudo cryptsetup luksAddKey /dev/sdX1          # Añadir clave
sudo cryptsetup luksRemoveKey /dev/sdX1       # Eliminar clave

# Verificación y monitoreo
lsblk -f                                      # Listar dispositivos
sudo blkid                                    # UUIDs de dispositivos
df -h                                         # Espacio en disco
sudo cryptsetup status nombre                # Estado del volumen

Únete a la conversación

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *