4. Xeon BIOS/UEFI安全基线配置
固件层是服务器启动链的信任起点。对搭载 Intel Xeon 可扩展处理器的服务器而言,BIOS/UEFI 中的安全选项决定了“谁有权修改固件、固件是否被篡改、启动镜像是否可信、密钥与度量信息存放在哪里”。如果这一层失守,操作系统内的 SELinux、AppArmor、审计日志都可能在攻击者面前失去意义。本节围绕 Secure Boot、BIOS 管理员密码、TPM、Boot Guard、Flash 写保护五类基线项,说明配置位置、关键参数、验证方法与常见误区。
一、启动信任链与各选项的职责边界
Xeon 平台的启动过程大致为:CPU 复位后执行 Boot Guard 验证的 ACM/IBB 固件,随后 UEFI 固件初始化硬件并加载引导程序,引导程序再加载内核。Secure Boot 负责校验引导程序与内核模块的签名;Boot Guard 负责校验固件自身;BIOS 密码控制进入 Setup 与修改配置的权限;Flash 写保护阻止运行时对固件区域的写入;TPM 则提供度量存储、密钥密封与远程证明能力。五者不是替代关系,而是覆盖不同阶段、不同攻击面的组合。
二、Secure Boot 的配置与验证
Secure Boot 依赖 UEFI 密钥数据库:平台密钥 PK、密钥交换密钥 KEK、签名数据库 db 与吊销数据库 dbx。Xeon 服务器通常预置 Microsoft 与 OEM 证书,若使用自编译内核或第三方驱动,需要将自签名证书导入 db 或 MOK(Machine Owner Key)。配置时进入 Setup 的 Security → Secure Boot,将 Secure Boot 设为 Enabled,Secure Boot Mode 设为 Standard 或 Custom。Standard 使用厂商预置密钥,Custom 允许手动管理密钥。
验证可在 Linux 下执行:
mokutil --sb-state
# 期望输出:SecureBoot enabled
mokutil --list-enrolled | head -20
# 查看已注册的 MOK 证书
dmesg | grep -i "secure boot"
# 内核启动日志中应出现 Secure boot enabled
若输出为 SecureBoot disabled,需回到 Setup 检查是否被 BIOS 密码保护、是否被 CSM(兼容支持模块)覆盖。CSM 开启时 Secure Boot 通常不可用,应在纯 UEFI 模式下运行。
三、BIOS 管理员密码与访问控制
BIOS 密码分为管理员密码(Administrator Password)与开机密码(Power-On Password)。基线要求至少设置管理员密码,防止未授权人员进入 Setup 关闭 Secure Boot、修改启动顺序或刷写固件。配置时在 Security → Administrator Password 中设置强密码,并启用“Password on Boot”按需选择。部分平台还提供“Setup Password”与“HDD Password”,前者与管理员密码类似,后者用于磁盘加密。
需要特别注意的是,BIOS 密码遗忘后的清除通常需要主板跳线或厂商工具,因此必须将密码纳入企业密码管理系统。验证方式为重启后按 F2/Del 进入 Setup,确认需要输入密码;同时确认在操作系统内无法通过厂商工具无密码修改关键安全项。
四、TPM 2.0 的启用与度量
TPM 2.0 在 Xeon 平台上通常以固件 TPM(fTPM)或独立模块形式存在。配置时在 Security → TPM 中启用 TPM 2.0,并执行 Clear TPM 以清除旧所有权。启用后,Linux 下可通过以下命令验证:
ls /sys/class/tpm/
# 期望看到 tpm0 或 tpmrm0
cat /sys/class/tpm/tpm0/tpm_version_major
# 期望输出:2
tpm2_pcrread sha256:0,1,2,3,4,7
# 查看启动相关 PCR 的度量值
PCR[0] 到 PCR[7] 由固件度量,PCR[8] 以后由操作系统度量。若启用度量启动(Measured Boot),每次启动的 PCR 值应稳定;若固件或引导程序被篡改,PCR 值会变化,远程证明即可发现。TPM 还可用于密封磁盘加密密钥,使磁盘只能在特定固件与引导状态下解密。
五、Boot Guard 与 Flash 写保护
Boot Guard 是 Intel 平台在硬件层验证固件完整性的机制,分为 Verified Boot 与 Measured Boot 两种 Profile。Verified Boot 使用 OEM 公钥验证 IBB(Initial Boot Block),验证失败则停止启动;Measured Boot 则将度量值写入 TPM。配置时在 Setup 的 Boot → Boot Guard 或平台安全菜单中确认状态为 Enabled,并核对 Profile。部分 OEM 将 Boot Guard 设为出厂固化,用户不可更改,此时应通过厂商文档确认其已启用。
Flash 写保护用于阻止操作系统运行时对 BIOS 区域的写入。配置项通常位于 Security → Flash Write Protection 或 BIOS Write Protect,设为 Enabled。验证可在 Linux 下尝试读取与探测:
flashrom -p internal --flash-name
# 若写保护生效,写入操作应被拒绝
cat /sys/class/mtd/mtd0/ro
# 若为 1,表示该区域只读
需要说明的是,Flash 写保护与固件更新存在冲突。执行厂商固件更新前,需临时关闭写保护,更新完成后立即恢复,并重新核对 Secure Boot 与 TPM 状态。
六、基线核查表与常见误区
| 基线项 | 推荐配置 | 验证命令/位置 | 常见误区 |
|---|---|---|---|
| Secure Boot | Enabled,Standard 或 Custom | mokutil --sb-state | 开启 CSM 导致 Secure Boot 不可用 |
| BIOS 管理员密码 | 已设置强密码并登记 | 重启进入 Setup 验证 | 只设开机密码,未设管理员密码 |
| TPM 2.0 | Enabled,已 Clear 旧所有权 | tpm2_pcrread sha256:0,7 | 未清除旧 TPM 导致密钥冲突 |
| Boot Guard | Enabled,Verified 或 Measured | Setup 安全菜单 / 厂商文档 | 误以为所有平台均可配置 |
| Flash 写保护 | Enabled | flashrom 探测 / sysfs ro | 更新固件后忘记恢复写保护 |
固件层安全基线的核心不是“把选项都打开”,而是建立可验证、可恢复、可审计的信任链。建议将上述五项纳入服务器交付检查单,每次固件更新后重新执行验证命令,并保留输出作为合规证据。