Configuração correta do SO manual na unidade criptografada LUKS com algoritmo não-aes na distro baseada no yum (CentOS)

1

Estou tentando conseguir a instalação do CentOS 7 criptografada pelo LUKS com a partição /boot e lvm na placa-mãe amigável à EFI.

Eu fiz o particionamento da instalação do CentOS no antigo CentOS (instalado a partir da GUI) e ficou assim:

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 também foi bem sucedido no chroot do CentOS (usado este e este tutorial) e agora pronto para gerar uma imagem de inicialização.

A questão é que eu decidi usar algoritmo não-padrão em cryptsetup:

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

e agora eu quero saber como gerar o initrd correto com meus parâmetros.

Tutoriais me dizem que o próximo passo é:

mkinitcpio -p linux no entanto, não há o comando mkinitcpio ou /etc/mkinitcpio.conf para alterar a lista HOOKS para que lvm e encrypt funcionem corretamente.

No entanto, há apenas initrd que não me é familiar devido à falta de conhecimento sobre distribuições baseadas em rpm. A pesquisa de exemplos de initrd para meu caso estava sem sorte.

Agora existem vários arquivos / diretórios em /boot dentro do 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

Mas eu duvido que eles sejam criptografia de serpent de suporte ou mesmo luks assim que esses arquivos forem gerados durante o bootstrap.

Então, minha pergunta é como eu faço o toolchain de inicialização correto com luks e serpent a partir da geração da imagem do kernel?

Embora talvez eu deva usar initramfs em vez de initrd , então qualquer sugestão sobre essa abordagem também é bem-vinda.

    
por im_infamous 23.04.2017 / 01:12

1 resposta

0

Finalmente eu terminei de configurar e pronto para compartilhar conjuntos de instruções finitas de como ele é feito para o CentOS 7.

Eu pulei o particionamento e o bootstrapping manual - há muitos manuais completos em outros lugares.

Então, comece a ter essa variante de particionamento:

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   

em seguida, monte as unidades necessárias, por isso, torna-se:

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   

Passo 0. Prepare o script chroot. Repetir cada reinicialização de mount é entediante, então acabei com este script chroot elementar:

#!/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

Etapa 1. Instale os módulos específicos do EFI ausentes (chroot externo):

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

Etapa 2. Edite o /etc/crypttab

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

Razão para discard - Estou usando o ssd e negligenciando um pouco de segurança para um melhor desempenho do TRIM. Detalhes .

Etapa 3. Edite /etc/dracut.conf

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

Etapa 4. Edite o /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

Etapa 5. Edite o /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 - pode ser redundante, corrija-me se for.

nomodeset - para eliminar a concorrência do driver hw (noveaufb vs EFI VGA)

Etapa 6. Execute grub2-mkconfig -o /boot/grub2/grub.cfg

Etapa 7. Execute grub2-install --target=x86_64-efi --efi-directory=/boot/efi

Etapa 8. Execute dracut -fv

Todos os passos acima precisam ser feitos dentro do chroot, a menos que seja indicado o contrário.

Descobrimos que o algoritmo de criptografia escolhido não foi influenciado de forma alguma - o grub tem todos os drivers necessários carregados automaticamente.

Veja os materiais que me ajudaram: 1 , 2 , 3 , 4 , 5

    
por 24.04.2017 / 20:45