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

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

/boot별도의 파티션과 lvm을 사용하여 EFI 친화적 마더보드에 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변경 HOOKS목록이 없습니다 .lvmencrypt

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

그러나 부팅 중에 이러한 파일이 생성되면 스네이크 암호화나 luk를 지원하는지 의심됩니다.

그래서 제 질문은 커널 이미지 생성부터 luk와 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- 더 나은 TRIM 성능을 얻기 위해 SSD를 사용하고 약간의 보안을 무시했습니다.세부 사항.

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- 하드웨어 드라이버 동시성 제거(EFI VGA를 사용한 noveufb)

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

관련 정보