26.11. 统一可扩展固件接口(UEFI)安全引导
统一可扩展固件接口 (UEFI)安全引导技术可确保系统固件检查系统引导装载程序是否使用由固件中包含的公钥数据库授权的加密密钥签名。通过在下一阶段引导装载程序和内核中进行签名验证,可以防止执行尚未由可信密钥签名的内核空间代码。
信任链从固件到签名的驱动程序和内核模块,如下方所示:第一阶段引导装载程序( shim.efi)
由 UEFI 私钥签名,并由存储在固件数据库中的证书颁发机构(CA)签名的公钥进行身份验证。The shim.efi
包含红帽公钥"Red Hat 安全引导(CA 密钥 1)",用于验证 GRUB 2 启动加载器、grubx64.efi
和红帽内核。反过来,内核包含用于验证驱动程序和模块的公钥。
安全引导(Secure Boot)是 Unified Extensible Firmware Interface(UEFI)规范中的引导路径验证组件。该规范定义了:
- 用于非易失性存储中加密保护 UEFI 变量的编程接口,
- 可信 X.509 根证书如何存储在 UEFI 变量中,
- UEFI 应用程序(如引导装载程序和驱动程序)的验证,
- 撤销已知错误的证书和应用程序哈希的流程。
UEFI 安全引导不会阻止安装或删除第二阶段引导装载程序,也不要求用户明确确认此类更改。签名在引导过程中被验证,而不是在安装或更新引导装载程序时验证。因此,UEFI 安全引导不会停止引导路径操作,这有助于检测未授权的更改。新的启动加载器或内核将正常工作,只要它由系统信任的密钥签名。
26.11.1. Red Hat Enterprise Linux 7 中的 UEFI 安全引导支持
Red Hat Enterprise Linux 7 包括对 UEFI 安全引导功能的支持,这意味着可以在启用了 UEFI 安全引导的系统上安装并运行 Red Hat Enterprise Linux 7。在启用了安全引导技术的基于 UEFI 的系统上,载入的所有驱动程序必须使用可信密钥签名,否则系统将不会接受它们。红帽提供的所有驱动程序都由红帽的私钥签名,并由内核中对应的红帽公钥进行身份验证。
如果要加载外部构建的驱动程序(不是在 Red Hat Enterprise Linux DVD 上提供的驱动程序),您必须确保对这些驱动程序进行了签名。
有关签署自定义驱动程序的信息,请参见《红帽企业 Linux 7 内核管理指南 》。
UEFI 安全引导的限制
由于 Red Hat Enterprise Linux 7 中的 UEFI 安全引导支持旨在确保系统仅在正确验证签名后运行内核模式代码,因此存在某些限制。
GRUB 2 模块加载已被禁用,因为没有用于签署和验证 GRUB 2 模块的基础架构,这意味着允许加载它们将构成在安全引导定义的安全边界内执行不受信任的代码。相反,红帽提供了一个经过签名的 GRUB 2 二进制文件,其中包含 Red Hat Enterprise Linux 7 支持的所有模块。
有关详细信息,请参阅 UEFI 安全引导所带来的红帽知识库文章。