dm-crypt/Encrypting an entire system (Español) - ArchWiki

# dm-crypt/Encrypting an entire system (Español)

Volver a dm-crypt (Español).

Los siguientes son ejemplos de escenarios comunes en el cifrado completo de un sistema con dm-crypt. Se explican todas las adaptaciones que se necesitan hacer al proceso de instalación. Todas las herramientas necesarias para ello están presentes en la imagen de instalación.

## Resumen

Asegurar un sistema de archivos root es donde dm-crypt sobresale, en cuanto a características y rendimiento. Cuando el sistema de archivos de un sistema (root) está en un dispositivo dm-crypt, prácticamente todos los archivos del sistema están cifrados. A diferencia de la encriptación de forma selectiva de sistemas de archivos no root, un sistema de archivos root encriptado puede ocultar información, tales como qué programas se instalan, los nombres de usuario y todas sus cuentas y los vectores de vuelcos de datos comunes, tales como mlocate y `/var/log/`. Además, un sistema de archivos root encriptado hace que la manipulación del sistema sea mucho más difícil, al estar todo cifrado con las excepciones del gestor de arranque y el kernel.

En la siguiente tabla se ilustran las ventajas de todos los escenarios posibles, diferenciando los pros y contras de cada uno:

Escenarios | Ventajas | Desventajas
--- | --- | ---
LUKS muestra una configuración sencilla y básica de una partición root completamente cifrada con LUKS. | Particionado y configuración sencilla | Rigidez; el espacio del disco a encriptar debe estar preasignado
LVM sobre LUKS logra un particionado flexible usando LVM dentro de una única partición encriptada con LUKS. | Particionado sencillo con la ductilidad de LVM Solo es necesaria una clave para desbloquear todos los volúmenes (por ejemplo, configuración fácil para restaurar desde disco) El esquema del volumen no es transparente cuando está bloqueado | LVM añade una capa y un hook adicional de mapeo Poco útil si un volumen particular necesita una clave separada
LUKS sobre LVM utiliza dm-crypt solo después de que LVM se ha configurado. | LVM puede utilizarse para tener cifrado volúmenes que abarquen varios discos Facilidad para mezclar grupos de volúmenes encriptados/desencriptados | Complejo; cambiar volúmenes requiere cambiar demasiados mapeados cifrados Los volúmenes requieren claves propias cada uno El esquema LVM es transparente cuando está bloqueado
Plain dm-crypt utiliza la modalidad plain de dm-crypt, es decir, sin una cabecera LUKS y sus opciones para múltiples claves. Este escenario también permite emplear dispositivos USB para /boot y almacenamiento de claves, que se puede aplicar a los otros escenarios. | Capacidad de recuperación de los datos para los casos en que pueda dañarse un encabezado LUKS Permite cifrado negable | Es necesaria una alta competencia en todos los parámetros de encriptación Clave de cifrado única y sin opción de cambiarla

Si bien todos los escenarios anteriores proporcionan una protección mucho mayor contra las amenazas externas que los sistemas de archivos cifrados secundariamente, también comparten una desventaja común: cualquier usuario en posesión de la clave de cifrado puede descifrar toda la unidad y, por lo tanto, puede acceder a los datos de otros usuarios. Si esto es motivo de preocupación, es posible utilizar una combinación de dispositivos de bloques y entramado de cifrado del sistema de archivos y recoger las ventajas de ambos. Véase Disk encryption para planificar las opciones.

## Esquema de particionado simple con LUKS

Este ejemplo explica cómo cifrar un sistema completo con dmcrypt + LUKS en un esquema de particionado simple::

    +----------------------+--------------------------+------------------------------+
    |Partición de arranque |Partición del sistema     |Espacio libre opcional        |
    |boot                  |cifrada con LUKS          |para configurar posteriormente|
    |/dev/sdaY             |/dev/sdaX                 |swap o particiones adicionales|
    +----------------------+--------------------------+------------------------------+

Los primeros pasos se pueden realizar directamente después de arrancar la imagen de instalación de Arch Linux.

### Preparar el disco

Antes de crear las particiones, debe informarse sobre la importancia y los métodos para borrar de forma segura el disco, descrito en Dm-crypt/Drive preparation.

A continuación, cree las particiones necesarias, al menos una para `/` (por ejemplo, `/dev/sdaX`) y otra para `/boot` (`/dev/sdaY`), véase Partitioning.

### Preparar las particiones que no son boot

Las siguientes órdenes crean y montan la partición root encriptada. Se corresponden con el proceso descrito con detalle en Dm-crypt/Encrypting a non-root file system#Partition (que, a pesar del título, se puede aplicar a particiones root, siempre y cuando mkinitcpio y el gestor de arranque estén configurados correctamente). Si desea utilizar determinadas opciones de cifrado no predeterminadas (por ejemplo, algoritmo de cifrado, longitud de la clave, etc.), consulte encryption options antes de ejecutar la primera orden:

    # cryptsetup -y -v luksFormat /dev/sdaX
    # cryptsetup open /dev/sdaX cryptroot
    # mkfs -t ext4 /dev/mapper/cryptroot
    # mount -t ext4 /dev/mapper/cryptroot /mnt

Compruebe que el mapeado funciona según lo previsto:

    # umount /mnt
    # cryptsetup close cryptroot
    # cryptsetup open /dev/sdaX cryptroot
    # mount -t ext4 /dev/mapper/cryptroot /mnt

Si ha creado particiones separadas (por ejemplo, `/home`), estos pasos tienen que ser adaptados y repetidos por todas ellas, a excepción de `/boot`. Véase Dm-crypt/Encrypting_a_non-root_file_system#Automated_unlocking_and_mounting para saber cómo manejar particiones adicionales en el arranque.

Tenga en cuenta que cada dispositivo de bloque requiere su propia contraseña. Esto puede ser un inconveniente, porque da lugar a una frase de acceso separada para cada uno que hay que introducir durante el inicio. Una alternativa es utilizar un archivo de claves almacenada en la partición del sistema para desbloquear la partición separada mediante `crypttab`. Vease Dm-crypt/Device encryption#Using LUKS to Format Partitions_with a Keyfile para obtener instrucciones.

### Preparar la partición de arranque boot

Lo que no se puede encriptar es la partición `/boot`, que se necesita para una partición root encriptada. Para una partición estándar `/boot` MBR/no-EFI, por ejemplo, ejecute:

    # mkfs -t ext4 /dev/sdaY
    # mkdir /mnt/boot
    # mount -t ext4 /dev/sdaY /mnt/boot

### Montar los dispositivos

Como en Installation guide (Español)#Montar las particiones, hay que montar los dispositivos mapeados, no las particiones subyacentes. En cambio `/boot`, que no está encriptada, se monta directamente como de costumbre.

### Configurar mkinitcpio

Añada el hook `encrypt` en mkinitcpio.conf antes de `filesystems`:

    etc/mkinitcpio.conf

    HOOKS="... encrypt ... filesystems ..."

Véase dm-crypt/System configuration#mkinitcpio para conocer más detalles y otros hooks que pueda necesitar.

### Configurar el gestor de arranque

Para arrancar la partición root encriptada, el siguiente parámetro del kernel tiene que ser pasado al gestor de arranque:

    cryptdevice=/dev/sdaX:cryptroot

Véase Dm-crypt/System configuration#Boot loader para conocer más detalles y otros parmámetros que pueda necesitar.

## LVM sobre LUKS

El método sencillo es crear LVM sobre la partición cifrada y no al revés. Técnicamente, LVM se configura sobre un gran dispositivo cifrado. Por lo tanto, LVM no es transparente hasta que el dispositivo de bloque se desbloquea y la estructura del volumen subyacente se escanea y se monta durante el arranque. El esquema de particionado del disco en este ejemplo sería:

    +------------------------------------------------------------------------------------- + +--------------+
    |Volumen lógico 1 [15GB] |Volumen lógico 2 [35GB]   |Volumen lógico3 [200GB]           | |              |
    |/dev/MyStorage/rootvol  |/dev/MyStorage/homevol    |/dev/MyStorage/mediavol           | | Partición    |
    |_ _ _ _ _ _ _ _ _ _ _ _ |_ _ _ _ _ _ _ _ _ _ _ _ _ |_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ | | de arranque  |
    |                                                                                      | | boot         |
    |                        Partición encriptada con LUKS                                 | |              |
    |                               /dev/sdaX                                              | | /dev/sdaY    |
    +--------------------------------------------------------------------------------------+ +--------------+

Este método no permite abarcar volúmenes lógicos distribuidos en varios discos, ni siquiera posteriormente. El método #LUKS sobre LVM no tiene esta limitación.

### Preparar el disco

Antes de crear las particiones, debe informarse sobre la importancia y los métodos sobre cómo borrar de forma segura el disco, descrito en Dm-crypt/Drive preparation.

Cuando se utiliza el gestor de arranque GRUB junto con GPT, cree una partición BIOS Boot Partition como se explica en GRUB#BIOS systems.

Cree una partición con punto de montaje en `/boot`, del tipo `8300`, con un tamaño de 100 MB o más.

Cree otra partición del tipo `8E00`, en la que luego residirá el contenedor cifrado.

Cree un contenedor encriptado con LUKS en dicha segunda partición. Introduzca la contraseña elegida dos veces.

    # cryptsetup luksFormat /dev/sdaX

Para obtener más información sobre las opciones disponibles de cryptsetup vea las opciones de encriptación de LUKS antes de ejecutar la orden de arriba.

Abra el contenedor:

    # cryptsetup open --type luks /dev/sdaX lvm

El contenedor descifrado ya está disponible como `/dev/mapper/lvm`.

### Preparar los volúmenes lógicos

Cree un volumen físico sobre el contenedor LUKS abierto:

    # pvcreate /dev/mapper/lvm

Cree un grupo de volúmenes llamado (por ejemplo) `MyStorage`, sobre al volumen físico creado con anterioridad:

    # vgcreate MyStorage /dev/mapper/lvm

Cree varios volúmenes lógicos en el grupo de volúmenes:

    # lvcreate -L 15G MyStorage -n rootvol
    # lvcreate -L 35G MyStorage -n homevol
    # lvcreate -L 200G MyStorage -n mediavol

Cree un sistema de archivos Ext4 en cada volumen lógico:

    # mkfs.ext4 /dev/mapper/MyStorage-rootvol
    # mkfs.ext4 /dev/mapper/MyStorage-homevol
    # mkfs.ext4 /dev/mapper/MyStorage-mediavol

Monte el sistema de archivos root en `/mnt`:

    # mount /dev/MyStorage/rootvol /mnt

Cree el directorio `/mnt/home`:

    # mkdir /mnt/home

Monte el sistema de archivos home en `/mnt/home`:

    # mount /dev/MyStorage/homevol /mnt/home

### Preparar la partición de arranque boot

El gestor de arranque carga el kernel, initramfs, y sus propios archivos de configuración desde el directorio `/boot`. Este directorio debe estar ubicado en un sistema de archivos separado sin cifrar.

Cree un sistema de archivos Ext2 en la partición destinada a `/boot`. Cualquier sistema de archivos que pueda ser leído por el gestor de arranque vale.

    # mkfs.ext2 /dev/sdaY

Cree el directorio `/mnt/boot`:

    # mkdir /mnt/boot

Monte la partición para `/mnt/boot`:

    # mount /dev/sdaY /mnt/boot

Después continúe con el proceso de instalación hasta el paso mkinitcpio.

### Configurar mkinitcpio

Agregue el hook `encrypt` y `lvm2` a mkinitcpio.conf, antes de `filesystems`:

    /etc/mkinitcpio.conf

    HOOKS="... encrypt lvm2 ... filesystems ..."

Nota: El orden de los dos hooks ya no importa con la implementación actual de `lvm2`.

Véase dm-crypt/System configuration#mkinitcpio para conocer más detalles y otros hooks que se puedan necesitar.

### Configurar el gestor de arranque

Con el fin de desbloquear en el arranque la partición root encriptada, es necesario pasar los siguientes parámetros del kernel al gestor de arranque:

    cryptdevice=/dev/partición:MyStorage root=/dev/mapper/MyStorage-rootvol

Véase Dm-crypt/System configuration#Boot loader para más detalles.

Nota: Al reinstalar GRUB, puede recibir avisos como `/run/lvm/lvmetad.socket: connect failed: No such file or directory` o `WARNING: failed to connect to lvmetad: No such file or directory. Falling back to internal scanning`. Esto se debe a que `/run` no está disponible dentro de chroot. Estas advertencias no impedirán el arranque del sistema, siempre que el resto se haya hecho correctamente, por lo que puede continuar con la instalación.

## LUKS sobre LVM

Para utilizar el cifrado sobre LVM, los volúmenes LVM se establecen primero y luego se usan como base para las particiones cifradas. De esta manera, es posible mezclar particiones/volúmenes cifrados/sin cifrar. A diferencia de #LVM sobre LUKS, este método permite que los volúmenes lógicos puedan abarcar con normalidad varios discos.

En el siguiente ejemplo se configura LUKS sobre LVM combinándose con el uso de un archivo de claves para la partición /home y para los volúmenes cifrados temporales como `/tmp` y `/swap`. Este último se considero deseable desde una perspectiva de seguridad, ya que hay datos temporales que pueden contener información sensible y que sobreviven al reinicio hasta tanto se vuelve a inicializar el cifrado. Si tiene experiencia con LVM, será capaz de ignorar/reemplazar LVM y otras especialidades de acuerdo a su propósito.

This article or section needs expansion.

Reason: The intro of this scenario needs some adjustment now that a comparison has been added to #Overview. A suggested structure is to make it similar to the #Simple_partition_layout_with_LUKS intro. (Discuss)

### Preparar el disco

Esquema de particionado:

- `/dev/sda1` -> `/boot`
- `/dev/sda2` -> LVM

Escriba aleatóriamente `/dev/sda2` de acuerdo con Dm-crypt/Drive preparation#dm-crypt_wipe_before_installation.

### Preparar los volúmenes lógicos

    lvm pvcreate /dev/sda2
    lvm vgcreate lvm /dev/sda2
    lvm lvcreate -L 10G -n root lvm
    lvm lvcreate -L 500M -n swap lvm
    lvm lvcreate -L 500M -n tmp lvm
    lvm lvcreate -l 100%FREE -n home lvm

    cryptsetup luksFormat -c aes-xts-plain64 -s 512 /dev/lvm/root
    cryptsetup open --type luks /dev/lvm/root root
    mkreiserfs /dev/mapper/root
    mount /dev/mapper/root /mnt

Tenga en cuenta que `/home` se cifrará después de reiniciar.

### Preparar la partición de arranque boot

    dd if=/dev/zero of=/dev/sda1 bs=1M
    mkreiserfs /dev/sda1
    mkdir /mnt/boot
    mount /dev/sda1 /mnt/boot

Ahora, después de configurar el particionado LVM encriptado, sería el momento de instalar: Arch Install Scripts.

### Configurar mkinitcpio

The factual accuracy of this article or section is disputed.

Reason: Does the order of `lvm2` and `encrypt` matter in this case? Compare to #Configuring mkinitcpio 2. (Discuss)

Añada el hook `lvm2` y `encrypt` a mkinitcpio.conf, antes de `filesystems`:

    etc/mkinitcpio.conf

    HOOKS="... lvm2 encrypt ... filesystems ..."

Véase dm-crypt/System configuration#mkinitcpio para conocer más detalles y otros hooks que se puedan necesitar.

### Configurar el gestor de arranque

Para el ejemplo anterior, cambie las opciones del kernel para el dispositivo root de modo que se configure automáticamente en la instalación del gestor de arranque de `root=/dev/hda3` a

    cryptdevice=/dev/lvm/root:root root=/dev/mapper/root

De modo general, la línea de órdenes del kernel para LUKS <-> LVM se construye como sigue:

    root=/dev/mapper/<grupo-volumen>-<volumen-lógico> cryptdevice=/dev/<partición-luks>:<grupo-volumen>

Por ejemplo:

    root=/dev/mapper/vg-arch cryptdevice=/dev/sda4:vg

O así:

    cryptdevice=/dev/<grupo-volumen>/<volumen-lógico>:root root=/dev/mapper/root

Si desea instalar el sistema en una memoria USB, es necesario añadir `lvmdelay=/dev/mapper/lvm-root`

### Configurar fstab y crypttab

    /etc/fstab

     /dev/mapper/root        /       reiserfs        defaults        0       1
     /dev/sda1               /boot   reiserfs        defaults        0       2
     /dev/mapper/tmp         /tmp    tmpfs           defaults        0       0
     /dev/mapper/swap        none    swap            sw              0       0

    /etc/crypttab

     swap	/dev/lvm/swap	/dev/urandom	swap,cipher=aes-xts-plain64,size=256
     tmp	/dev/lvm/tmp	/dev/urandom	tmp,cipher=aes-xts-plain64,size=256

### Cifrar /home después de reniciar

A continuación vamos a editar /etc/crypttab. Esto es necesario para desbloquear cada uno de los contenedores cifrados con LUKS que no son root (como /home, /media, etc.). Estos volúmenes lógicos son tan importantes como /root, y si no son visibles a el sistema no podrá arrancar. LVM debe tener todos los volúmenes presentes y disponibles. Ahora, con el fin de evitar tener que escribir distintas contraseñas (1 por contenedor) en cada arranque, podemos generar algunas claves de cifrado fuertes y guardarlas en /etc. Un estudio un poco más profundo sobre las posibles claves de cifrado, se encuentra aquí. Cuando el PC está apagado, estas claves están perfectamente seguras: se están guardando en el interior del contenedor LVM root, que debe ser desbloqueado en el arranque con una contraseña. Además, tener diferentes contraseñas para cada dispositivo hace que romper el cifrado sea más difícil —incluso si una contraseña queda expuesta, LVM NO SE ACTIVARÁ sin las otras particiones—.

    mkdir -p -m 700 /mnt/etc/luks-keys
    dd if=/dev/random of=/mnt/etc/luks-keys/home bs=1 count=256

    cryptsetup luksFormat -c aes-xts-plain64 -s 512 /dev/lvm/home /etc/luks-keys/home
    cryptsetup open --type luks -d /etc/luks-keys/home /dev/lvm/home home
    mkreiserfs /dev/mapper/home
    mount /dev/mapper/home /home

    /etc/crypttab

     home	/dev/lvm/home   /etc/luks-keys/home

Nota: Si no desea utilizar un archivo de claves, simplemente deje la tercera columna vacía (`/etc/luks-keys/home` en el ejemplo) y se le pedirá una contraseña en el arranque.

    /etc/fstab

     /dev/mapper/home        /home   reiserfs        defaults        0       0

### Expandir LVM en varios discos

El hook `encrypt` permite una entrada `cryptdevice=` únicamente. Por ejemplo, fijándonos en «LVM sobre LUKS»: todo LVM reside en un contenedor LUKS. Esto es perfectamente normal para un sistema en una sola unidad: solo hay un contenedor que descifrar. Pero, ¿qué sucede cuando se desea aumentar el tamaño de LVM? Esta es, de hecho, la principal ventaja de LVM: poder añadir y eliminar unidades enteras sin tener que cambiar la partición subyacente.

Por lo tanto, si agregamos otro disco duro con el fin de ampliar `home` (que es un volumen lógico propio): cifraremos la segunda unidad, la agregaremos al grupo de volumen y expandiremos el volumen lógico `home` a la nueva unidad. Pero ahora, ¿cómo sabe initrd que debe desbloquear AMBAS unidades al mismo tiempo? No puede, a menos que se modifique el hook `encrypt`. Y, como se ha dicho en el apartado anterior: con que haya una sola una parte de LVM que no esté disponible, el mismo no arrancará. Así, la adición de una segunda unidad requiere descifrarla antes lo que permitirá ser leída desde fuera de la imagen.

Por suerte, podemos evitar esto haciendo que LVM esté visible para el sistema incluso antes de que se cifren. Esta es la razón por la que LUKS sobre LVM es, en general, la opción que ofrece más flexibilidad para cambiar la partición.

#### Añadir una nueva unidad

Vamos a suponer que tenemos una sola unidad que funciona con la configuración LUKS-sobre-LVM y queremos ampliar uno de sus volúmenes lógicos.

Conecte la unidad (si es nueva, o completamente borrada como se hizo con la unidad root). Abra gdisk y cree una única partición:

- /dev/sdy1: Utilice TODO el espacio, con el tipo de partición 8E00 (Linux LVM)

Ahora, asocie este nuevo disco a su LVM existente:

    # pvcreate /dev/sdy1
    # vgextend MyStorage /dev/sdy1

#### Extender el volumen lógico

Se tendrá que desmontar cualquier partición que se desee extender, lo que significa que puede que tenga que iniciar a través de un CD de instalación. Los detalles de esta operación de indicarán a continuación. En este ejemplo, vamos a extender el volumen lógico «HOME» para que ocupe el 100 % del espacio libre de nuestra nueva unidad (es decir, ¡dedicar TODO el espacio restante a /home!)

Desde una consola de root:

    # umount /home
    # fsck /dev/mapper/home
    # cryptsetup luksClose /dev/mapper/home
    # lvextend -l +100%FREE MyStorage/homevol

Ahora, el volumen lógico se ha extendido. Hagamos que LUKS sea consciente del cambio:

    # cryptsetup open --type luks /dev/mapper/MyStorage-homevol home
    # umount /home      ((POR SI ACASO SE HUBIESE VUELTO A MONTAR))
    # cryptsetup --verbose resize home

Y, finalmente, redimensione la propia partición ext4:

    # e2fsck -f /dev/mapper/home
    # resize2fs /dev/mapper/home

¡Hecho!

    # mount /dev/mapper/home /home

Advierta cómo /home ahora incluye el espacio restante de la nueva unidad, y sin cambiar o añadir más claves de cifrado —la clave para LVM Home seguirá funcionando y cubriendo el espacio que acaba de agregar—.

Nota: El procedimiento funciona exactamente de la misma forma para el LVM root, con la salvedad de que hay que hacerlo desde un CD de instalación de Arch (no se puede desmontar la partición root mientras está en uso).

### Solución de problemas

#### El sistema no arranca

En primer lugar, ¡QUE NO CUNDA EL PÁNICO! ¡Siempre se puede arrancar un CD de rescate y entrar en su LVM manualmente!

Inicie mediante el soporte live de instalación de Arch. Al llegar a la shell de root, para cada LVM cifrado:

    # cryptsetup open --type luks /dev/mapper/MyStorage-rootvol

Basta con desbloquear cada partición lógica —dicha partición desbloqueada se denominará /dev/mapper/<nombre-volumen-lógico>— y a parir de ahí podrán montarse cada una a de ellas.

## LUKS sobre RAID software

This article or section needs expansion.

Reason: Some references: RAID, Software RAID and LVM, http://jasonwryan.com/blog/2012/02/11/lvm/ (Discuss)

## Plain dm-crypt

Este escenario configura un sistema en un disco completo sobre dm-crypt con la modalidad de encriptación plain. Tenga en cuenta que para la mayoría de los casos al uso, los métodos que utilizan LUKS descritas anteriormente son las mejores opciones para el cifrado del sistema y las particiones cifradas. Características de LUKS como la gestión de claves con múltiples pass-phrases/key-files no están disponibles con la modalidad plain.

El escenario utiliza una memoria USB para el dispositivo de arranque y otra para almacenar la clave de cifrado. El esquema de particionado del disco es:

    +------------------------------------------------------------+ +---------------+ +---------------------+
    |unidad /dev/sdaX encriptada usando modalidad plain y LVM    | |Lápiz USB 1    | |Lápiz USB 2          |
    |--------------------+------------------+--------------------| |---------------| |---------------------|
    |Volumen 1:          |Volumen 2:        |Volumen 3:          | |Dispositivo de | |Almacen para archivo |
    |                    |                  |                    | |Arranque       | |de claves cifradas   |
    |root                |swap              |home                | |/boot          | |(sin particionar     |
    |                    |                  |                    | |               | |en el ejemplo)       |
    |/dev/store/root     |/dev/store/swap   |/dev/store/home     | |/dev/sdY1      | |/dev/sdZ             |
    +--------------------+------------------+--------------------+ +---------------+ +---------------------+

Las razones para el uso de dos llaves USB son:

- Las opciones que se deben pasar al gestor de arranque para abrir/desbloquear un dispositivo encriptado con plain son precisas. Escribirlas en cada arranque es propenso a error, almacenándose después en una partición `/boot` descifrada en el mismo dispositivo comprometiendo así la seguridad.
- Este escenario utiliza un archivo de claves, almacenando dicho archivo en un segundo lápiz USB para ganar en seguridad. Una frase de acceso con buena entropía puede usarse en su lugar.

La consideración principal para elegir plain en lugar de LUKS para este escerario es:

- La modalidad plain de dm-crypt no requiere un encabezamiento sobre el disco encriptado. Esto significa que sin particionar, un disco cifrado será indistinguible de un disco lleno de datos aleatorios, que es el atributo deseado para este escenario.

Los discos cifrados con la modalidad plain de dm-crypt pueden ser más resistentes a los daños que los discos cifrados con LUKS, porque no se basan en una llave maestra para la encriptación que puede ser su único punto débil en caso de que se dañe. En su contra, hay que decir que el uso de la modalidad plain también conlleva más configuración manual de las opciones de cifrado para lograr la misma fuerza criptográfica. Véase también Disk encryption#Cryptographic_metadata

Nota: Si se necesita un dispositivo de bloque sin un encabezado cifrado y se desea usar LUKS en lugar de la modalidad plain para eludir las desventajas aludidas arriba, cryptsetup ofrece tambien la opción `--header`. Si bien no se puede utilizar con el hook encrypt, se puede utilizar para colocar la cabecera LUKS alejada del dispositivo de bloque cifrado. Por ejemplo, podría ser colocado en la llave usb /dev/sdZ en lugar del archivo de claves (usando una frase de acceso en lugar de dos factores de autenticación fáciles).

### Preparar el disco

Es de vital importancia que el dispositivo mapeado está lleno de datos. En particular, esto se aplica al caso que nos afecta.

Véase Dm-crypt/Drive preparation y Dm-crypt/Drive preparation#dm-crypt_specific_methods

### Preparar las particiones que no son boot

Véase Dm-crypt/Device encryption#Encryption options for plain mode para más detalles.

Utilizando el dispositivo `/dev/sdX`, cifrándolo con twofish en modo xts, con un tamaño de clave de 512 bit y el uso de un archivo de claves, se tienen las siguientes opciones para este escenario:

    # cryptsetup --hash=sha512 --cipher=twofish-xts-plain64 --offset=0 --key-file=/dev/sdZ --key-size=512 open --type=plain /dev/sdX enc

A diferencia del cifrado LUKS, la orden anterior debe ejecutarse en su totalidad cada vez que el mapeo tiene que ser reestablecido, por lo que es importante tener en cuenta el cifrado, hash y el archivo de claves detallados.

Ahora podemos comprobar que la entrada de mapeado se ha hecho para `/dev/mapper/enc`:

    # fdisk -l

A continuación, configure los volúmenes lógicos de LVM sobre el dispositivo mapeado, véase Lvm#Installing_Arch_Linux_on_LVM para más detalles:

    # pvcreate /dev/mapper/enc
    # vgcreate store /dev/mapper/enc
    # lvcreate -L 20G store -n root
    # lvcreate -C y -L 10G store -n swap
    # lvcreate -l +100%FREE store -n home

Para formatear y montar los volúmenes así como activar swap, véase File systems#Format a device para más detalles:

    # mkfs.ext4 /dev/store/root
    # mkfs.ext4 /dev/store/home
    # mount /dev/store/root /mnt
    # mkdir /mnt/home
    # mount /dev/store/home /mnt/home
    # mkswap /dev/store/swap
    # swapon /dev/store/swap

### Preparar la partición de arranque boot

La partición `/boot` se puede instalar en la partición vfat estándar de una memoria USB, si es necesario. Pero si se ve en la necesidad de realizar el particionado manualmente, entonces podría crear una pequeña partición de 200MB, lo que sería suficiente. Cree la partición utilizando una utilidad de particionado de su elección.

Elegimos un sistema de archivos no journalling para preservar la memoria flash de la partición `/boot`, si no está ya formateada como vfat:

    # mkfs.ext2 /dev/sdY1
    # mkdir /mnt/boot
    # mount /dev/sdY1 /mnt/boot

### Configurar mkinitcpio

Agregue el hook `encrypt` y `lvm2` a mkinitcpio.conf, antes de `filesystems`:

    etc/mkinitcpio.conf

    HOOKS="... encrypt lvm2 ... filesystems ..."

Véase dm-crypt/System configuration#mkinitcpio para conocer más detalles y otros hooks que pueda necesitar.

### Configurar el gestor de arranque

Para arrancar la partición de root encriptada, los siguientes parámetros del kernel son necesarios pasarlos al el gestor de arranque:

    cryptdevice=/dev/sdX:enc cryptkey=/dev/sdZ:0:512 crypto=sha512:twofish-xts-plain64:512:0:

Véase Dm-crypt/System configuration#Boot loader para conocer más detalles y otros parámetros que puede necesitar

Tip: Si se utiliza GRUB, puede instalarlo en el mismo USB como partición `/boot` con:

    # grub-install --recheck /dev/sdY

### Posinstalación

Podríamos retirar la memoria USB después de arrancar. Ya que la partición `/boot` generalmente no se necesita, la siguiente opción se puede agregar a las opciones de boot en `/etc/fstab`:

    /etc/fstab

    # /dev/sdYn
    /dev/sdYn /boot ext2 noauto,rw,noatime 0 2

Sin embargo, cuando se requiere una actualización del kernel o del cargador de arranque, la partición `/boot` debe estar presente y montada. Como la entrada en `fstab` ya existe, se puede montar de forma sencilla con:

    # mount /boot

Categories:

- Security (Español)
- File systems (Español)
- Getting and installing Arch (Español)