5.3. 在 AWS Marketplace 上配置具有安全引导的 RHEL 实例
要确保 AWS 上的 RHEL 实例有安全的操作系统引导过程,请使用安全引导。要在 AWS 上配置具有安全引导支持的 Red Hat Enterprise Linux (RHEL)实例,请从 AWS 市场启动 RHEL Amazon Machine Image (AMI),后者已预先配置了启用了 uefi-preferred
的引导模式。uefi-preferred
选项支持安全引导所需的统一可扩展固件接口(UEFI)引导装载程序。如果没有 UEFI,安全引导功能将无法正常工作。
要避免安全问题,请生成私钥并将其与当前 RHEL 实例分开保存。如果安全引导 secret 存储在使用它们的同一实例上,则入侵者可以访问升级其特权的 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-10.0.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 setup
模式允许在实例中更新安全引导 UEFI 变量。创建一个新的随机通用唯一标识符(UUID),并将其存储在一个系统生成的文本文件中:
uuidgen --random > GUID.txt
$ uuidgen --random > GUID.txt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为平台密钥数据库生成一个新的
PK.key
RSA 私钥和自签名PK.cer
X.509 证书:Copy to Clipboard Copied! Toggle word wrap Toggle overflow openssl
工具通过将输出格式设置为可辨识的编码规则(DER)来为证书生成一个通用名称Platform key
。为密钥交换密钥数据库生成一个新的
KEK.key
RSA 私钥和自签名KEK.cer
X.509 证书:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 生成一个
custom_db.cer
自定义证书:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 下载
Microsoft Corporation 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 位系统下载更新的禁止签名的 UEFI 撤销列表文件(
dbx
):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 详情请查看您系统上的
virt-fw-vars (1)
手册页。将 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
参数代表安全引导变量db
,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.esl
UEFI 撤销列表文件,请输入: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
工具验证自定义证书的内核 keyring :sudo keyctl list %:.platform
$ sudo keyctl list %:.platform 4 keys in keyring: 786569360: ---lswrv 0 0 asymmetric: Signature Database key: 5856827178d376838611787277dc1d090c575759 ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow