Configuración manual adecuada del sistema operativo en una unidad cifrada LUKS con un algoritmo que no es aes en una distribución basada en yum (CentOS)

Configuración manual adecuada del sistema operativo en una unidad cifrada LUKS con un algoritmo que no es aes en una distribución basada en yum (CentOS)

Estoy intentando lograr una instalación de CentOS 7 cifrada con LUKS con /bootuna partición separada y lvm en una placa base compatible con EFI.

He realizado la partición de una nueva instalación de CentOS desde el antiguo CentOS (instalado desde la GUI) y se ve así:

sdb             8:16   0 745,2G  0 disk  
├─sdb1          8:17   0   200M  0 part  /home/user/target/boot/efi
├─sdb2          8:18   0     1G  0 part  /home/user/target/boot
├─sdb3          8:19   0   700G  0 part  
│ └─crypto    253:3    0   700G  0 crypt 
│   ├─lv-swap 253:4    0    16G  0 lvm   
│   ├─lv-root 253:5    0    50G  0 lvm   /home/user/target
│   └─lv-home 253:6    0   634G  0 lvm   /home/user/target/home

Bootstrapping también tuvo éxito en CentOS chroot (usadoesteyestetutoriales) y ahora está listo para generar una imagen de arranque.

El asunto es que he decidido utilizar un algoritmo no estándar en cryptsetup:

cryptsetup -v --cipher serpent-xts-plain64 --key-size 512 --hash sha256 --iter-time 3000 --use-random luksFormat /dev/sdb3

y ahora me pregunto cómo generar el initrd correcto con mis parámetros.

Los tutoriales me dicen que el siguiente paso es:

mkinitcpio -p linuxsin embargo, no hay ningún mkinitcpiocomando ni /etc/mkinitcpio.confpara cambiar HOOKSla lista para que lvmfuncione encryptcorrectamente.

Sin embargo, lo único initrdque no me resulta familiar es la falta de conocimiento sobre las distribuciones basadas en rpm. La búsqueda de ejemplos de initrd para mi caso no tuvo suerte.

Ahora hay varios archivos/directorios dentro /bootde chroot:

bash-4.2# ls
config-3.10.0-514.16.1.el7.x86_64  grub2                                     symvers-3.10.0-514.16.1.el7.x86_64.gz
efi                                initramfs-3.10.0-514.16.1.el7.x86_64.img  System.map-3.10.0-514.16.1.el7.x86_64
grub                               lost+found                                vmlinuz-3.10.0-514.16.1.el7.x86_64

Pero dudo que admitan el cifrado de serpiente o incluso luks tan pronto como estos archivos se generaron durante el arranque.

Entonces, mi pregunta es ¿cómo puedo hacer que la cadena de herramientas de arranque sea correcta con luks y serpent a partir de la generación de la imagen del kernel?

Aunque tal vez debería usarlo initramfsen lugar de initrd, por lo que también se agradece cualquier sugerencia sobre este enfoque.

Respuesta1

Finalmente terminé de configurar y estoy listo para compartir un conjunto finito de instrucciones sobre cómo se hace para CentOS 7.

Me salté la partición y el arranque manual; hay muchos manuales completos en otros lugares.

Entonces, comience a tener esta variante de partición:

sdb             8:16   0 745,2G  0 disk  
├─sdb1          8:17   0   200M  0 part
├─sdb2          8:18   0     1G  0 part
└─sdb3          8:19   0   700G  0 part  
  └─crypto    253:3    0   700G  0 crypt 
    ├─lv-swap 253:4    0    16G  0 lvm   
    ├─lv-root 253:5    0    50G  0 lvm
    └─lv-home 253:6    0   634G  0 lvm   

luego, monte las unidades necesarias, de modo que quede:

sdb             8:16   0 745,2G  0 disk  
├─sdb1          8:17   0   200M  0 part  /home/user/target/boot/efi
├─sdb2          8:18   0     1G  0 part  /home/user/target/boot
└─sdb3          8:19   0   700G  0 part  
  └─crypto    253:3    0   700G  0 crypt 
    ├─lv-swap 253:4    0    16G  0 lvm   
    ├─lv-root 253:5    0    50G  0 lvm   /home/user/target
    └─lv-home 253:6    0   634G  0 lvm   

Paso 0. Prepare el script chroot. Repetir mountcada reinicio es tedioso, así que terminé con este script chroot elemental:

#!/bin/bash
sudo mount /dev/mapper/lv-root /home/user/target
sudo mount /dev/sdb2 /home/user/target/boot
sudo mount /dev/sdb1 /home/user/target/boot/efi
sudo mount --bind /proc /home/user/target/proc
sudo mount --bind /dev /home/user/target/dev
sudo mount --bind /sys /home/user/target/sys
sudo chroot /home/user/target /bin/bash -l

Paso 1. Instale los módulos específicos de EFI que faltan (fuera de chroot):

sudo yum --installroot=/home/user/target install -y efibootmgr grub2-efi-modules

Paso 2. Editar/etc/crypttab

crypto UUID=UUID_of_/dev/sdb3 none luks,discard

Motivo discard: estoy usando ssd y descuido un poco de seguridad para un mejor rendimiento de TRIM.Detalles.

Paso 3. Editar/etc/dracut.conf

omit_dracutmodules+="systemd"
add_dracutmodules+="crypt lvm" #sequencing could matter
hostonly="yes" #optional
lvmconf="yes"

Paso 4. Editar/etc/fstab

UUID=UUID_of_/dev/sdb1                      /boot/efi       vfat    umask=0077  0 0
UUID=UUID_of_/dev/sdb2                      /boot           ext2    defaults    0 0
UUID=UUID_of_/dev/mapper/lv-root            /               ext4    defaults    0 0
UUID=UUID_of_/dev/mapper/lv-home            /home           ext4    defaults    0 0
UUID=UUID_of_/dev/mapper/lv-swap            none            swap    sw          0 0

Paso 5. Editar/etc/default/grub

GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_CMDLINE_LINUX="rd.lvm.lv=lv/swap vconsole.font=latarcyrheb-sun16 vconsole.keymap=us rd.luks.options=discard rd.luks.uuid=UUID_of_/dev/sdb3 crashkernel=auto rd.lvm.lv=lv/root rd.lvm.lv=lv/home nomodeset"
GRUB_THEME="/boot/grub2/themes/system/theme.txt"

rd.luks.options=discard- puede ser redundante, corríjame si lo es.

nomodeset- para eliminar la concurrencia de controladores de hardware (noveaufb vs EFI VGA)

Paso 6. Ejecutargrub2-mkconfig -o /boot/grub2/grub.cfg

Paso 7. Ejecutargrub2-install --target=x86_64-efi --efi-directory=/boot/efi

Paso 8. Ejecutardracut -fv

Todos los pasos anteriores deben realizarse dentro de chroot a menos que se indique lo contrario.

Resultó que el algoritmo de cifrado elegido no influyó de ninguna manera: grub tiene todos los controladores necesarios cargados automáticamente.

Aquí hay materiales que me ayudaron:1,2,3,4,5

información relacionada