dm-crypt (Español)/System configuration (Español)
mkinitcpio
Dependiendo de los escenarios particulares, tendrá que activarse un conjunto de los siguientes hooks de mkinitcpio (Español):
busybox | systemd | Caso de uso |
---|---|---|
encrypt |
sd-encrypt |
Siempre necesario cuando se cifra la partición raíz, o una partición que necesita ser montada antes de la raíz. No es necesario en todos los demás casos, ya que los scripts de inicialización del sistema como /etc/crypttab se encargan de desbloquear otras particiones cifradas. Este enlace debe colocarse después del hook udev o systemd . |
keyboard |
Necesario para hacer que los teclados funcionen en el espacio temprano del usuario. | |
keymap |
sd-vconsole |
Proporciona soporte para mapas de teclas no estadounidenses para escribir contraseñas de cifrado; debe colocarse antes del hook encrypt . Configure su mapa de teclas en , vea Keyboard configuration in console (Español)#Configuración persistente. |
Carga un titpo de letra de consola alternativo en el espacio temprano del usuario. Configure su tipo de letra en , vea Linux console#Persistent configuration. |
Otros hooks necesarios deben quedar limpios en otros pasos manuales seguidos durante la instalación del sistema.
Recuerde regenerar initramfs después de guardar los cambios.
Ejemplos
He aquí una configuración típica del archivo utilizando el hook encrypt
:
/etc/mkinitcpio.conf
... HOOKS=(base udev autodetect keyboard keymap consolefont modconf block encrypt lvm2 filesystems fsck) ...
Aquí una configuración con initramfs basada en systemd utilizando el hook sd-encrypt
:
Cargador de arranque
Para activar el arranque de una partición raíz cifrada, es necesario configurar un conjunto de los siguientes parámetros del kernel. Consulte los parámetros del kernel para obtener instrucciones específicas para su cargador de arranque.
Por ejemplo, si utiliza GRUB, los parámetros relevantes se añadirán a antes de generar el archivo de configuración principal. Vea también GRUB (Español)#Advertencias cuando se instala en entorno chroot como otro punto a tener en cuenta al instalar el cargador GRUB.
Los parámetros del kernel que necesita especificar dependen de si está utilizando el hook encrypt
o sd-encrypt
.
Parámetros del Kernel
Los parámetros del kernel como root
y se especifican de la misma manera que los hooks encrypt
y sd-encrypt
.
root
El parámetro especifica el del sistema de archivos raíz real (descifrado):
root=dispositivo
- Si el sistema de archivos está formateado directamente en el dispositivo descifrado, este será .
- Si un LVM se activa primero y contiene un volumen lógico raíz cifrado, el formato anterior se aplica igual.
- Si el sistema de archivos raíz está contenido en un volumen lógico de un LVM cifrado, el mapeador de dispositivos para él vendrá formulado de forma general como .
resume
resume=dispositivo
- es el dispositivo del sistema de archivos descifrado (espacio de intercambio) utilizado para suspender en disco. Si el espacio de intercambio está en una partición separada, lo estará en el formato
/dev/mapper/swap
. Véase también dm-crypt/Swap encryption (Español).
cryptdevice
Este parámetro hará que el sistema solicite la contraseña para desbloquear el dispositivo que contiene la raíz cifrada en un arranque en frío. Es analizado mediante el hook encrypt
para identificar qué dispositivo contiene el sistema cifrado:
cryptdevice=dispositivo:nombre del dipositivo mapeado
- es la ruta al dispositivo que contiene al dispositivo cifrado. Se recomienda el uso de nombres de dispositivos de bloques persistentes.
- es el nombre del dispositivo - mapeado dado al dispositivo después de descifrarlo, que estará disponible como .
- Si un LVM contiene el volúmen root cifrado, el LVM se activa primero y el grupo de volúmenes que contiene el volumen lógico de la raíz cifrada sirve como dispositivo. A continuación, lo que sigue al grupo de volúmenes le corresponderá la raíz mapeada. El parámetro sigue el formato siguiente:
cryptkey
Este parámetro especifica la ubicación de un archivo de claves y es requerido por el hook encrypt
para leer dicho archivo de claves para desbloquear (a menos que haya una clave en la ubicación por defecto, ver más abajo). Puede tener tres conjuntos de parámetros, dependiendo de si el archivo de claves existe como un archivo en un dispositivo en particular, como un flujo de bits que comienza en una ubicación específica o como un archivo en initramfs.
Para un archivo en un dispositivo, el formato es:
cryptkey=dispositivo:tipo de sistema de archivos:ruta
- es el dispositivo de bloque sin formato donde existe la clave.
- es el tipo de sistema de archivos del (o auto).
- es la ruta absoluta del archivo de claves dentro del dispositivo.
Ejemplo:
Para un flujo de bits en un dispositivo, la ubicación de la clave se especifica con el formato siguiente:
cryptkey=dispositivo:desplazamiento:tamaño
donde el desplazamiento («offset») y el tamaño («size») están en bytes. Ejemplo: lee un archivo de claves de 512 bytes desde el principio del dispositivo.
:
, se debe soslayar con una barra invertida \
. En ese caso, el parámetro cryptkey sería el siguiente: cryptkey=/dev/disk/by-id/usb-123456-0\:0:0:512
para una clave en un usb con el id usb-123456-0:0
.Para un archivo incrustado en initramfs el formato sería :
cryptkey=rootfs:ruta'
Ejemplo:
También tenga en cuenta que si no se especifica, por defecto es (en initramfs).
Véase también dm-crypt/Device encryption (Español)#Archivos de claves.
crypto
Este parámetro es específico para pasar las opciones de la modalidad plain de dm-crypt al hook encrypt.
Toma el formato siguiente:
crypto=<hash>:<algoritmo de cifrado>:<tamaño clave>:<desplazamiento>:<salto>
Los argumentos se relacionan directamente con las opciones de cryptsetup. Consulte dm-crypt/Device encryption (Español)#Opciones de cifrado para la modalidad plain
Para un disco cifrado con solo las opciones predeterminadas de plain, se deben especificar los argumentos de , pero cada entrada se puede dejar en blanco:
crypto=::::
Un ejemplo específico de argumentos sería:
crypto=sha512:twofish-xts-plain64:512:0:
Utilizar el hook sd-encrypt
En todo lo que sigue puede reemplazarse con luks
. Los parámetros solo son respetados por initrd. Los parámetros luks
son respetados tanto por el sistema principal como por initrd. A menos que desee controlar dispositivos que se desbloqueen después del inicio desde la línea de órdenes del kernel, use . Vea para más opciones y detalles.
rd.luks.uuid
rd.luks.uuid
se puede omitir cuando se utiliza rd.luks.name
.rd.luks.uuid=UUID
Especifique el UUID del dispositivo que se va a descifrar en el arranque con este indicador. Si el UUID está en , se usarán las opciones enumeradas allí. Para se usarán las opciones de o /etc/crypttab
.
De forma predeterminada, el dispositivo mapeado estará ubicado en donde UUID es el UUID de la partición LUKS.
rd.luks.name
rd.luks.name=UUID=nombre
Especifique el nombre del dispositivo mapeado después de que la partición LUKS esté abierta. Por ejemplo, al especificar indica que el dispositivo desbloqueado se encuentra en . Si no se especifica nada, el dispositivo mapeado se entenderá ubicado en donde UUID es el UUID de la partición LUKS. Cuando use este parámetro, puede omitir .
Esto es equivalente al segundo parámetro de para encrypt
.
rd.luks.options
rd.luks.options=UUID=opciones
o
rd.luks.options=opciones
Especifique las opciones para el dispositivo listado después de UUID
o, si no se especifica, para todos los UUID no especificados en otra parte (por ejemplo, crypttab).
Esto es aproximadamente equivalente al tercer parámetro de para encrypt
.
Sigue un formato similar a las opciones en crypttab: las opciones están separadas por comas, y, a su vez, las opciones con valores se especifican usando .
Por ejemplo:
rd.luks.options=timeout=10s,swap,cipher=aes-cbc-essiv:sha256,size=256
rd.luks.key
sd-encrypt
solo admite archivos de clave incrustados en initramfs (es decir, especificado en la matriz FILES
en /etc/mkinitcpio.conf
).systemd issue 9181.rd.luks.key=UUID=archivo de claves
o
rd.luks.key=archivo de claves
Indique la ubicación de un archivo de claves utilizado para descifrar el dispositivo especificado en . No hay una ubicación predeterminada como la que hay con el hook encrypt
para el parámetro .
Tiempo de espera («timeout»)
Hay dos opciones que afectan el tiempo de espera para ingresar la contraseña durante el inicio:
- especifica el tiempo de espera para consultar una contraseña.
- especifica cuánto tiempo debe esperar systemd para que se muestre el dispositivo rootfs antes de retirarlo (el valor predeterminado es 90 segundos).
Si desea desactivar el tiempo de espera por completo, establezca ambos tiempos en cero:
rd.luks.options=timeout=0 rootflags=x-systemd.device-timeout=0
crypttab
El archivo /etc/crypttab
(tabla de dispositivos cifrados) es similar al archivo fstab y contiene una lista de dispositivos cifrados que se desbloquearán durante el inicio del sistema. Este archivo se puede utilizar para montar automáticamente dispositivos de intercambio cifrados o sistemas de archivos secundarios.
se lee antes que , por lo que los contenedores de dm-crypt se pueden desbloquear antes de que se monte el sistema de archivos que contiene en su interior. Tenga en cuenta que se lee después de que el sistema se haya iniciado, por lo tanto, no reemplaza el desbloqueo de particiones cifradas mediante el uso de hooks de mkinitcpio y opciones del cargador de arranque como en el caso de la partición raíz cifrada. El procesado de en el momento del arranque se realiza mediante automáticamente.
Consulte para obtener detalles, lea a continuación algunos ejemplos, y la sección #Montaje en el momento del arranque para obtener instrucciones sobre cómo usar los UUID para montar un dispositivo cifrado.
sd-encrypt
, si la contraseña de una partición no raíz es la misma que la de la partición raíz, no hay necesidad de poner esa partición que no es raíz en crypttab debido al almacenamiento en caché de la contraseña. Consulte este hilo del foro para obtener más información.Montaje en el momento del arranque
Si desea montar una unidad cifrada en el momento del arranque, ingrese el UUID del dispositivo en /etc/crypttab
. Obtenga el UUID (de la partición) usando la orden y agregándolo a como sigue:
/etc/crypttab
externaldrive UUID=2f9a8428-ac69-478a-88a2-4aa458565431 none luks,timeout=180
El primer parámetro es el nombre que prefiera del dispositivo mapeado para la unidad cifrada. La opción expondrá un prompt durante el inicio para escribir la contraseña que desbloquee la partición. La opción define un tiempo de espera en segundos para ingresar la contraseña de descifrado durante el arranque.
También se puede configurar un archivo de claves y remitirse a él en lugar de esteblecer . Esto da como resultado un desbloqueo automático, si se puede acceder al archivo de claves durante el inicio. Dado que LUKS ofrece la opción de tener varias claves, la opción elegida también se puede cambiar más adelante.
Utilice el nombre que ha definido en /etc/crypttab
para el mapeado del dispositivo en de la siguiente manera:
Dado que ya es el resultado de un mapeado de partición único, no es necesario especificar un UUID para ello. En cualquier caso, el dispositivo mapeado con el sistema de archivos tendrá un UUID diferente al de la partición en la que está cifrado.
Desbloquear con archivo de claves
If the keyfile for a secondary file system is itself stored inside an encrypted root, it is safe while the system is powered off and can be sourced to automatically unlock the mount during with boot via crypttab. For example, unlock a crypt specified by UUID:
/etc/crypttab
home-crypt UUID=<UUID identifier> /etc/mykeyfile
Then use the device mapper's name (defined in /etc/crypttab
) to make an entry in :
Since already is the result of a unique partition mapping, there is no need to specify an UUID for it. In any case, the mapper with the filesystem will have a different UUID than the partition it is encrypted in.
Montaje de un dispositivo de bloque apilado
Los generadores de systemd también procesan automáticamente los dispositivos de bloque apilados en el arranque.
Por ejemplo, puede crear una configuración RAID (Español), utilizar cryptsetup para cifrarlo y crear un volumen lógico LVM (Español) con el sistema de archivos correspondiente dentro del dispositivo de bloque cifrado. El resultado será esto:
que le pedirá la contraseña y se montará automáticamente en el arranque.
Dado que se han especificado las entradas correctas para crypttab (por ejemplo, UUID para el dispositivo ) y para fstab (/dev/vgraid/lvraid
) respectivametne, no hay necesidad de agregar más configuraciones/hooks de mkinitcpio, porque el procesamiento de /etc/crypttab
se aplica solo a montajes no root. Una excepción es cuando el hook se usa ya (por ejemplo, para el dispositivo raíz). En este caso, e initramfs necesitan actualizarse para lograr que la correcta raid de la raíz se elija primero.
Montaje bajo demanda
Puede iniciar en lugar de usar:
# cryptsetup luksOpen UUID=... externaldrive
cuando tenga una entrada como sigue en su /etc/crypttab
:
De esa manera no necesita recordar las opciones exactas de crypttab. Le pedirá la contraseña si es necesario.
El archivo unit correspondiente será generado automáticamente por . Puede listar todos los archivos unit generados usando:
$ systemctl list-unit-files | grep systemd-cryptsetup
Solución de problemas
El espacio del sistema en el arranque/solicitud de contraseña no se muestra
Si está usando Plymouth (Español), asegúrese de cargar los módulos correctos (vea: Plymouth#The plymouth hook[enlace roto: sección no válida]) o desactívelos. De lo contrario, Plymouth no asumirá la solicitud de contraseña, haciendo imposible el inicio del sistema.