6.2. 了解云上的 RHEL 安全引导
安全引导是统一可扩展固件接口(UEFI)的一项功能,可确保在引导时只执行可信和数字签名的程序和组件,如引导装载程序和内核。安全引导根据硬件中存储的可信密钥验证数字签名,如果它检测到任何由不受信任的实体签名的组件,则会中止引导过程。这可以防止恶意软件破坏操作系统。
安全引导是配置机密虚拟机(CVM)的基本组件,因为它保证引导链中只存在可信实体。它通过定义的接口提供对特定设备路径的身份验证访问,这样可确保只使用最新的配置,同时永久覆盖之前的配置。另外,当 Red Hat Enterprise Linux 内核启用安全引导机制时,它会进入 lockdown 模式,这样可确保只加载由可信供应商签名的内核模块。因此,安全引导提高了操作系统引导序列的安全性。
6.2.1. 安全引导组件 复制链接链接已复制到粘贴板!
安全引导机制包括固件、签名数据库、加密密钥、引导装载程序、硬件模块和操作系统。以下是 UEFI 可信变量的组件:
-
密钥交换密钥数据库(KEK):公钥交换,以在 RHEL 操作系统和虚拟机固件之间建立信任。您还可以使用这些密钥更新允许签名数据库(
db)和禁止签名数据库(dbx)。 - 平台密钥数据库(PK):一个自签名的单密钥数据库,用于在虚拟机固件和云平台之间建立信任。PK 还更新 KEK 数据库。
-
允许签名数据库(
db):维护证书或二进制哈希列表的数据库,以检查是否允许二进制文件在系统上引导。另外,来自db的所有证书都会导入到 RHEL 内核的.platform密钥环中。此功能允许您在锁定模式下添加和加载签名的第三方内核模块。 -
禁止签名数据库(
dbx):维护禁止在系统上引导的证书或二进制哈希列表的数据库。
针对 dbx 数据库和安全引导高级目标(SBAT)机制的二进制文件检查。SBAT 允许您通过保持签名二进制文件的证书保持有效的证书来撤销特定二进制文件的旧版本。
6.2.2. Cloud 上 RHEL 的安全引导阶段 复制链接链接已复制到粘贴板!
当 RHEL 实例以 Unified Kernel Image (UKI)模式引导并启用了安全引导时,RHEL 实例会按照以下顺序与云服务基础架构进行交互:
- 初始化 :当 RHEL 实例引导时,云托管固件最初引导并实施安全引导机制。
- 变量存储初始化 :固件会从变量存储初始化 UEFI 变量,这是一个专用的存储区域,用于固件需要管理引导过程和运行时操作的信息。当 RHEL 实例首次启动时,存储会从与虚拟机镜像关联的默认值初始化。
引导装载程序 :引导时,固件会加载第一个阶段引导装载程序。对于 x86 UEFI 环境中的 RHEL 实例,第一个阶段引导装载程序是 shim。shim 引导装载程序验证并加载引导过程的下一阶段,并作为 UEFI 和 GRUB 之间的桥接。
-
RHEL 中的 shim x86 二进制文件目前由
Microsoft 公司 UEFI CA 2011Microsoft 证书签名,以便 RHEL 实例可以在启用了安全引导模式的不同硬件和虚拟平台上引导,其中 Allowed 签名数据库(db)包含默认的 Microsoft 证书。 -
shim 二进制文件使用 Red Hat Secure Boot CA 扩展可信证书列表,以及可选的 Machine Owner Key (
MOK)。
-
RHEL 中的 shim x86 二进制文件目前由
-
UKI: shim 二进制文件加载 RHEL UKI (
kernel-uki-virt软件包)。UKI 由相应证书签名,即 x86_64 架构上的红帽安全引导签名 504,可在redhat-sb-certs软件包中找到。此证书由红帽安全引导 CA 签名,因此通过检查。 -
UKI 附加组件 :要使用 UKI
cmdline扩展,RHEL 内核将根据 shim 提供的db、MOK和证书检查其签名,以确保扩展由操作系统供应商 RHEL 或用户签名。
当 RHEL 内核以安全引导模式引导时,它会进入 锁定模式。输入 lockdown 后,RHEL 内核会将 db 密钥添加到 .platform 密钥环中,并将 MOK 密钥添加到 .machine 密钥环中。在内核构建过程中,标准 RHEL 内核模块(如 kernel-modules-core、kernel-modules、kernel-modules-extra )使用由私钥和公钥组成的临时密钥签名。完成每个内核构建后,私钥变得过时,以签署第三方模块。db 和 MOK 的证书可用于此目的。