5.2. 了解云上的 RHEL 安全引导
安全引导是统一可扩展固件接口(UEFI)的功能。它保证在引导时只运行可信和数字签名的程序和组件,如引导装载程序和内核。安全引导会根据硬件中存储的可信密钥检查数字签名。如果检测到任何由不受信任的实体签名的篡改组件或组件,它将中止引导过程。此操作可防止恶意软件破坏操作系统。
安全引导通过确保只有可信实体参与引导链,在配置机密虚拟机(CVM)方面扮演重要角色。它通过定义的接口验证对特定设备路径的访问,强制使用最新的配置,并永久覆盖以前的配置。当 Red Hat Enterprise Linux (RHEL)内核在启用了安全引导的情况下引导时,它会进入锁定模式,只允许由可信供应商签名的内核模块载入。因此,安全引导增强了操作系统引导序列的安全性。
5.2.1. 安全引导组件 复制链接链接已复制到粘贴板!
安全引导机制包括固件、签名数据库、加密密钥、引导装载程序、硬件模块和操作系统。以下是 UEFI 可信变量的组件:
-
密钥交换密钥数据库(KEK):公钥交换,以在 RHEL 操作系统和虚拟机固件之间建立信任。您还可以使用这些密钥更新允许签名数据库(
db)和禁止签名数据库(dbx)。 - 平台密钥数据库(PK):一个自签名的单密钥数据库,用于在虚拟机固件和云平台之间建立信任。PK 还更新 KEK 数据库。
-
允许签名数据库(
db):维护证书或二进制哈希列表的数据库,以检查二进制文件是否可以在系统中引导。另外,来自db的所有证书都会导入到 RHEL 内核的.platform密钥环中。使用此功能,您可以在锁定模式下添加和加载签名的第三方内核模块。 -
禁止签名数据库(
dbx):维护一个不允许在系统中引导的证书或二进制哈希列表的数据库。
针对 dbx 数据库和安全引导高级目标(SBAT)机制的二进制文件检查。使用 SBAT,您可以通过保持签名二进制文件的证书保持有效的证书来撤销特定二进制文件的旧版本。
5.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软件包)。x86_64 架构上的相应证书Red Hat Secure Boot Signing 504签署 UKI。您可以在redhat-sb-certs软件包中找到此证书。Red Hat Secure Boot 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 中的证书来实现这一目的。