第 5 章 在 Azure 上配置带有安全引导的 RHEL
要在 Microsoft Azure 上增强 Red Hat Enterprise Linux (RHEL)实例的引导安全性,请配置安全引导。安全引导会在启动时验证引导装载程序和其他组件的数字签名,允许可信程序在阻止未经授权的程序时加载。
Azure 平台上公开的可用 RHEL 镜像默认包括安全引导。允许的签名数据库(db)有 Microsoft 证书。当您在 Azure Compute Gallery 中注册一个新镜像版本时,您可以将自定义证书添加到 UEFI 安全引导变量中。
5.1. 云环境中 RHEL 的安全引导概述 复制链接链接已复制到粘贴板!
当安全引导检测到任何由不受信任的实体签名的篡改组件或组件时,它会中止引导过程。这是与传统启动进程不同的位置。安全引导在配置机密虚拟机(CVM)中发挥关键作用。
它确保只有可信实体参与引导链。安全引导是一个统一可扩展固件接口(UEFI)功能。它根据硬件中存储的可信密钥验证引导组件的数字签名,如引导装载程序和内核。
安全引导可防止未经授权或篡改的软件在启动过程中运行,从而防止您的系统被恶意代码运行。它还:
- 通过定义的接口验证对特定设备路径的访问
- 强制使用最新的配置
- 永久覆盖以前的配置
当 Red Hat Enterprise Linux (RHEL)内核在启用了安全引导的情况下引导时,它会进入 lockdown 模式。在这个模式中,只有由可信供应商签名的内核模块才能加载。因此,安全引导增强了操作系统引导序列的安全性。
- 安全引导组件
安全引导机制包括固件、签名数据库、加密密钥、引导装载程序、硬件模块和操作系统。以下是 UEFI 信任的变量的组件:
-
密钥交换密钥数据库(KEK):一种公钥交换,来在 RHEL 操作系统和虚拟机固件之间建立信任。您也可以使用这些密钥更新允许的签名数据库(
db)和禁止的签名数据库(dbx)。 - 平台密钥数据库(PK):一个自签名的单密钥数据库,来在虚拟机固件和云平台之间建立信任。PK 也更新 KEK 数据库。
-
允许签名数据库(
db):维护证书列表或二进制哈希的数据库。它们定义二进制文件是否可以在系统上启动。另外,来自db的所有证书都会导入到 RHEL 内核的.platformkeyring 中。使用此功能,您可以在锁定模式下添加和加载签名的第三方内核模块。 禁止的签名数据库(
dbx):一个维护证书列表或不允许在系统中引导的二进制哈希的数据库。注意针对
dbx数据库的二进制文件检查和安全引导高级目标(SBAT)机制。使用 SBAT,您可以通过将签名的二进制文件的证书保持为有效来撤销特定二进制文件的旧版本。
- 安全引导阶段
当 RHEL 实例以统一内核镜像(UKI)模式引导并启用了安全引导时,它会与云服务基础架构交互。这些步骤如下:
- 初始化 :当 RHEL 实例引导时,云托管的固件最初引导并实施安全引导机制。
- 变量存储初始化 :固件从变量存储中初始化 UEFI 变量。这是一个专用的存储区域,用于固件需要管理引导过程和运行时操作的信息。当 RHEL 实例首次启动时,存储会从与虚拟机镜像关联的默认值初始化。
引导装载程序 :引导时,固件会加载第一阶段引导装载程序。对于 x86 UEFI 环境中的 RHEL 实例,第一阶段引导装载程序是 shim。shim 引导装载程序验证并加载引导过程的下一阶段。它充当 UEFI 和 GRUB 之间的桥接。
-
RHEL 中的 shim x86 二进制文件由
Microsoft Corporation UEFI CA 2011证书签名。 - RHEL 实例使用 shim 二进制文件在各种硬件和虚拟平台上在启用了安全引导的模式下引导。
-
检查平台在其允许签名数据库(
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 内核会根据db、MOK和 shim 证书验证其签名。此过程可确保操作系统厂商、RHEL 或用户签署了扩展。
当 RHEL 内核以安全引导模式引导时,它会进入锁定模式。
进入 lockdown 模式后,RHEL 内核执行以下操作:
-
将
db密钥添加到.platform密钥环中。 -
将
MOK密钥添加到.machine密钥环中。
在内核构建过程中,构建系统使用临时密钥对,由私钥和公钥组成。构建系统签署标准 RHEL 内核模块,如 kernel-modules-core、kernel-modules、kernel-modules-extra。
每个内核构建后,对第三方模块进行签名的私钥已过时。您可以使用 db 和 MOK 中的证书来实现这一目的。