yum 기반 배포판(CentOS)에서 비 aes 알고리즘을 사용하여 LUKS 암호화 드라이브에 적절한 수동 OS 설정

yum 기반 배포판(CentOS)에서 비 aes 알고리즘을 사용하여 LUKS 암호화 드라이브에 적절한 수동 OS 설정

/bootEFI 친화적인 마더보드에 별도의 파티션과 lvm을 사용하여 LUKS로 암호화된 CentOS 7을 설치하려고 합니다 .

이전 CentOS(GUI에서 설치)에서 새로운 CentOS 설치를 분할했는데 다음과 같습니다.

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

CentOS chroot에서도 부트스트래핑이 성공했습니다(사용됨).이것그리고이것자습서) 이제 부팅 이미지를 생성할 준비가 되었습니다.

문제는 cryptsetup에서 비표준 알고리즘을 사용하기로 결정했다는 것입니다.

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

이제 내 매개변수를 사용하여 올바른 initrd를 생성하는 방법이 궁금합니다.

튜토리얼에서는 다음 단계가 다음과 같다고 알려줍니다.

mkinitcpio -p linux그러나 올바르게 작동 하려면 mkinitcpio명령이나 목록을 /etc/mkinitcpio.conf변경하는 명령 이 없습니다 .HOOKSlvmencrypt

initrd다만, rpm 기반 배포판에 대한 지식이 부족해서 저에게는 생소한 점만 있을 뿐입니다 . 내 경우에 대한 initrd 예제 검색은 운이 좋지 않았습니다.

/boot이제 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

그러나 부트스트랩 중에 이러한 파일이 생성되자마자 이들이 뱀 암호화를 지원하거나 심지어 루크를 지원하는지 의심됩니다.

그래서 제 질문은 커널 이미지 생성부터 시작하여 luks 및 serpent를 사용하여 올바른 부팅 툴체인을 만드는 방법입니다.

initramfs대신에 사용해야 할 수도 있으므로 initrd이 접근 방식에 대한 힌트도 감사히 받겠습니다.

답변1

마지막으로 설정을 마쳤으며 CentOS 7에서 수행된 방법에 대한 유한 명령 세트를 공유할 준비가 되었습니다.

저는 파티셔닝과 수동 부트스트래핑을 건너뛰었습니다. 다른 곳에서도 완전한 매뉴얼이 많이 있습니다.

따라서 다음과 같은 파티셔닝 변형을 시작하십시오.

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   

그런 다음 필요한 드라이브를 마운트하면 다음과 같습니다.

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   

0단계. chroot 스크립트를 준비합니다. 모든 재부팅을 반복하는 mount것은 지루하므로 다음과 같은 기본 chroot 스크립트로 끝납니다.

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

1단계. 누락된 EFI 관련 모듈을 설치합니다(chroot 외부):

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

2단계. 편집/etc/crypttab

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

이유 discard- 저는 SSD를 사용하고 있으며 더 나은 TRIM 성능을 위해 약간의 보안을 무시하고 있습니다.세부.

3단계. 편집/etc/dracut.conf

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

4단계. 편집/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

5단계. 편집/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- 중복될 수 있으니, 그렇다면 정정해 주세요.

nomodeset- hw 드라이버 동시성 제거(noveufb 대 EFI VGA)

6단계. 실행grub2-mkconfig -o /boot/grub2/grub.cfg

7단계. 실행grub2-install --target=x86_64-efi --efi-directory=/boot/efi

8단계. 실행dracut -fv

달리 명시되지 않는 한 위의 모든 단계는 chroot 내에서 수행되어야 합니다.

선택한 암호화 알고리즘은 어떤 방식으로도 영향을 받지 않는 것으로 나타났습니다. grub에는 필요한 모든 드라이버가 자동으로 로드됩니다.

나에게 도움이 된 자료는 다음과 같습니다.1,2,,4,5

관련 정보