Cifrar un pendrive o HDD externo con DM-Crypt con LUKS
En esta entrada se explica como cifrar el contenido de un dispositivo USB en Debian Jessie 8.2 ya sea un pendrive o un disco duro externo como medida para proteger la información.
En Linux existen múltiples opciones según su uso: GPG o ccrypt para ficheros, EncFS o eCryptfs sobre directorios o para nuestro caso TrueCrypt o DM-crypt. Con el uso de dm-crypt el usuario puede especificar el algoritmo de cifrado simétrico, la modalidad de cifrado, una clave de cualquier tamaño… permitiendo montar un sistema de archivos encriptado en una unidad USB, una partición, RAID o LVM. Mientras que con LUKS tenemos la capacidad de gestionar las claves de acceso para un mismo dispositivo, pudiendo así asignar, cambiar o revocar varias claves.
En Windows, si insertamos un dispositivo cifrado con dm-crypt el sistema por defecto nos dará la opción de darle formato. Sin embargo, es posible utilizar un dispositivo cifrado y gestionarlo con la herramienta de código abierto FreeOTFE.
Comenzamos con la instalación de la herramienta cryptsetup con apt-get install cryptsetup
Ahora, insertamos el pendrive de 8GB y comprobamos que el sistema lo ha reconocido con la orden lsblk
la cual lista los dispositivos de bloque.
Cifrar con LUKS un pendrive
El siguiente paso es encriptar el pendrive que tiene como referencia /dev/sdc1, esto lo hacemos con la ejecución de cryptsetup luksFormat /dev/sdc1
. Se requerirá la confirmación (en mayúsculas) y la contraseña por dos veces.
La ejecución de este comando sobreescribirá todos los datos y contenidos del dispositivo USB.
Algunos de los parámetros que podemos emplear con cryptsetup para el cifrado con LUKS son:
--cipher tipocifrado
o-c tipocifrado
, para especificar qué tipo de cifrado, por defecto en LUKS se utiliza aes-xts-plain64.--key-file nombrefichero
o-d nombrefichero
para cargar la passphrase desde un archivo.--key-size bits
o-s bits
para especificar el tamaño de la clave en bits.
Para comprobar su cifrado hemos utilizado la opción -f
en lsblk
, que muestra información acerca del sistema de ficheros. También podemos hacer uso de cryptsetup isLuks -v /dev/sdc1
, donde mostrará Orden ejecutada correctamente. en caso de ser un dispositivo válido y encriptado con LUKS o La orden ha fallado con código 22: El dispostivo /dev/sdc1/ no es un dispositivo LUKS válido. en caso de no tratarse de un sistema de ficheros encriptado con uso de LUKS.
También es posible verlo en el navegador de archivos como Cifrados 8,0 GB.
Activar el dispositivo y automontarlo en el arranque del sistema
La siguiente tarea es activar el dispositivo con el nombre Privado, por ello ejecutamos cryptsetup luksOpen /dev/sdc1 Privado
donde se nos pedirá la contraseña elegida anteriormente. También asignamos un sistema de ficheros el comando mkfs.ext4 /dev/mapper/Privado
.
Seguidamente, creamos el directorio /opt2 con mkdir /opt2
donde se montará el dispositivo y lo montamos con mount /dev/mapper/Privado /opt2/
. Con df -h
comprobamos su correcto montaje.
Ahora, editamos los ficheros /etc/fstab y /etc/crypttab para el automontaje en /opt2 en el arranque del sistema, donde deberemos introducir una de las passphrases añadidas.
Para comprobar su correcta configuración, reiniciamos el equipo y observamos que el sistema Linux requiere una contraseña para continuar con el arranque.
Añadir una nueva frase de paso a LUKS
Una vez iniciado el sistema, podemos añadir tantas frases de paso como deseemos. La intención de esta técnica es para que varios usuarios puedan acceder con su propia contraseña sin necesidad de usar todos la misma en común.
Esto lo hacemos activando el dispositivo con cryptsetup luksOpen /dev/sdc1
Privado y utilizando el comando cryptsetup luksAddKey /dev/sdc1
para añadir nuevas claves de paso.
Si desconectamos y conectamos el dispositivo USB, este nos pedirá mediante interfaz gráfica una de las contraseñas para desbloquear el dispositivo pudiendo utilizar, por ejemplo, la última añadida.
Aún más fácil: desde interfaz gráfica
Desde la interfaz gráfica de GNOME podemos cifrar nuestro dispositivo USB pulsando con el botón derecho sobre él en el navegador de archivos nautilus. Pulsamos sobre la opción Formatear… y elegimos el tipo Cifrado, compatible con sistemas Linux (LUKS + Ext4).
La gestión de las contraseñas de este cifrado puede hacerse igualmente por terminal de comandos. Por ejemplo, utilizando cryptsetup luksChangeKey /dev/sde1
.
Referencias