< Dm-crypt (Español)

dm-crypt (Español)/Swap encryption (Español)

Dependiendo de los requisitos, se pueden usar diferentes métodos para cifrar la partición de intercambio, los cuales se describen a continuación. Una configuración en la que el cifrado del espacio de intercambio se reinicializa en cada arranque (con un nuevo cifrado) proporciona una mayor protección de datos, ya que evita los fragmentos de archivos confidenciales que pueden haber sido intercambiados hace tiempo sin sobrescribirlos. Sin embargo, volver a cifrar el espacio de intercambio también inhibe el uso de una función de suspensión en disco en general.

Esta traducción de Dm-crypt/Swap encryption fue revisada el 2018-11-22. Si existen cambios puede actualizarla o avisar al equipo de traducción.

Sin soporte para suspensión en disco

En los sistemas en los que la suspensión en disco (hibernación) no es una función deseada, se puede configurar /etc/crypttab para descifrar la partición de intercambio con una contraseña aleatoria en el momento del arranque con la modalidad plain de dm-crypt. La contraseña aleatoria se descarta al cerrarse, dejando solo datos cifrados e inaccesibles en el dispositivo de intercambio.

Para activar esta función, simplemente elimine el comentario de la línea que comienza con swap en /etc/crypttab. Cambie el parámetro <dispositivo> con el nombre de su dispositivo de intercambio. Por ejemplo, se verá algo como esto:

/etc/crypttab
# <name>  <device>     <password>     <options>
swap      /dev/sd''X#''    /dev/urandom   swap,cipher=aes-xts-plain64,size=256

Esto mapeará /dev/sdX# en /dev/mapper/swap como una partición de intercambio que se puede agregar en /etc/fstab como un espacio de intercambio normal. Si antes tenía una partición de intercambio no cifrada, no olvide desactivarla, o reutilice la entrada de fstab cambiando el dispositivo a /dev/mapper/swap. Las opciones predeterminadas deben ser suficientes para la mayoría al uso. Para otras opciones y una explicación de cada columna, vea crypttab(5) así como point cryptsetup FAQ 2.3.

Advertencia: Todo el contenido del dispositivo nombrado se eliminará permanentemente. Es peligroso usar el nombre simple dado por el kernel para un dispositivo de intercambio, ya que el orden de su nombre (por ejemplo /dev/sda, /dev/sdb) cambia en cada arranque . Las opciones son:

Para usar un nombre de dispositivo persistente en lugar del nombre simple dado por el kernel, primero identifique el dispositivo de intercambio:

Luego utilice como una referencia persistente para la partición de ejemplo /dev/sdX# (si se devuelven dos resultados como lo anterior, elija uno de ellos):

Después de reiniciar para activar el espacio intercambio cifrado, observará que al ejecutar la orden se muestra una entrada de mapeado de dispositivo arbitraria (por ejemplo, /dev/dm-1), mientras que la orden lsblk muestra crypt en la columna . Debido a que se cifra en cada inicio, el UUID para /dev/mapper/swap cambiará cada vez.

UUID y LABEL

Es peligroso utilizar el espacio intercambio en el archivo crypttab con los simples nombres de los dispositivos proporcionados por el kernel tales como o incluso . Un pequeño cambio en los nombres de los dispositivos o en el diseño de la partición y /etc/crypttab hará que sus valiosos datos sean formateados en el próximo arranque. Lo mismo cabe decir si usa PARTUUID y luego decide usar esa partición para otra cosa sin eliminar primero su entrada en crypttab.

Es más confiable identificar la partición correcta al darle un UUID o ETIQUETA (LABEL en inglés) genuino. Por defecto, eso no funciona porque dm-crypt y simplemente sobrescribirían cualquier contenido en esa partición que eliminaría también el UUID y el LABEL; sin embargo, es posible especificar un offset (desplazamiento) para el espacio de intercambio. Esto permite crear un sistema de archivos muy pequeño, vacío y falso, sin otro propósito que el de proporcionar un UUID o una ETIQUETA persistentes para el cifrado del espacio intercambio.

Cree un sistema de archivos con la etiqueta («L de label») de su elección:

# mkfs.ext2 -L cryptswap /dev/sdX# 1M

El parámetro poco habitual que hay después del nombre del dispositivo, limita el tamaño del sistema de archivos a 1 MiB, dejando un hueco para el espacio de intercambio cifrado.

Con esto, puede ahora ser identificado fácilmente por su UUID o LABEL, independientemente de cómo pueda cambiar en el futuro el nombre del dispositivo o incluso el número de la partición. Lo relevante serán dichas entradas en /etc/crypttab y /etc/fstab:

Nota sobre offset: este espacio es de 2048 sectores de 512 bytes, por lo tanto 1 MiB. De esta manera, el espacio de intercambio que se cifrará no afectará al UUID/LABEL del sistema de archivos (que queda dentro del espacio offset), y la alineación de los datos también funcionará.

Usando esta configuración, el cifrado del espacio de intercambio solo intentará usar la partición con la ETIQUETA («LABEL») correspondiente, independientemente de cuál sea el nombre del dispositivo. En caso de que decida utilizar la partición para otra cosa, al formatearla también se eliminará el LABEL utilizado para el crifrado, por lo que cryptswap no lo sobrescribirá en su próximo arranque.

Con soporte para suspensión en disco

Para poder reanudar después de suspender el equipo en el disco (hibernación), es necesario mantener el espacio de intercambio intacto. Por lo tanto, se requiere tener una partición o archivo de intercambio preexistente cifrado con LUKS, que se pueda almacenar en el disco o ingresar manualmente al reanudar.

Los siguientes tres métodos son alternativas para configurar un espacio de intercambio cifrado para suspender en disco. Si aplica alguno de ellos, tenga en cuenta que los datos críticos intercambiados por el sistema pueden permanecer en el espacio de intercambio durante un período de tiempo prolongado (es decir, hasta que se vuelva a sobrescribir). Para reducir este riesgo, considere configurar un «job» (trabajo) del sistema que vuelva a cifrar el espacio de intercambio, por ejemplo, cada vez que el sistema entre en un cierre regular, junto con el método de su elección.

LVM sobre LUKS

Una forma sencilla de realizar un espacio de intercambio cifrado con soporte para suspensión en disco es mediante el uso de un dispositivo de intercambio LVM (Español) en la misma capa de cifrado que el volumen raíz, de modo que ambos se abren mediante el hook en el arranque. Siga las instrucciones de Dm-crypt/Encrypting an entire system (Español)#LVM sobre LUKS y luego configure los parámetros de kernel necesarios.

Suponiendo que ha configurado LVM sobre LUKS con un volumen lógico de intercambio (en /dev/MyStorage/swap por ejemplo), todo lo que debe hacer es agregar el hook resume a mkinitcpio (Español) y añadir el parámetro del kernel resume=/dev/MyStorage/swap a su cargador de arranque. Para GRUB (Español), esto se puede hacer agregando la variable a la línea en :

luego ejecute para actualizar el archivo de configuración de GRUB. Para agregar el hook a mkinitcpio, modifique la siguiente línea en el archivo :

después regenere initramfs.

Hook de mkinitcpio

Si el dispositivo de intercambio está en un dispositivo diferente al del sistema de archivos raíz, no se abrirá con el hook , es decir, la reanudación se realizará antes de que /etc/crypttab se pueda usar, por lo tanto, se requiere crear un hook en /etc/mkinitcpio.conf para abrir el dispositivo de intercambio LUKS antes de reanudar.

Si desea usar una partición que actualmente esté usando el sistema, primero debe desactivarla:

# swapoff /dev/<dispositivo>

También debe asegurarse de eliminar cualquier línea en /etc/crypttab que apunte a dicho dispositivo.

Si está reutilizando una partición de intercambio existente, y si la partición está en una tabla de particionado GPT, necesitará usar gdisk para ajustar el atributo 63 de la partición para «que no se monte automáticamente» en ella. Esto evitará que systemd-gpt-auto-generator descubra y active la partición en el arranque.

La siguiente configuración tiene la desventaja de tener que insertar una contraseña adicional para la partición de intercambio manualmente en cada arranque.

Para formatear el contenedor encriptado, destinado a la partición de intercambio, cree un ranura de clave («keyslot») para una frase de contraseña memorizable por el usuario.

# cryptsetup luksFormat --type luks2 /dev/<dispositivo>

Abra la partición en :

# cryptsetup open /dev/<dispositivo> swapDevice

Cree un sistema de archivos de intercambio en la partición mapeada:

# mkswap /dev/mapper/swapDevice

Ahora tiene que crear un hook para abrir el espacio de intercambio en el momento del arranque. Puede instalar y configurar , o seguir las siguientes instrucciones. Cree un archivo de hook que contenga la orden de abrir:

/etc/initcpio/hooks/openswap
run_hook ()
{
    cryptsetup open /dev/<dispositivo> swapDevice
}

para abrir el dispositivo de intercambio escribiendo su contraseña o

para abrir el dispositivo de intercambio cargando un archivo de claves desde un dispositivo raíz cifrado.

En algunos equipos, las condiciones de velocidad pueden hacer que mkinitcpio intente montar el dispositivo antes de que se complete el proceso de descifrado y de numeración del dispositivo. El bloque Optional comentado retrasará el proceso de arranque hasta 2 segundos, momento en el que el dispositivo raíz estará listo para montarse.

Luego cree y edite el archivo de configuración del hook:

Agregue el hook en la matriz en el archivo /etc/mkinitcpio.conf, antes de filesystem pero después de . No olvide agregar el hook después de .

HOOKS=(... encrypt openswap resume filesystems ...)

Regenere initramfs.

Añada la partición mapeada a /etc/fstab agregando la siguiente línea:

/dev/mapper/swapDevice swap swap defaults 0 0

Configure su sistema para reanudar desde . Por ejemplo, si usa GRUB (Español) con el soporte de hibernación del kernel, añada el parámetro del kernel a GRUB en la línea del archivo . Una línea del kernel con particiones raíz y de intercambio cifradas puede verse así:

kernel /vmlinuz-linux cryptdevice=/dev/sda2:rootDevice root=/dev/mapper/rootDevice resume=/dev/mapper/swapDevice ro

En el momento del arranque, el hook abrirá la partición de intercambio, por lo que se podrá usar la «reanudación» del kernel. Si utiliza hook especiales para reanudar desde la hibernación, asegúrese de que estén colocados después de en la matriz . Tenga en cuenta que debido a la apertura del espacio de intercambio de initrd, no es necesaria ninguna entrada para swapDevice en /etc/crypttab en este caso.

Utilizar un archivo de intercambio

Se puede utilizar un archivo de intercambio para reservar un espacio de intercambio dentro de una partición existente y también se puede configurar dentro de una partición cifrada. Al reanudar desde un archivo de intercambio, se debe proporcionar el hook con la contraseña para desbloquear el dispositivo donde se encuentra el archivo de intercambio.

Para crearlo, primero elija una partición mapeada (por ejemplo, ) cuyo sistema de archivos montado (por ejemplo, en /) contenga suficiente espacio libre como para crear un archivo de intercambio con el tamaño deseado.

Ahora cree el archivo de intercambio (por ejemplo, ) dentro del sistema de archivos montado de la partición mapeada elegida. Asegúrese de activarlo con y también agrege su archivo a /etc/fstab más adelante. Tenga en cuenta que el contenido anterior del archivo de intercambio permanece transparente durante los reinicios.

Configure su sistema para reanudar desde la partición mapeada elegida. Por ejemplo, si utiliza GRUB (Español) con soporte para hibernación del kernel, agregue su partición mapeada elegida y resume_offset=vea el cálculo de la orden siguiente a la línea del kernel en la configuración de GRUB (generalmente en ). Una línea con una partición raíz encriptada puede verse así:

kernel /vmlinuz-linux cryptdevice=/dev/sda2:rootDevice root=/dev/mapper/rootDevice resume=/dev/mapper/rootDevice resume_offset=123456789 ro

El del archivo de intercambio apunta al inicio (extensión cero) del archivo y puede identificarse así:

# filefrag -v /swapfile | awk '{if($1=="0:"){print $4}}'

Agregue el hook al archivo y regenere initramfs después:

HOOKS=(... encrypt resume ... filesystems ...)

Si usa un teclado USB para introducir su contraseña de descifrado, entonces el módulo debe colocarse delante del hook , como se muestra a continuación. De lo contrario, no podrá iniciar su sistema porque no podrá ingresar la contraseña de descifrado para desbloquear la partición raíz de Linux. (Si aún tiene este problema después de agregar , intente con , aunque este está en desuso).

HOOKS=(... keyboard encrypt ...)

Problemas conocidos

gollark: Potato NOT bad!!!!
gollark: Skynet can't mute people. It's purely a potatOS-backed communications platform.
gollark: And by "did things" I mean "said things about your administrative rulership".
gollark: Also, I do not think I deleted any messages about you muting sinth, only ones where you did things.
gollark: > and yes, that was an accidentSTOP RANDOMLY MUTING PEOPLE
This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.