Si algunos de nuestros foros, manuales, ALDOS, paquetería o proyectos te han resultado de ayuda, apreciaremos mucho nos apoyes con un donativo.

Cifrado de particiones con LUKS.

Autor: Joel Barrios Dueñas
Correo electrónico: darkshram en gmail punto com
Sitio de Red: http://www.alcancelibre.org/
Jabber ID: darkshram@jabber.org

Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1

© 1999-2016 Joel Barrios Dueñas. Usted es libre de copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer y citar al autor original. b) No puede utilizar esta obra para fines comerciales (incluyendo su publicación, a través de cualquier medio, por entidades con fines de lucro). c) Si altera o transforma esta obra o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legítimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en castellano. La información contenida en este documento y los derivados de éste se proporcionan tal cual son y los autores no asumirán responsabilidad alguna si el usuario o lector, hace mal uso de éstos.

Introducción.

LUKS (Linux Unified Key Setup-on-disk-format) es una implementación muy sencilla de utilizar para la gestión de particiones y unidades de almacenamiento cifradas en GNU/Linux. Se recomienda su uso en dispositivos móviles, computadoras portátiles y dispositivos de almacenamiento cuya información se desee proteger en caso de extravío o robo.

Las particiones o unidades de almacenamiento externo cifradas con LUKS, pueden ser utilizadas desde Windows utilizando FreeOTFE.

Este documento describe los procedimientos para cifrar una partición de disco duro, asignada al punto de montaje /datos. Cabe señalar que el procedimiento hará que todos los datos de esta partición se pierdan. Si la partición contiene datos de algún tipo, se debe respaldar todo antes de proceder y verificar que el respaldo esté completo e integro, para luego restaurar estos datos después de terminar el procedimiento.

Equipamiento lógico necesario.

En CentOS, Fedora y Red Hat Enterprise Linux.

Por lo general el paquete cryptsetup-luks viene instalado de manera predeterminada. Puede instalar el paquete correspondiente ejecutando lo siguiente:

yum -y install cryptsetup-luks

En openSUSE™ y SUSE™ Linux Enterprise.

Por lo general el paquete cryptsetup viene instalado de manera predeterminada. Puede instalar el paquete correspondiente ejecutando lo siguiente:

yast -i cryptsetup

Procedimientos.

A fin de evitar contratiempos, conviene realizar todos los procedimientos desde el nivel de ejecución 1 (mono usuario). Como root ejecute:

init 1

Antes de proceder, es muy importante cerciorarse de qué dispositivo se va a utilizar para el procedimiento. De ser necesario y sí acaso estuviese montada, ejecute df para determinar que dispositivo corresponde a la partición que se desea cifrar.

df -h

Respalde todos los datos de la partición que necesite cifrar. Copie o mueva, los datos hacia otro dispositivo de almacenamiento. El procedimiento eliminará, de manera inevitable, todo el contenido actual de dicha partición.

mkdir -p /var/respaldo/datos/
tar cpf /var/respaldo/datos.tar /datos/

Antes de continuar será una buena idea que verifique y compruebe que el respaldo es confiable.

Cifrado de una partición existente en CentOS, Fedora™ y Red Hat™ Enterprise Linux.

El algoritmo de ciframiento utilizado de modo predeterminado por LUKS es aes-cbc-essiv:sha256 y el tamaño de la firma es de 256 bits. El algoritmo de ciframiento utilizado por Anaconda —el programa de instalación de CentOS, Fedora™ y Red Hat™ Enterprise Linux— para LUKS es aes-xts-plain64 y el tamaño de la firma es de 512 bits —es decir se utilizan las opciones --cipher con el valor aes-xts-plain64:sha512 y --key-size con el valor 512.

Salvo que se realice el procedimiento desde la instalación del sistema operativo —donde sólo se requiere habilitar la casilla de Cifrar partición— estas distribuciones carecen de una herramienta para hacer el procedimiento fácil. Es necesario hacer uso del intérprete de mandatos.

Una vez hecho el respaldo y que haya verificado que el respaldo es confiable, desmonte la partición que se pretende cifrar:

umount /datos

El siguiente paso es opcional, pero se recomienda llevarlo a cabo, pues mejora el cifrado al llenar previamente la partición con datos aleatorios. Debe tomarse en consideración que &mdahs;dependiendo del tamaño de la partición— ésto puede demorar varias horas o incluso días.

dd if=/dev/urandom of=/dev/sdaX bs=4096

La partición a utilizar se debe preparar ejecutando cryptsetup, con las opciones --verbose (para obtener una salida más descriptiva en caso de problemas), --verify-passphase (para asignar una frase de acceso o bien una contraseña), luksFormat para dar formato en LUKS y el nombre del dispositivo.

cryptsetup --verbose --verify-passphrase luksFormat /dev/sdaX

Lo anterior requerirá responder explícitamente con YES, en mayúsculas, que se desea proceder y que se está consciente que se perderán todos los datos actuales de la partición. A continuación, se pulsa la tecla ENTER y se ingresa la nueva frase o bien la nueva contraseña, que se pretenda asignar.

Una vez realizado lo anterior y para poder hacer uso de la nueva partición cifrada, ejecute cryptsetup con la opción luksOpen, indicando el dispositivo que corresponde a la partición que se acaba de cifrar y el nombre que se quiera asignar a ésta en el planificador de dispositivos (device mapper).

cryptsetup luksOpen /dev/sdaX datos

Lo anterior crea un nuevo dispositivo denominado /dev/mapper/datos.

Para que el sistema operativo pueda utilizarlo, este nuevo dispositivo requiere ser formateado. En el siguiente ejemplo se da formato en ext4 a /dev/mapper/datos:

mkfs.ext4 /dev/mapper/datos

A fin de que el sistema solicite automáticamente la frase de acceso o bien la contraseña, al volver iniciar el sistema, se crea o edita el archivo /etc/crypttab:

vim /etc/crypttab

Dentro de éste se define en el primer campo el nombre que se quiera utilizar para el planificador de dispositivos (device mapper), en el segundo campo se define el nombre del dispositivo que se cifró y en el tercer campo se define none. De manera opcional, aunque poco recomendado, se puede especificar la frase de acceso o bien la contraseña o bien un archivo que contenga ésta, en lugar de none para que el sistema inicie sin necesidad de que el administrador ingrese la frase de acceso o bien la contraseña.

datos	/dev/sdaX	none

Edite el archivo /etc/fstab:

vim /etc/fstab

Añada lo siguiente o bien se reemplaza el nombre del dispositivo anterior (UUID=xxxxxxxxxxxx, /dev/sdaX o LABEL=/datos, dependiendo de la versión del sistema operativo) —como /dev/mapper/datos— para que el sistema operativo utilice automáticamente el dispositivo con el siguiente reinicio:

/dev/mapper/datos   /datos   ext4   defaults,noatime,nodiratime   1 2

Ejecute lo siguiente para montar la partición cifrada:

mount /datos

Restaure los datos que respaldó previamente.

tar xvf /var/respaldo/datos.tar -C /

Restaure los atributos y contextos de SELinux del directorio involucrado.

restorecon -R /datos

Desmonte la partición:

umount /datos

Desconecte el dispositivo ejecutando cryptsetup, con la opción luksClose y el nombre del dispositivo, de acuerdo a como lo vea el planificador de dispositivos:

cryptsetup luksClose /dev/mapper/datos

El archivo initramfs de ALDOS, CentOS, Fedora™ y Red Hat™ Enterprise Linux ya incluye los módulos para cifrado con LUKS y el mapa de dispositivos. Si lo considera pertinente o bien porque el sistema esté utilizando un archivo initramfs distinto al que originalmente venía con el paquete kernel, puede regenerar la imagen de disco RAM que utiliza el núcleo del sistema para cargar los controladores necesarios, ejecutando dracut con la opción -f para forzar la operación y el archivo del archivo initramfs correspondiente como argumento, la versión del núcleo utilizado, la opción -a para añadir módulos de dracut y los nombres de los módulos dm y crypt como argumentos. El siguiente ejemplo detecta automáticamente el nombre del archivo initramfs y la versión del núcleo que corresponda:

dracut -f /boot/initramfs-`uname -r`.img `uname -r` -a dm crypt

Reinicie el sistema. En adelante, para poder iniciar el sistema y así acceder a la partición cifrada, se solicitará la contraseña o frase de acceso definida durante el procedimiento.

Cifrado de una partición existente en openSUSE™ y SUSE™ Linux Enterprise.

El algoritmo de ciframiento utilizado de modo predeterminado por LUKS es aes-cbc-essiv:sha256 y el tamaño de la firma es de 256 bits.

Realice un respaldo de toda la información contenida en la partición que se quiera cifrar. Recuerde que el procedimiento requiere destruir toda la información existente en dicha partición.

Ejecute yast con disk como argumento para utilizar el módulo de YaST para gestión de discos y particiones.

Ejecutar yast disk

El sistema le advertirá que sólo se debe utilizar este módulo de YaST si se entiende perfectamente el concepto de particiones. Responda Yes o Si. Sólo siga las siguientes instrucciones. El ejemplo descrito a continuación considera que se tiene una partición /dev/sdb1 y que actualmente se utiliza con el directorio /datos como punto de montaje.

Use la tecla TAB hasta seleccionar la partición que requiera cifrar.

Advertencia YaST gestión particiones.

Pulse la tecla ENTER. Aparecerá un resumen informativo de la partición seleccionada. Seleccione Edit o Editar.

Seleccionar partición.

Aparecerán las opciones que se pueden aplicar a la partición.

Editar partición.

Seleccione las casillas de las opciones Format partition (o bien Formatear partición) y Encrypt partition (o bien Cifrar partición).

Opciones de la partición.

Use la tecla TAB hasta seleccionar Next o Siguiente y pulse la tecla ENTER.

Casillas Format partition y Encrypt partition.

Utilice la tecla TAB y defina una buena contraseña con confirmación. Recuerde que si olvida o extravía esta contraseña, la información será irrecuperable. Al terminar, utilice la tecla TAB para seleccionar Finish o Finalizar y pulse la tecla ENTER.

Regresa a resumen de partición.

Regresará a la pantalla con el resumen de la partición seleccionada. Use la tecla TAB para seleccionar Next o Siguiente y pulse la tecla ENTER.

Mostrar resumen de procedimientos a realizar.

Se mostrará una pantalla con el resumen de los procedimientos que realizará YaST. Use la tecla TAB para seleccionar Finish o Finalizar y pulse la tecla ENTER o bien sólo pulse la tecla F10.

Ventana de progreso de opraciones.

El sistema realizará todos los procedimientos y cambios necesarios en el sistema indicando el avance de éstos con barras de progreso.

Regreso al intérprete de mandatos.

Al terminar, YaST finalizará y lo devolverá al intérprete de mandatos.

Dialogo para definir contraseña del dispositivo a cifrar.

YaST se encarga de generar automáticamente la imagen de disco RAM utilizada por el núcleo del sistema para cargar los controladores necesarios y a fin de añadir el soporte necesario para gestor de dispositivos.

Reinicie el sistema ejecutando reboot:

Completar el procedimiento.

Se hará una pausa con un diálogo para solicitar la contraseña necesaria para poder desbloquear el dispositivo cifrado cuando inicie de nuevo el sistema.

El sistema deberá continuar el inicio de manera normal luego de ingresar la contraseña.

Restaure los datos correspondientes a partir del respaldo que debió realizar previamente.

Cifrado de una unidad de almacenamiento externo USB.

El procedimiento asume que ya se ha realizado un respaldo de los datos de la unidad de almacenamiento externo USB, pues el procedimiento implica la destrucción de los datos existentes en ésta.

Conecte el dispositivo USB y ejecute dmesg del siguiente modo para determinar que partición que corresponda al dispositivo.

dmesg |grep sd

Lo anterior debe devolver algo similar a lo siguiente.

[ 1368.902764] sd 6:0:0:0: Attached scsi generic sg2 type 0
[ 1368.904999] sd 6:0:0:0: [sdb] 4122624 512-byte logical blocks: (2.11 GB/1.96 GiB)
[ 1368.906562] sd 6:0:0:0: [sdb] Write Protect is off
[ 1368.906572] sd 6:0:0:0: [sdb] Mode Sense: 03 00 00 00
[ 1368.907176] sd 6:0:0:0: [sdb] No Caching mode page present
[ 1368.907183] sd 6:0:0:0: [sdb] Assuming drive cache: write through
[ 1368.910295] sd 6:0:0:0: [sdb] No Caching mode page present
[ 1368.910303] sd 6:0:0:0: [sdb] Assuming drive cache: write through
[ 1369.174678]  sdb: sdb1
[ 1369.182877] sd 6:0:0:0: [sdb] No Caching mode page present
[ 1369.182886] sd 6:0:0:0: [sdb] Assuming drive cache: write through
[ 1369.182892] sd 6:0:0:0: [sdb] Attached SCSI removable disk

Si el sistema realizó el montaje automático de la unidad de almacenamiento externo, determine el punto de montaje y dispositivo asignado ejecutando df sin argumentos.

df

Asumiendo que el sistema asignó el directorio /media/MI-USB como punto de montaje, desmonte la unidad ejecutando lo siguiente:

umount /media/MI-USB

Asumiendo que la partición de la unidad de almacenamiento externo corresponde al dispositivo /dev/sdb1, ejecute cryptsetup, con las opciones --verbose (para obtener una salida más descriptiva en caso de problemas), --verify-passphase (para asignar una frase de acceso o bien una contraseña), luksFormat para dar formato en LUKS y el nombre del dispositivo.

cryptsetup --verbose --verify-passphrase luksFormat /dev/sdb1

Lo anterior requerirá responder explícitamente con YES, en mayúsculas, que se desea proceder y que se está consciente que se perderán todos los datos actuales de la partición. A continuación, se pulsa la tecla ENTER y se ingresa la nueva frase o bien la nueva contraseña, que se pretenda asignar.

Una vez realizado lo anterior, para poder hacer uso de la nueva partición cifrada en la unidad de almacenamiento externo USB, ejecute cryptsetup con la opción luksOpen, indicando el dispositivo que corresponde a la partición que se acaba de cifrar y el nombre que se quiera asignar a ésta en el planificador de dispositivos (device mapper).

cryptsetup luksOpen /dev/sdb1 MI-USB

Lo anterior crea un nuevo dispositivo denominado /dev/mapper/MI-USB.

Para que el sistema operativo pueda utilizarlo, este nuevo dispositivo requiere un formato que pueda ser utilizado en cualquier sistema operativo. En el siguiente ejemplo se da formato en FAT32 a /dev/mapper/MI-USB:

mkfs.vfat /dev/mapper/MI-USB

Monte la partición de la unidad de almacenamiento externo en /media/MI-USB:

mkdir /media/MI-USB
mount /dev/mapper/MI-USB /media/MI-USB

Restaure o copie los datos que requiera utilizar en esta unidad de almacenamiento.

Desmonte la unidad.

umount /media/MI-USB

Desconecte el dispositivo cifrado:

cryptsetup luksClose /dev/mapper/MI-USB

Para utilizar en lo sucesivo la unidad de almacenamiento externo USB desde modo terminal, sin escritorio activo, se sigue el siguiente procedimiento:

mkdir /mnt/mi-usb
cryptsetup luksOpen /dev/sdb1 mi-usb
mount /dev/mapper/mi-usb /mnt/mi-usb

Para utilizar la unidad de almacenamiento externo USB cifrada con LUKS desde el escritorio de GNOME o KDE, se inserta ésta en cualquier puerto USB, dejando que el administrador de archivos se encargue de gestionar lo necesario y mostrar el dialogo para ingresar la clave o frase de acceso necesaria.

Para utilizar la unidad de almacenamiento externo USB cifrada con LUKS desde el escritorio Windows, sólo hay que instalar FreeOTFE, insertar la unidad a cualquier puerto USB, permitiendo que FreeOTFE se encargue de gestionar lo necesario y mostrar el dialogo para ingresar la clave o frase de acceso necesaria. Sin FreeOTFE, Windows solo vería una unidad de almacenamiento externo USB sin formato, mostrando un dialogo para dar formato a ésta.

Si algunos de nuestros foros, manuales, ALDOS, paquetería o proyectos te han resultado de ayuda, apreciaremos mucho nos apoyes con un donativo.

Última Edición: 02/01/2016, 16:54|Hits: 20,938 Ver la versión para imprimir