dm-crypt (Español)/Encrypting a non-root file system (Español)
Los siguientes son ejemplos de encriptación de un sistema de archivos secundario, es decir, no raíz, con dm-crypt.
Descripción general
El cifrado de un sistema de archivos secundario generalmente protege solo los datos confidenciales, mientras deja el sistema operativo y los archivos de programa sin cifrar. Esto es útil para cifrar un medio externo, como una unidad USB, de modo que se pueda mover a diferentes equipos de forma segura. También se podría optar por encriptar conjuntos de datos por separado según quién tenga acceso a ellos.
Como dm-crypt es una capa de cifrado de nivel de bloque, solo cifra dispositivos completos, #Partición completa y #Dispositivo loop. Para cifrar archivos individuales se requiere una capa de cifrado de nivel de sistema de archivos, como eCryptfs o EncFS. Consulte Disk encryption (Español) para obtener información general sobre cómo proteger datos privados.
Partición
Este ejemplo cubre el cifrado de la partición /home
, pero se puede aplicar a cualquier otra partición no raíz comparable que contenga datos de usuario.
/home
de un solo usuario en una partición, o crear una partición común para todos los directorios /home
de los usuarios.Primero asegúrese de que la partición esté vacía (sin un sistema de archivos asociado). Elimine la partición y cree una vacía si tiene un sistema de archivos. Luego prepare la partición borrándola con seguridad, vea Dm-crypt (Español)/Drive preparation (Español)#Borrar de forma segura la unidad de disco duro.
Cree la partición que contendrá el contenedor cifrado.
Luego configure el encabezado LUKS con:
# cryptsetup opciones luksFormat --type luks2 dispositivo
Sustituya dispositivo
por la partición creada anteriormente. Vea Dm-crypt (Español)/Device encryption (Español)#Opciones de cifrado para la modalidad LUKS para conocer los detalles disponibles para opciones
.
Para obtener acceso a la partición cifrada, desbloquéala con el mapeador de dispositivos, utilizando:
# cryptsetup open dispositivo nombre
Después de desbloquear la partición, estará disponible en /dev/mapper/nombre
. Ahora crea un sistema de archivos de su elección con:
# mkfs.sistema_de_archivos /dev/mapper/nombre
Monte el sistema de archivos en /home
, o si solo un usuario tiene acceso en /home/nombre_de_usuario
, vea #Montaje y desmontaje manual.
Montaje y desmontaje manual
Para montar la partición:
# cryptsetup open dispositivo nombre # mount -t sistema_de_archivos /dev/mapper/nombre /mnt/home
Para desmontarla:
# umount /mnt/home # cryptsetup close nombre
Desbloqueo y montaje automatizados
Existen tres soluciones diferentes para automatizar el proceso de desbloqueo de la partición y el montaje del sistema de archivos.
En el momento del arranque
Utilizando el archivo de configuración /etc/crypttab
, el desbloqueo ocurre en el momento del arranque mediante el análisis automático de systemd. Esta es la solución recomendada si desea utilizar una partición común para todas las particiones «home» de los usuarios o montar automáticamente otro dispositivo de bloques cifrado.
Consulte Dm-crypt (Español)/System configuration (Español)#crypttab para obtener referencias y Dm-crypt (Español)/System configuration (Español)#Montaje en el momento del arranque para ver un ejemplo de configuración.
En el inicio de sesión del usuario
Utilizando pam_exec es posible desbloquear (cryptsetup open) la partición en el inicio de sesión del usuario: esta es la solución recomendada si desea tener el directorio «home» de un solo usuario en una partición. Vea dm-crypt (Español)/Mounting at login (Español).
También es posible desbloquear el inicio de sesión del usuario con pam_mount.
Dispositivo loop
Hay dos métodos para usar un dispositivo loop como un contenedor cifrado, uno que usa directamente losetup
y otro no.
Sin losetup
La utilización de losetup directamente se puede evitar completamente haciendo lo siguiente [1]:
# dd if=/dev/urandom of=key.img bs=20M count=1 # cryptsetup --align-payload=1 luksFormat key.img
Antes de ejecutar cryptsetup
, mire primero las opciones de cifrado para la modalidad LUKS y los algoritmos de cifrado y modalidades de operación para seleccionar la configuración adicional deseada.
Las instrucciones para abrir el dispositivo y el sistema de archivos son las mismas que para #Partición.
Tener un archivo demasiado pequeño le dará un error Requested offset is beyond real size of device /dev/loop0
, pero, como referencia aproximada, la creación de un archivo 4 MiB lo encriptará con éxito. [2]
IfSi se crea un archivo más grande, dd
de /dev/urandom
se detendrá después de 32 MiB, requiriendo la opción iflag=fullblock
para completar la escritura. [3]
El procedimiento de montar y desmontar manualmente es equivalente a #Montaje y desmontaje manual.
Con losetup
Un dispositivo de looppermite asignar un dispositivo de bloques a un archivo con la herramienta estándar losetup
de util-linux. El archivo puede contener un sistema de archivos, que se puede usar como cualquier otro sistema de archivos. Muchos usuarios conocen TrueCrypt como una herramienta para crear contenedores cifrados. Casi la misma funcionalidad se puede lograr con un sistema de archivos loopback cifrado con LUKS y es el que se muestra en el siguiente ejemplo.
Primero, comience creando un contenedor cifrado, utilizando un generador de números aleatorios apropiado:
# dd if=/dev/urandom of=/bigsecret bs=1M count=10
Esto creará el archivo bigsecret
con un tamaño de 10 megabytes.
A continuación, cree el nodo del dispositivo /dev/loop0
,de modo que podamos montar/usar nuestro contenedor:
# losetup /dev/loop0 /bigsecret
/dev/loop0: No such file or directory
, primero debe cargar el módulo del kernel con modprobe loop
. En estos tiempos (Kernel 3.2) se crean dispositivos loop bajo demanda. Solicite un nuevo dispositivo loop con # losetup -f
.A partir de ahora, el procedimiento es el mismo que para #Partición, excepto por el hecho de que el contenedor ya está asignado al azar y no necesitará otro borrado seguro.
Desmontar y montar manualmente
Para desmontar el contenedor:
# umount /mnt/secret # cryptsetup close secret # losetup -d /dev/loop0
Para montar el contenedor de nuevo:
# losetup /dev/loop0 /bigsecret # cryptsetup open /dev/loop0 secret # mount -t ext4 /dev/mapper/secret /mnt/secret