6.3. 在 AWS Marketplace 中使用安全引导配置 RHEL 实例
				要确保 AWS 上的 RHEL 实例有安全引导序列,请使用安全引导。要在 AWS 上配置带有安全引导支持的 Red Hat Enterprise Linux 实例,请从 AWS Marketplace 启动 RHEL Amazon Machine Image (AMI),并使用 uefi-preferred 启用引导模式预先配置。uefi-preferred 选项支持安全引导所需的统一可扩展固件接口(UEFI)引导装载程序。如果没有 UEFI,安全引导功能将无法正常工作。
			
为避免安全问题,请生成并保留当前 RHEL 实例之外的私钥。如果安全引导 secret 存储在使用它们的同一实例上,入侵者可以访问机密以升级其特权。有关启动 AWS EC2 实例的更多信息,请参阅开始使用 Amazon EC2。
先决条件
- RHEL AMI 在引导设置中启用 - uefi-preferred选项:- aws ec2 describe-images --image-id <ami-099f85fc24d27c2a7> --region <us-east-2> | grep -E '"ImageId"|"Name"|"BootMode"' - $ aws ec2 describe-images --image-id <ami-099f85fc24d27c2a7> --region <us-east-2> | grep -E '"ImageId"|"Name"|"BootMode"' "ImageId": "ami-099f85fc24d27c2a7", "Name": "RHEL-9.6.0_HVM_GA-20250423-x86_64-0-Hourly2-GP3", "BootMode": "uefi-preferred"- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 您已在 RHEL 实例中安装了以下软件包: - 
								awscli2
- 
								python3
- 
								openssl
- 
								efivar
- 
								keyutils
- 
								edk2-ovmf
- 
								python3-virt-firmware
 
- 
								
流程
- 检查 RHEL Marketplace AMI 实例的平台状态: - mokutil --sb-state - $ mokutil --sb-state SecureBoot disabled Platform is in Setup Mode- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 设置模式允许在实例中更新安全引导 UEFI 变量。
- 创建新的随机通用唯一标识符(UUID),并将其存储在系统生成的文本文件中: - uuidgen --random > GUID.txt - $ uuidgen --random > GUID.txt- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 为平台密钥数据库生成一个新的 - PK.keyRSA 私钥和自签名- PK.cerX.509 证书:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - openssl工具通过将输出格式设置为可辨识的编码规则(DER)来为证书生成一个通用名称- 平台密钥。
- 为密钥交换密钥数据库生成新的 - KEK.keyRSA 私钥和自签名- KEK.cerX.509 证书:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 生成 - custom_db.cer自定义证书:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 下载 - Microsoft 公司 UEFI CA 2011证书:- wget https://go.microsoft.com/fwlink/p/?linkid=321194 --user-agent="Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36" -O MicCorUEFCA2011_2011-06-27.crt - $ wget https://go.microsoft.com/fwlink/p/?linkid=321194 --user-agent="Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36" -O MicCorUEFCA2011_2011-06-27.crt- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 为 x64 位系统下载禁止签名( - dbx)更新的 UEFI Revocation List 文件:- wget https://uefi.org/sites/default/files/resources/x64_DBXUpdate.bin - $ wget https://uefi.org/sites/default/files/resources/x64_DBXUpdate.bin- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 使用 - virt-fw-vars工具生成 UEFI 变量文件:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 将 UEFI 变量转换为可扩展固件接口(EFI)签名列表(ESL)格式: - python3 /usr/share/doc/python3-virt-firmware/experimental/authfiles.py \ --input VARS \ --outdir . for f in PK KEK db dbx; do tail -c +41 $f.auth > $f.esl; done - $ python3 /usr/share/doc/python3-virt-firmware/experimental/authfiles.py \ --input VARS \ --outdir . $ for f in PK KEK db dbx; do tail -c +41 $f.auth > $f.esl; done- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 注意- 每个 GUID 都是分配的值,代表一个 EFI 参数 - 
									8be4df61-93ca-11d2-aa0d-00e098032b8c:EFI_GLOBAL_VARIABLE_GUID
- 
									d719b2cb-3d3a-4596-a3bc-dad00e67656f:EFI_IMAGE_SECURITY_DATABASE_GUID
 - EFI_GLOBAL_VARIABLE_GUID参数维护可引导设备和引导管理器的设置,而- EFI_IMAGE_SECURITY_DATABASE_GUID参数代表安全数据库,用于安全引导变量- dbx,以及所需密钥和证书的存储。
- 
									
- 将数据库证书传送到目标实例,使用 - efivar工具来管理 UEFI 环境变量。- 要转让 - PK.esl,请输入:- efivar -w -n 8be4df61-93ca-11d2-aa0d-00e098032b8c-PK -f PK.esl - # efivar -w -n 8be4df61-93ca-11d2-aa0d-00e098032b8c-PK -f PK.esl- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 要传输 - KEK.esl,请输入:- efivar -w -n 8be4df61-93ca-11d2-aa0d-00e098032b8c-KEK -f KEK.esl - # efivar -w -n 8be4df61-93ca-11d2-aa0d-00e098032b8c-KEK -f KEK.esl- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 要传输 - db.esl,请输入:- efivar -w -n d719b2cb-3d3a-4596-a3bc-dad00e67656f-db -f db.esl - # efivar -w -n d719b2cb-3d3a-4596-a3bc-dad00e67656f-db -f db.esl- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 要传输 x64 架构的 - dbx.eslUEFI 撤销列表文件,请输入:- efivar -w -n d719b2cb-3d3a-4596-a3bc-dad00e67656f-dbx -f dbx.esl - # efivar -w -n d719b2cb-3d3a-4596-a3bc-dad00e67656f-dbx -f dbx.esl- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- 从 AWS 控制台重启实例。
验证
- 验证是否启用了安全引导: - mokutil --sb-state - $ mokutil --sb-state SecureBoot enabled- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 使用 - keyctl工具验证自定义证书的内核密钥环:- sudo keyctl list %:.platform - $ sudo keyctl list %:.platform 4 keys in keyring: 907254483: ---lswrv 0 0 asymmetric: Signature Database key: f064979641c24e1b935e402bdbc3d5c4672a1acc ...- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow