2022년 9월 19일 월요일

SecureBoot 설정

Secureboot

Archlinux에서 secure boot를 적용하는 가장 간단한 방법은 sbctl을 사용하는 것이다.

필요

보안 문제도 있겠지만, 하나의 host에서 MS Windows와 함께 사용하는 경우 다음 문제들이 있었다.

  • 일부 장치가 윈도에서 secureboot 하에서만 정상 동작
  • 리눅스와 함께 사용 시 해당 장치를 사용 못하는 것은 차치하더라도 매번 바이오스에서 secureboot를 껐다 켰다 해야 하는 번거로움

순서

  1. UEIF firmware 설정에서 secure boot를 켜고, 키를 모두 리셋한다.
  2. 키가 없으므로 일단 부팅은 secure boot가 꺼진 상태로 진행된다.
  3. bootctl statussbctl status로 현태 부트로더 상태 확인
  4. sbctl create-keys로 키 생성
  5. sbctl enroll-keys -m으로 Microsoft의 키를 UEFI Firmware에 등록
  6. sbctl verify로 필요 파일들 확인
  7. sbctl sign -s <파일 이름>으로 필요한 파일 하나씩 사인 및 등록
  8. sbctl verify로 사인 상태 확인
  9. 재부팅 후 sbctl status, bootctl status를 이용해 secure boot 상태 확인

위 순서대로 진행하면 secureboot를 사용할 수 있다.

GRUB을 사용하는 경우

systemd-boot를 사용하는 경우에는 위 순서만 따르면 문제가 없지만, grub을 사용할 때는 부팅이 되지 않았다. TPM이 문제인 것으로 보이며, TPM을 포함해 grub을 EFI 파티션에 재설치 해 주고 sbctl로 다시 사인해두면 grub으로 secureboot 사용이 가능하다.

  • 인스톨 시 옵션 예제
    grub-install -target=x86_64-efi --efi-directory=/boot --bootloader-id=Arch --modules="normal test efi_gop efi_uga search echo linux all_video gfxmenu gfxterm_background gfxterm_menu gfxterm loadenv configfile tpm" --disable-shim-lock
    grub-mkconfig -o /boot/grub/grub.cfg
    

관리

업데이트 등의 이유로 기존 사인된 EFI 부트로더 이미지가 변경되는 경우, 재 사인을 해주면 된다.

sbctl sign-all
sbctl verify

단, systemd-boot를 사용하는 경우 EFI 사이닝을 /usr/lib/systemd/boot/ 디렉토리 내에서 직접 해주면 위 방법으로 바로 반영이 되나, 아니면 두 번의 재부팅이 필요해 업데이트 마다 secure boot를 꺼주어야 하는 문제가…

댓글 없음:

댓글 쓰기