Cómo cifrar un disco en Xubuntu Feisty con dm-crypt y LUKS

I. Introducción
Motivación
La seguridad es una parte fundamental de la vida cotidiana; a veces la aplicamos conscientemente y otras no. Una dimensión clave es la protección de los datos almacenados en ordenadores personales o profesionales. Cifrar un disco completo o una partición garantiza que los datos en reposo sean inaccesibles sin la contraseña o la clave apropiada.
En este tutorial verás cómo cifrar un disco completo usando Xubuntu Feisty, dm-crypt y LUKS. Está pensado para cifrar unidades secundarias destinadas a almacenamiento de datos. No uses estos pasos para cifrar una unidad con tu sistema en producción sin pruebas previas y copias de seguridad.
Fuentes utilizadas: recopilación de documentación pública y experiencias comunitarias.
Advertencia
Este procedimiento borrará todos los datos que haya en el disco o partición que elijas. Antes de empezar, asegúrate de identificar correctamente el dispositivo. No cifres por error tu disco del sistema. Haz copias de seguridad de cualquier información importante.
Consideraciones legales (breve)
Existen métodos con plausibilidad de negación (por ejemplo, soluciones de doble capa de cifrado). En mi experiencia, esas soluciones pueden no ofrecer la protección práctica esperada en todos los sistemas judiciales. Aquí me centro en dm-crypt y LUKS, que no proporcionan niveles de plausible deniability por diseño.
Nota: las leyes varían según país. En algunos estados europeos puede existir el derecho a guardar silencio, pero en otros procedimientos civiles las obligaciones pueden ser distintas. Esta sección no es asesoramiento legal.
II. Instalar el software necesario
En Xubuntu Feisty (y en muchas derivadas Debian) instala las herramientas necesarias:
sudo aptitude install cryptsetup hashalot
- cryptsetup: herramienta principal para crear y gestionar volúmenes cifrados LUKS.
- hashalot: utilidad para calcular sumas/huellas (útil al verificar integridad de archivos y contraseñas auxiliares).
Si usas otra distro basada en Debian/Ubuntu, puedes usar apt-get en lugar de aptitude.
III. Preparar el disco
Antes de crear el contenedor cifrado, es buena práctica rellenar el dispositivo con datos aleatorios. Esto evita patrones que delaten el tamaño real de datos y dificulta análisis forense básico.
ADVERTENCIA: Esto sobrescribe todo en el dispositivo y puede tardar horas dependiendo del tamaño.
Ejemplo con dd:
sudo dd if=/dev/urandom of=/dev/HARDDISK
Sustituye HARDDISK por el identificador real (por ejemplo: sda, sdb, hda, hdb). Es recomendable crear primero una partición y cifrar solo esa partición, aunque también es válido cifrar todo el disco.
Cómo identificar el disco de forma segura:
- Ejecuta lsblk o fdisk -l para listar dispositivos.
- Asegúrate por tamaño y particiones de cuál es el disco destino.
Ejemplo de salida de dd (para referencia del proceso, no lo copies literalmente):
hyper@xubi:/dev$ sudo dd if=/dev/urandom of=/dev/hda
dd: writing to `/dev/hda': No space left on device
312581809+0 records in
312581808+0 records out
160041885696 bytes (160 GB) copied, 90679.8 seconds, 1.8 MB/s
Consejos y alternativas:
- Si quieres ver el progreso con dd en sistemas modernos, agrega status=progress (puede no estar disponible en Feisty antiguo).
- Considera usar shred o herramienta pv si quieres monitorizar velocidad.
- Rellenar con /dev/urandom provee datos verdaderamente aleatorios pero es lento; /dev/zero es más rápido y oculta mejor la existencia de datos reales (pero no oculta patrones de cifrado). Elige según tu caso de uso.
IV. Cargar módulos del kernel
dm-crypt necesita ciertos módulos del kernel. Cárgalos temporalmente con:
sudo modprobe aes
sudo modprobe dm-crypt
sudo modprobe dm_mod
Si quieres que se carguen en cada arranque, añade al final de /etc/modules:
sudo nano /etc/modules
Agrega las líneas siguientes (respeta el contenido existente):
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
fuse
lp
aes
dm-crypt
dm_mod
Guarda y cierra. fuse y lp pueden no estar en todos los sistemas; lo importante es añadir aes, dm-crypt y dm_mod.
V. Crear la partición cifrada
Para inicializar un contenedor LUKS en el dispositivo o partición elegida:
sudo cryptsetup luksFormat /dev/HARDDISK
Este comando formatea la partición como LUKS y te pedirá una passphrase. Elige una frase segura y fácil de recordar (mínimo 12–16 caracteres con variación de tipos de caracteres es una buena práctica).
Si prefieres revisar opciones avanzadas, consulta man cryptsetup. Puedes cambiar parámetros de cifrado, tamaño de clave y opciones PBKDF, pero hazlo solo si entiendes sus implicaciones.
VI. Mapear la partición cifrada
Abre (mapéala) con un nombre legible para el sistema:
sudo cryptsetup luksOpen /dev/HARDDISK DEVICENAME
Tras esto, el volumen cifrado estará accesible como /dev/mapper/DEVICENAME.
VII. Formatear el contenedor cifrado
Formatea el dispositivo mapeado con un sistema de ficheros (por ejemplo ext3):
sudo mkfs.ext3 /dev/mapper/DEVICENAME
Puedes elegir ext4, xfs u otro sistema según tus necesidades. Si esperas archivos grandes o necesidades específicas, elige la opción adecuada.
VIII. Montar la partición
Crea un punto de montaje y monta:
sudo mkdir /media/DEVICENAME
sudo mount /dev/mapper/DEVICENAME /media/DEVICENAME
Si en algún momento desmontaste el volumen y lo quieres volver a abrir, solo necesitas:
sudo cryptsetup luksOpen /dev/HARDDISK DEVICENAME
sudo mount /dev/mapper/DEVICENAME /media/DEVICENAME
IX. Montar al arranque
Para montar automáticamente al inicio edita /etc/crypttab y añade una línea parecida a esta:
DEVICENAME /dev/HARDDISK none luks,check=ext2,retry=5
Luego, añade el punto de montaje en /etc/fstab:
# CryptoDevices
/dev/mapper/DEVICENAME /media/HARDDISK auto defaults 0 0
Con esto, en el arranque se te solicitará la contraseña para el dispositivo cifrado. Si fallas tras los intentos configurados (retry=5 en el ejemplo), el sistema seguirá arrancando sin montar la unidad.
X. Añadir y eliminar claves
LUKS permite múltiples claves (keyslots). Para añadir otra passphrase:
sudo cryptsetup luksAddKey /dev/HARDDISK
Para eliminar una passphrase concreta:
sudo cryptsetup luksDelKey /dev/HARDDISK
LUKS1 ofrece varias ranuras de clave (keyslots) para gestionar múltiples contraseñas o claves de recuperación.
XI. Desmontar y cerrar el contenedor
Incluso si el punto de montaje está desmontado, la entrada en /dev/mapper puede permanecer activa hasta que cierres el mapeo. Comprueba mapeos con dmsetup:
sudo dmsetup ls
Para desmontar y cerrar correctamente:
sudo umount /media/DEVICENAME && sudo cryptsetup luksClose DEVICENAME
Ejemplo de script simple que automatiza el desmontaje (guárdalo como ~/umount.sh):
#!/bin/bash
sudo umount /media/DEVICENAME && sudo cryptsetup luksClose HARDDISK
Hazlo ejecutable:
sudo chmod a+x ~/umount.sh
Puedes crear un lanzador gráfico en Xfce que ejecute este script. Imagen del ejemplo de lanzador:
XII. Notas finales
Si apagas el equipo o se corta la alimentación, la unidad quedará desmontada y el mapeador eliminado. Esto garantiza que el contenido no sea accesible sin la contraseña. Revisa las opciones avanzadas de cryptsetup y LUKS para adaptar parámetros a tus necesidades de rendimiento y seguridad.
Buenas prácticas y endurecimiento de seguridad
- Usa una passphrase larga y única; considera un gestor de contraseñas para guardarla.
- Limita el acceso físico: el cifrado protege datos en reposo, pero si un atacante tiene acceso físico y tiempo, puede intentar ataques por hardware o extracción de chip.
- Evalúa usar una keyfile almacenada en un USB para desbloqueo automático en servidores; combina siempre keyfile + passphrase cuando sea posible.
- Revisa y actualiza los parámetros de KDF/PBKDF con cuidado (consulta man cryptsetup y la documentación de tu versión).
- Mantén copias de seguridad cifradas. Un backup no cifrado anula la protección del disco.
Importante: no compartas la passphrase y mantén registros seguros de quién tiene acceso en entornos multiusuario.
Alternativas y comparativas rápidas
- TrueCrypt / VeraCrypt: ofrecen características adicionales como volúmenes ocultos y plausible deniability. VeraCrypt es continuador de TrueCrypt con parches de seguridad.
- eCryptfs: cifrado a nivel de sistema de ficheros (por archivo), integrado en algunos entornos, útil para home directories.
- Cifrado por hardware (SEDs): discos con cifrado integrado — rendimiento alto pero depende de la implementación del fabricante.
- Instalador de Ubuntu (Full-disk encryption): método integrado para cifrar la partición del sistema durante la instalación.
Cuando elegir dm-crypt + LUKS: cuando buscas una solución mantenida, interoperable y bien integrada con Linux.
Cuándo no es apropiado
- Si necesitas plausible deniability fuerte por requerimientos legales o de seguridad operacional, LUKS no proporciona volúmenes ocultos del mismo modo que soluciones como VeraCrypt.
- Si no puedes permitir tiempos de indisponibilidad largos (por ejemplo, rellenar con /dev/urandom en discos grandes puede tardar horas).
Procedimiento de despliegue rápido (mini playbook)
- Identificar dispositivo con lsblk / fdisk -l.
- Hacer copia de seguridad de datos importantes.
- Rellenar dispositivo con datos aleatorios (opcional pero recomendado): sudo dd if=/dev/urandom of=/dev/HARDDISK
- Cargar módulos: modprobe aes; modprobe dm-crypt; modprobe dm_mod
- Inicializar LUKS: sudo cryptsetup luksFormat /dev/HARDDISK
- Abrir LUKS: sudo cryptsetup luksOpen /dev/HARDDISK DEVICENAME
- Formatear: sudo mkfs.ext3 /dev/mapper/DEVICENAME
- Montar: mkdir /media/DEVICENAME && mount /dev/mapper/DEVICENAME /media/DEVICENAME
- Añadir entradas en /etc/crypttab y /etc/fstab para arranque automático.
- Probar desmontaje y cierre: umount && cryptsetup luksClose
Checklist por roles
Administrador:
- Identificar discos y particiones.
- Realizar y verificar backups completos.
- Establecer política de contraseñas y rotación.
- Configurar arranque automático y monitoreo de mensajes de arranque.
Usuario final:
- Guardar la passphrase en lugar seguro (gestor de contraseñas o bóveda física).
- Comprobar acceso después del arranque.
- No compartir la passphrase.
Criterios de aceptación (pruebas básicas)
- El dispositivo /dev/mapper/DEVICENAME existe tras luksOpen.
- Se puede montar y escribir en /media/DEVICENAME.
- Tras umount y luksClose, /dev/mapper/DEVICENAME no debe existir.
- En arranque, el sistema solicita la passphrase y monta la unidad si la passphrase es correcta.
Caja de datos: hechos clave
- LUKS1 proporciona múltiples ranuras de clave (keyslots) para administrar varias contraseñas o claves de recuperación.
- cryptsetup es la herramienta estándar en Linux para inicializar y administrar volúmenes LUKS y dm-crypt.
Privacidad y cumplimiento (apuntes)
El cifrado protege datos en reposo ante acceso no autorizado al medio físico. Sin embargo:
- No sustituye la necesidad de políticas de retención, anonimización o cumplimiento legal en tu jurisdicción.
- En algunas situaciones legales podrías estar obligado a entregar claves o evidencia; consulta asesoría legal si esto es relevante para tu organización.
Flujo de decisiones (Mermaid)
flowchart TD
A[¿Necesitas cifrar disco?] -->|No| B[No cifrar]
A -->|Sí| C[¿Cifrado a nivel de archivo o disco?]
C -->|Archivo| D[eCryptfs u otros]
C -->|Disco| E[dm-crypt + LUKS]
E --> F[¿Requiere plausible deniability?]
F -->|Sí| G[VeraCrypt / Volúmenes ocultos]
F -->|No| H[Proceder con LUKS]
Glosario (una línea cada término)
- dm-crypt: subsistema del kernel Linux que facilita cifrado de bloques.
- LUKS: formato estándar y meta-esquema para cifrado de discos en Linux que gestiona metadatos y keyslots.
- mapper: espacio de nombres en /dev/mapper donde aparecen los dispositivos mapeados por device-mapper.
Resumen final
Cifrar discos con dm-crypt y LUKS en Xubuntu Feisty es una solución robusta y ampliamente soportada para proteger datos en reposo. Sigue las prácticas de identificación de dispositivos, copias de seguridad y gestión de claves. Revisa opciones avanzadas según tus necesidades y consulta documentación oficial para parámetros específicos.
Importante: prueba el procedimiento en un entorno controlado antes de aplicarlo en sistemas de producción.
Materiales similares

Solucionar 'no hay suficiente espacio' en Windows

Steam no se abre: solución rápida

Archivo de paginación en Windows: tamaño y ubicación

Recuperar correos eliminados en Mac: 7 métodos rápidos

Cifrar disco en Xubuntu con dm-crypt y LUKS
