UEFI023의 AL2 보안 부팅 - Amazon Linux 2023

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

UEFI023의 AL2 보안 부팅

AL2023은 릴리스 2023.1부터 UEFI 보안 부팅을 지원합니다. AL2UEFI023과 UEFI 보안 부팅을 모두 지원하는 Amazon EC2 인스턴스에서는 반드시 023을 사용해야 합니다. 자세한 내용은 Amazon EC2 사용 설명서의 인스턴스 시작을 참조하십시오.

AL2UEFISecure Boot가 활성화된 023개 인스턴스는 Linux 커널과 모듈을 포함하여 서명된 커널 수준 코드만 Amazon 허용하므로 인스턴스가 서명한 커널 수준 코드만 실행되도록 할 수 있습니다. AWS

Amazon EC2 인스턴스 및 UEFI 보안 부팅에 대한 자세한 내용은 Amazon EC2 사용 설명서의 UEFI 보안 부팅을 참조하십시오.

사전 조건
  • AL2023 릴리스 2023.1 AMI 이상과 함께 사용 중이어야 합니다.

  • 인스턴스 유형은 UEFI 보안 부팅을 지원해야 합니다. 자세한 내용은 Amazon EC2 사용 설명서의 인스턴스 시작을 참조하십시오.

AL2023에서 UEFI 보안 부팅 활성화

표준 AL2 AMIs 023에는 부트로더와 당사 키로 서명된 커널이 통합되어 있습니다. 기존 인스턴스를 등록하거나 스냅샷에서 이미지를 등록하여 UEFI Secure Boot가 사전 활성화된 상태로 AMIs 생성하여 UEFI 보안 부팅을 활성화할 수 있습니다. UEFI표준 AL2 023에서는 보안 부팅이 기본적으로 활성화되지 않습니다. AMIs

부팅 모드 AL2 AMIs 023은 인스턴스 유형이 지원하는 uefi-preferred 경우 해당 펌웨어로 시작한 인스턴스가 UEFI 펌웨어를 사용하도록 설정되어 있습니다. AMIs UEFI 인스턴스 유형이 지원하지 UEFI 않는 경우 인스턴스는 레거시 BIOS 펌웨어로 시작됩니다. 인스턴스가 레거시 BIOS 모드에서 시작되면 UEFI Secure Boot가 적용되지 않습니다.

Amazon EC2 인스턴스의 AMI 부팅 모드에 대한 자세한 내용은 Amazon EC2사용 설명서의 부팅 모드를 참조하십시오.

기존 인스턴스 등록

기존 인스턴스를 등록하려면 펌웨어가 부트로더를 확인하고 부트로더가 다음 부팅 시 커널을 확인할 수 있도록 하는 키 세트로 특정 UEFI 펌웨어 변수를 채우십시오.

  1. Amazon Linux는 등록 프로세스를 간소화하는 도구를 제공합니다. 다음 명령을 실행하여 필요한 키와 인증서 세트를 인스턴스에 프로비저닝합니다.

    sudo amazon-linux-sb enroll
  2. 다음 명령을 실행하여 인스턴스를 재부팅합니다. 인스턴스가 재부팅되면 Secure Boot가 활성화됩니다. UEFI

    sudo reboot
참고

Amazon Linux는 AMIs 현재 Nitro 신뢰할 수 있는 플랫폼 모듈 (NitroTPM) 을 지원하지 않습니다. UEFI보안 부팅 TPM 외에 Nitro가 필요한 경우 다음 섹션의 정보를 사용하십시오.

스냅숏 이미지 등록

Amazon을 사용하여 Amazon EBS 루트 볼륨의 AMI 스냅샷에서 를 등록할 때 UEFI 변수 저장소의 상태를 포함하는 바이너리 AMI 블롭으로 프로비저닝할 수 있습니다. EC2 register-image API AL2UefiData023을 제공하면 UEFI 보안 부팅이 활성화되므로 이전 섹션의 단계를 따를 필요가 없습니다.

바이너리 블럽 생성 및 사용에 대한 자세한 내용은 Amazon EC2 User Guide의 옵션 B: 미리 채워진 변수 저장소가 포함된 바이너리 블럽 생성을 참조하십시오.

AL2023은 Amazon 인스턴스에서 직접 사용할 수 있는 사전 빌드된 바이너리 블롭을 제공합니다. EC2 바이너리 블롭은 실행 중인 인스턴스의 /usr/share/amazon-linux-sb-keys/uefi.vars에 있습니다. 이 블롭은 릴리스 2023.1부터 AL2 AMIs 023에 기본적으로 설치되는 amazon-linux-sb-keys RPM 패키지를 통해 제공됩니다.

참고

최신 버전의 키와 취소를 사용하려면 를 만들 때 사용한 것과 동일한 AL2 023 릴리스의 Blob을 사용하십시오. AMI

이미지를 등록할 때는 to로 설정된 BootMode 파라미터를 사용하는 것이 좋습니다. RegisterImageAPIuefi 이렇게 하면 TpmSupport 파라미터를 로 TPM 설정하여 Nitro를 활성화할 v2.0 수 있습니다. 또한 지원하지 UEFI 않는 인스턴스 유형으로 BootMode 전환할 때 UEFI Secure Boot가 활성화되고 실수로 비활성화될 수 uefi 없도록 설정하는 것도 가능합니다.

TPMNitro에 대한 자세한 내용은 Amazon EC2 사용 설명서의 TPM Nitro를 참조하십시오.

폐기 업데이트

Amazon Linux에서 업데이트된 키 서명이 포한된 최신 부트로더 버전 grub2 또는 Linux 커널을 배포해야 합니다. 이 경우 이전 버전의 부트로더에서 악용 가능한 버그가 Secure Boot 인증 프로세스를 우회하도록 허용할 가능성을 방지하기 위해 이전 키를 취소해야 할 수 있습니다. UEFI

grub2또는 kernel 패키지에 대한 패키지 업데이트는 항상 실행 중인 인스턴스의 UEFI 변수 저장소에 취소 목록을 자동으로 업데이트합니다. 즉, UEFI Secure Boot를 사용하도록 설정하면 패키지에 대한 보안 업데이트를 설치한 후에는 이전 버전의 패키지를 더 이상 실행할 수 없습니다.

AL2023에서 UEFI 보안 부팅이 작동하는 방식

다른 Linux 배포판과 달리 Amazon Linux에는 1단계 부트로더 역할을 하는 심 (shim) 추가 구성 요소가 없습니다. 심은 일반적으로 Microsoft 키 서명이 있습니다. 예를 들어 심이 포함된 Linux 배포판에서 심은 자체 코드를 사용하여 Linux 커널을 검증하는 grub2 부트로더를 로드합니다. 또한 심은 UEFI 변수 저장소에 있으며 도구로 제어되는 Machine Owner Key (MOK) 데이터베이스에 자체 키 및 취소 세트를 유지 관리합니다. mokutil

Amazon Linux에는 심이 없습니다. AMI소유자가 UEFI 변수를 제어하므로 이 중간 단계가 필요하지 않으며 시작 및 부팅 시간에 부정적인 영향을 미칠 수 있습니다. 또한 원하지 않는 바이너리가 실행될 가능성을 줄이기 위해 기본적으로 공급업체 키에 대한 신뢰를 포함시키지 않았습니다. 하지만 고객은 원한다면 바이너리를 포함시킬 수 있습니다.

Amazon Linux를 사용하면 grub2 부트로더를 UEFI 직접 로드하고 확인합니다. grub2부트로더는 Linux 커널을 로드한 후 확인하는 UEFI 데 사용하도록 수정되었습니다. 따라서 일반 UEFI db 변수 (인증된 키 데이터베이스) 에 저장된 동일한 인증서를 사용하여 Linux 커널을 확인하고 부트로더 및 다른 바이너리와 동일한 dbx 변수 (취소 데이터베이스) 에 대해 테스트합니다. UEFI db 데이터베이스 및 dbx 데이터베이스에 대한 액세스를 제어하는 자체 PK 및 KEK 키를 제공하므로 shim과 같은 중개자 없이 필요에 따라 서명된 업데이트 및 취소를 배포할 수 있습니다.

UEFI보안 부팅에 대한 자세한 내용은 Amazon EC2 사용 설명서의 UEFI 보안 부팅 작동 방식을 참조하십시오.

자체 키 등록

이전 섹션에서 설명한 것처럼 Amazon Linux에서는 Amazon에서 UEFI 보안 부팅이 필요하지 않습니다. shim EC2 다른 Linux 배포판에 대한 설명서를 읽다 보면 023에는 없는 Machine Owner Key (MOK) 데이터베이스를 mokutil 관리하는 방법에 AL2 대한 설명서가 있을 수 있습니다. shim및 MOK 환경에서는 Amazon이 Secure Boot를 EC2 구현하는 UEFI 방식에 적용되지 않는 UEFI 펌웨어 키 등록의 일부 제한을 우회합니다. EC2Amazon에는 UEFI 변수 저장소의 키를 쉽게 직접 조작할 수 있는 메커니즘이 있습니다.

키를 직접 등록하려면 기존 인스턴스 내에서 변수 저장소를 조작하거나(인스턴스 내에서 변수 저장소에 키 추가(Add keys to the variable store from within the instance) 참조) 미리 채워진 바이너리 블롭을 생성하면 됩니다(미리 채워진 변수 저장소가 포함된 바이너리 블롭 생성(Create a binary blob containing a pre-filled variable store) 참조).