Menu Close
第 4 章 为安全引导签名内核模块
您可以使用签名的内核模块来提高系统安全性。以下小节介绍了如何在启用了安全引导机制的基于 UEFI 的构建系统中,在 RHEL 9 中使用自签名的内核模块。这些部分还提供了将您的公钥导入到要部署内核模块的目标系统中的可用选项概述。
如果启用了安全引导机制,则必须使用私钥签名 UEFI 操作系统引导装载程序、Red Hat Enterprise Linux 内核和所有内核模块,并使用对应的公钥进行身份验证。如果未签名和验证,则不允许系统完成引导过程。
RHEL 9 发行版包括:
- 签名的引导装载程序
- 签名的内核
- 签名的内核模块
此外,签名的第一阶段引导装载程序和签名的内核包括嵌入的红帽公钥。这些签名的可执行二进制文件和嵌入式密钥可让 RHEL 9 在支持 UEFI 安全引导的系统上使用 UEFI 固件提供的 Microsoft UEFI 安全引导认证认证机构密钥安装、启动并运行。请注意,并非所有基于 UEFI 的系统都包括对安全引导的支持。
先决条件
要能够为外部构建的内核模块签名,请在构建系统上安装下表中列出的实用程序。
表 4.1. 所需工具
工具 | 由软件包提供 | 用于 | 目的 |
---|---|---|---|
|
| 构建系统 | 生成公共和专用 X.509 密钥对 |
|
| 构建系统 | 用来使用私钥为内核模块签名的可执行文件 |
|
| 目标系统 | 用于手动注册公钥的可选工具 |
|
| 目标系统 | 用于在系统密钥环中显示公钥的可选工具 |
构建系统(构建和签署内核模块)不需要启用 UEFI 安全引导,甚至不需要是基于 UEFI 的系统。
4.1. 什么是 UEFI 安全引导
使用统一 可扩展固件接口 (UEFI)安全引导技术,您可以确保系统引导装载程序使用加密密钥签名。固件中包含的公钥数据库,授权签名密钥。您可以在下一个阶段引导装载程序和内核中验证签名。因此,您可以防止执行不是由可信密钥签名的内核空间代码。
UEFI 安全引导建立了从固件到签名的驱动程序和内核模块的信任链,如下所示:
-
UEFI 私钥签名,公钥验证
shim
首次阶段引导装载程序。证书颁发机构 (CA)反过来签署公钥。CA 存储在固件数据库中。 -
shim.efi
包含红帽公钥 Red Hat Secure Boot(CA key 1),用于验证 GRUB 2 引导装载程序和内核。 - 内核依次包含用于验证驱动程序和模块的公钥。
安全引导(Secure Boot)是 UEFI 规格的引导路径验证组件。规格定义:
- 在非易失性存储中进行加密保护的 UEFI 变量的编程接口
- 在 UEFI 变量中存储可信 X.509 根证书
- UEFI 应用程序(如引导装载程序和驱动程序)验证
- 撤销已知错误的证书和应用程序哈希的步骤
UEFI 安全引导不会阻止安装或删除第二个阶段引导装载程序。此外,不需要明确用户确认此类更改。在引导过程中会验证签名,而不是安装或更新引导装载程序。因此,UEFI 安全引导不会停止引导路径操作。它有助于检测未经授权的更改。
引导装载程序或内核可以正常工作,只要系统信任的密钥对它们进行签名。