LUKS: Encriptación de datos de disco duro Linux con soporte NTFS en Linux

El acrónimo LUKS significa Linux Unified Key Setup, que es un ampliamente utilizado método de cifrado de disco utilizado por el kernel de Linux e implementado con el paquete cryptsetup.

El comando cryptsetup cifra de forma transparente un disco de volumen utilizando una clave de cifrado simétrico derivada de la frase de contraseña proporcionada cada vez que se monta en la jerarquía del sistema de archivos un disco de volumen, una partición e incluso un disco completo (incluso una memoria USB) y utiliza el cifrado aes-cbc-essiv:sha256.

Linux Hard Disk Encryption Using LUKS

Debido a que LUKS puede cifrar dispositivos de bloques enteros (discos duros, memorias USB, discos Flash, particiones, grupos de volúmenes, etc.) en sistemas Linux, se recomienda en gran medida para proteger medios de almacenamiento extraíbles, discos duros de portátiles o archivos de intercambio de Linux, y no se recomienda para el cifrado a nivel de archivo.

NTFS (Sistema de Archivos de Nueva Tecnología) es un sistema de archivos propietario desarrollado por Microsoft.

Ubuntu 14.04 proporciona un soporte completo para el cifrado LUKS y también soporte nativo de NTFS para Windows con la ayuda del paquete ntfs-3g.

Para demostrar mi punto en este tutorial, he agregado un nuevo disco duro (4º) en la caja de Ubuntu 14.04 (la referencia del sistema al nuevo HDD es /dev/sdd), el cual será dividido en dos particiones.

  1. Una partición (/dev/sdd1 -primaria) se utiliza para el cifrado LUKS.
  2. La segunda partición (/dev/sdd5 – extendida) se formatea como NTFS para acceder a los datos en sistemas Linux y Windows.

Además, las particiones se montarán automáticamente en Ubuntu 14.04 después de reiniciar.

Paso 1: Crear Particiones de Disco.

1. Después de que su disco duro esté físicamente agregado a su máquina, use el comando ls para listar todos los /dev/dispositivos (el cuarto disco es /dev/sdd).

# ls /dev/sd*
List Partitions in Linux

2. A continuación, verifique su nuevo disco duro con el comando fdisk.

$ sudo fdisk –l /dev/sdd
Check Linux Hard Disk

Como no se ha escrito ningún sistema de archivos en absoluto, el disco aún no contiene una tabla de particiones válida.

3. Los próximos pasos cortan el disco duro para obtener un resultado de dos particiones usando la utilidad de disco cfdisk.

$ sudo cfdisk /dev/sdd

4. La siguiente pantalla abre el modo interactivo de cfdisk. Seleccione su Espacio libre del disco duro y navegue a la opción Nuevo usando las flechas izquierda/derecha.

cfdisk Interactive Mode

5. Elija su tipo de partición como Primaria y presione Enter.

Select Your Partition Type

6. Escriba el tamaño de partición deseado en MB.

Write Down Partition Size

7. Cree esta partición al Principio del espacio libre en el disco duro.

Create a Partition

8. A continuación, navegue hasta la opción Tipo de partición y presione Enter.

Partition Type

9. El próximo mensaje presenta una lista de todos los tipos de sistemas de archivos y sus códigos numéricos (código hexadecimal). Esta partición será un cifrado Linux LUKS así que elija el código 83 y presione Enter nuevamente para crear la partición.

Enter File System Type

10. La primera partición ha sido creada y el prompt de la utilidad cfdisk regresa al inicio. Para crear la segunda partición utilizada como NTFS, selecciona el Espacio libre restante, navega a la opción Nuevo y presiona la tecla Enter.

Create New Partition

11. Esta vez la partición será Lógica Extendida. Por lo tanto, navega a la opción Lógica y nuevamente presiona Enter.

Select Logical Partition Type

12. Ingresa nuevamente el tamaño de tu partición. Para utilizar el espacio libre restante como la nueva partición, deja el valor predeterminado en el tamaño y simplemente presiona Enter.

Enter Size of Partition

13. Nuevamente elige el código de tipo de partición. Para el sistema de archivos NTFS, selecciona el código de volumen 86.

Select Partition Type

14. Después de revisar y verificar las particiones, selecciona Escribir, responde en la siguiente pregunta interactiva y luego Salir para salir de la utilidad cfdisk.

Write Partition Table to Disk
Confirm Changes
Quit to leave cfdisk utility

¡Felicidades! Tus particiones han sido creadas exitosamente y ahora están listas para ser formateadas y utilizadas.

15. Para verificar nuevamente la Tabla de Particiones del disco, emite nuevamente el comando fdisk que mostrará información detallada de la tabla de particiones.

$ sudo fdisk –l /dev/sdd
Confirm Parition Table

Paso 2: Crear Sistema de Archivos de la Partición

Sistema de Archivos NTFS

16. Para crear un sistema de archivos NTFS en la segunda partición, ejecuta el comando mkfs.

$ sudo mkfs.ntfs /dev/sdd5
Create NTFS Filesystem

17. Para hacer que la partición esté disponible, debe ser montada en el sistema de archivos en un punto de montaje. Monta la segunda partición en el cuarto disco duro en el punto de montaje /opt utilizando el comando mount.

$ sudo mount /dev/sdd5 /opt

18. A continuación, comprueba si la partición está disponible y está listada en el archivo /etc/mtab usando el comando cat.

$ cat /etc/mtab
Check Partition Availability

19. Para desmontar la partición, utiliza el siguiente comando.

$ sudo umount /opt
EXT4 LUKS

20. Asegúrate de que el paquete cryptsetup esté instalado en tu sistema.

$ sudo apt-get install cryptsetup		[On Debian Based Systems]

# yum install cryptsetup				[On RedHat Based Systems]

21. Ahora es el momento de formatear la primera partición en el cuarto disco duro con sistema de archivos ext4 emitiendo el siguiente comando.

$ sudo luksformat  -t ext4  /dev/sdd1

Responde con mayúsculas a la pregunta “¿Estás seguro?” e introduce tres veces tu contraseña deseada.

Format Partition

Nota: Dependiendo del tamaño de tu partición y la velocidad del HDD, la creación del sistema de archivos puede llevar un tiempo.

22. También puedes verificar el estado del dispositivo de la partición.

$ sudo cryptsetup luksDump  /dev/sdd1
Verify Partition Status

23. LUKS admite un máximo de 8 contraseñas agregadas. Para agregar una contraseña utiliza el siguiente comando.

$ sudo cryptsetup luksAddKey /dev/sdd1
Add a Password

Para eliminar una contraseña, utiliza.

$ sudo cryptsetup luksRemoveKey /dev/sdd1
Remove a Password

24. Para que esta partición encriptada esté activa, debe tener una entrada de nombre (ser inicializada) en el directorio /dev/mapper con la ayuda del paquete cryptsetup.

Esta configuración requiere la siguiente sintaxis de línea de comandos:

$ sudo cryptsetup luksOpen  /dev/LUKS_partiton  device_name

Donde “nombre_dispositivo” puede ser cualquier nombre descriptivo que te guste (yo lo he llamado crypted_volume). El comando real se verá como se muestra a continuación.

$ sudo cryptsetup luksOpen  /dev/sdd1 crypted_volume
Active Encrypted Partition

25. Luego verifique si su dispositivo está listado en el directorio /dev/mapper, enlace simbólico y estado del dispositivo.

$ ls /dev/mapper
$ ls –all /dev/mapper/encrypt_volume
Verify Encrypted Partition
$ sudo cryptsetup –v status encrypt_volume
Encrypted Partition Status

26. Ahora, para hacer que el dispositivo de partición esté ampliamente disponible, móntelo en su sistema bajo un punto de montaje utilizando el comando de montaje.

$ sudo mount  /dev/mapper/crypted_volume  /mnt
Mount Encrypted Partition

Como se puede ver, la partición está montada y accesible para escribir datos.

27. Para que no esté disponible, simplemente desmóntelo de su sistema y cierre el dispositivo.

$ sudo umount  /mnt
$ sudo cryptsetup luksClose crypted_volume
Umount Encrypted Partition

Paso 3: Montar la partición automáticamente

Si utiliza un disco duro fijo y necesita que ambas particiones se monten automáticamente en el sistema después de reiniciar, debe seguir estos dos pasos.

28. Primero edite el archivo /etc/crypttab y agregue los siguientes datos.

$ sudo nano /etc/crypttab
  1. Nombre del objetivo: Un nombre descriptivo para su dispositivo (ver punto anterior 22 en EXT4 LUKS).
  2. Unidad fuente: La partición del disco duro formateada para LUKS (ver punto anterior 21 en EXT4 LUKS).
  3. Archivo clave: Elija ninguno
  4. Opciones: Especifique luks

La línea final se vería como se muestra a continuación.

encrypt_volume               /dev/sdd1          none       luks
Mount Partition Automatically

29. Luego edite /etc/fstab y especifique el nombre de su dispositivo, punto de montaje, tipo de sistema de archivos y otras opciones.

$ sudo nano /etc/fstab

En la última línea, utilice la siguiente sintaxis.

/dev/mapper/device_name (or UUID)	/mount_point     filesystem_type     options    dump   pass

Y agregue su contenido específico.

/dev/mapper/encrypt_volume      /mnt    ext4    defaults,errors=remount-ro     0     0
Add Partition Entry in Fstab

30. Para obtener el UUID del dispositivo, utilice el siguiente comando.

$ sudo blkid
Get Device UUID

31. Para agregar también el tipo de partición NTFS creada anteriormente, use la misma sintaxis que se muestra arriba en una nueva línea en fstab (Aquí se utiliza la redirección de archivo de agrupamiento de Linux).

$ sudo su -
# echo "/dev/sdd5	/opt	ntfs		defaults		0              0"  >> /etc/fstab
Add NTFS Partition in fstab

32. Para verificar los cambios, reinicie su máquina, presione Enter después del mensaje de inicio “Comenzando a configurar el dispositivo de red” y escriba la frase secreta de su dispositivo.

Reboot Machine
Verify Partition is Mounted Automatically

Como puede ver, ambas particiones de disco se montaron automáticamente en la jerarquía del sistema de archivos de Ubuntu. Como consejo, no utilice volúmenes cifrados automáticamente desde el archivo fstab en servidores físicamente remotos si no puede acceder a la secuencia de reinicio para proporcionar la contraseña de su volumen cifrado.

La misma configuración se puede aplicar en todo tipo de medios extraíbles, como una memoria USB, memoria flash, disco duro externo, etc., para proteger datos importantes, secretos o sensibles en caso de escuchas o robo.

Source:
https://www.tecmint.com/linux-hard-disk-encryption-using-luks/