initrd 및 grub.cfg를 보호하기 위해 보안 부팅을 사용하는 방법은 무엇입니까?

initrd 및 grub.cfg를 보호하기 위해 보안 부팅을 사용하는 방법은 무엇입니까?

shim저는 우분투 설치를 안전하게 부팅하기 위해 grub2자체 플랫폼 키( 를 사용하여 자체 서명됨 shim) 와 암호화된 루트 파티션을 결합하는 기본 우분투 방법을 사용하고 있습니다 . sbsign그러나 이는 grubx64.efi커널만 확인하고 암호화되지 않은 부팅 파티션의 파일을 악의적인 수정으로부터 보호하지 않습니다 initrd.img.grub.cfg

그렇다면 부팅하기 전에 initrd 및 grub을 어떻게 확인합니까(sha256 해싱 사용 가능)? 이 확인 shim은 및/또는 grub대신에 또는 대신 사용할 수 있는 다른 도구에서 발생할 수 있습니다 .shimgrub

이 문제의 목적은 수정된 환경(커널 명령줄 및 initrd)으로 커널 실행을 방지하여 루트 파티션 암호화 비밀번호가 어디든 유출되는 것을 방지하는 것입니다.

시작을 확인하는 방법을 찾을 수 없습니다.구성Ubuntu와 Linux Foundation의 보안 부팅에 관한 웹 튜토리얼/블로그를 읽는 데 며칠을 보냈음에도 불구하고 PreLoader.efi모두 확인 방법을 설명했습니다.실행 가능 파일커널 모듈을 포함하면 작동하지만 grub.cfginitrd 및 initrd(셸 스크립트 및 구성 파일)에 대한 언급이 없으므로 제가 가장 먼저 확인을 요청한 것 같습니다.넌바이너리시작하는 동안. 내가 찾은 최고의 소스는로드 스미스.

아직 시도하지 않은 것은 shimor의 소스 코드를 수정하거나 grub, 포크를 생성하거나, 직접 기여하는 것입니다. 이것이 유일한 탈출구인가요?

답변1

이 설정을 설명하는 훌륭한 기사를 찾았습니다. https://ruderich.org/simon/notes/secure-boot-with-grub-and-signed-linux-and-initrd

tl;dr: GPG를 사용하여 grub config 및 initrd에 서명하고, 강제로 확인하고 secureboot 키로 서명하는 grub 바이너리를 생성합니다.

우분투 패키지는 비슷한 아이디어를 구현합니다:https://github.com/JohnstonJ/ubuntu-secure-boot

답변2

Grub은 분리된 서명을 사용한 서명 확인을 지원하는 것으로 보입니다. 나는 이것이 당신의 대답이라고 생각합니다.

관련 정보