4. BIOS与UEFI安全配置基线

在AMD EPYC服务器上,BIOS/UEFI固件是操作系统加载之前最先执行的代码,它决定了平台信任链的起点。如果固件层被篡改或配置失当,后续在操作系统内做的加固措施都可能被绕过。本节围绕Secure Boot、BIOS写保护、管理员密码策略、启动顺序锁定和固件更新策略五个方面,说明如何在EPYC平台上建立可落地的固件安全基线。

Secure Boot:从固件到OS的信任链

Secure Boot(安全启动)依赖UEFI规范定义的密钥体系,在EPYC平台上通常由AMD Platform Security Processor(PSP)参与固件验证。其核心是四类密钥:Platform Key(PK)代表平台所有者,Key Exchange Key(KEK)用于授权签名数据库更新,db存放允许启动的镜像签名,dbx存放已被吊销的签名。启动时固件逐级校验引导加载程序签名,校验失败则拒绝执行。

实际配置中,建议先确认当前状态,再决定是否替换为自签名密钥。以常见服务器管理接口为例,可通过Redfish读取Secure Boot状态:

GET /redfish/v1/Systems/1/SecureBoot
{
  "SecureBootEnable": true,
  "SecureBootCurrentBoot": "Enabled",
  "SecureBootMode": "UserMode"
}

若返回SetupMode,说明PK尚未写入,此时可导入自签名证书。生产环境推荐使用企业自签PK/KEK,并将经过签名的引导程序与驱动加入db,同时把已知有漏洞的旧版引导程序哈希写入dbx。需要特别注意的是,一旦启用Secure Boot,未签名的内核模块或自定义引导程序将无法加载,必须在变更前完成签名或替换方案,否则服务器可能无法启动。

AMD EPYC 平台 Secure Boot 信任链与固件安全基线 AMD PSP 硬件信任根 UEFI 固件 PK / KEK 校验 引导加载程序 db 签名校验 操作系统内核 模块签名校验 密钥体系 PK 平台密钥 KEK 密钥交换 db 允许签名 dbx 吊销签名 固件安全基线控制项 BIOS 写保护 管理员密码 启动顺序锁定 固件更新策略 审计日志

BIOS写保护与管理员密码策略

BIOS写保护用于阻止运行时对固件存储区的非法写入。EPYC平台通常提供两种机制:一是通过BIOS设置中的“Flash Write Protect”或“BIOS Lock”选项,将SPI闪存写使能信号锁定;二是利用芯片组提供的SMM保护,防止操作系统通过SMM接口修改固件。建议在完成所有固件配置后开启写保护,并在变更窗口内临时关闭,变更完成后立即恢复。

管理员密码策略需要区分两个层级:BIOS管理员密码(Admin Password)用于进入固件设置界面,开机密码(Power-On Password)用于阻止未授权启动。基线建议如下:管理员密码长度不少于12位,包含大小写字母、数字和符号;启用密码失败锁定,例如连续3次错误后锁定5分钟;禁止使用厂商默认密码或空密码。在批量部署场景中,可通过Redfish的Bios资源统一设置:

PATCH /redfish/v1/Systems/1/Bios/Settings
{
  "Attributes": {
    "AdminPassword": "********",
    "PasswordLockout": "Enabled",
    "PasswordLockoutThreshold": 3
  }
}

需要强调的是,密码策略必须与带外管理(BMC)密码策略协同。很多入侵路径是先通过BMC获得控制权,再关闭BIOS写保护并刷入恶意固件。因此BMC应使用独立强密码,并启用双因素认证。

启动顺序锁定与固件更新策略

启动顺序锁定用于防止攻击者通过外部介质引导未授权系统。基线要求:将内置硬盘或NVMe设为第一启动项,禁用网络启动(PXE)或将其置于最后;禁用USB启动,或在需要时通过管理员密码临时启用;启用“Boot Order Lock”选项,使启动顺序在下次启动时不被修改。对于EPYC平台,还应在BIOS中确认“Secure Boot”与“Boot Order Lock”同时生效,避免只锁顺序不锁签名。

固件更新策略应遵循“可验证、可回滚、有记录”的原则。更新前,从AMD或服务器厂商官网获取对应EPYC型号的固件包,并核对SHA-256哈希与数字签名;更新时优先使用带外管理接口的固件更新功能,避免在操作系统内直接刷写;更新后重启并检查固件版本、Secure Boot状态和启动顺序是否保持。建议维护一份固件基线表,记录每个机型的目标版本、更新日期和校验值。例如:

机型BIOS目标版本BMC目标版本校验方式更新窗口
EPYC 9004 双路2.101.45SHA-256 + 签名季度维护
EPYC 7003 单路1.801.32SHA-256 + 签名季度维护
固件更新存在断电变砖风险,务必在UPS供电或双电源冗余条件下执行,并提前备份当前BIOS配置。若更新后无法启动,可使用主板上的BIOS恢复跳线或备份固件镜像回滚。

配置检查与验证

完成上述配置后,应通过以下方式验证基线是否生效:重启进入BIOS设置界面,确认Secure Boot为Enabled、Boot Order Lock为Enabled、USB启动为Disabled;使用dmidecode -t bios查看固件版本和发布日期;在操作系统内执行mokutil --sb-state确认Secure Boot处于启用状态;通过Redfish读取SecureBoot和Bios资源,核对关键属性与基线表一致。若发现某项被意外修改,应立即排查BMC访问日志和固件更新记录,确认是否存在未授权操作。

建议将上述检查项固化为自动化脚本,在每次固件更新后和每月巡检时执行,输出差异报告。对于大规模EPYC集群,可结合Redfish批量采集,将结果写入配置管理数据库,实现固件安全基线的持续合规。

固件安全基线不是一次性工作,而是需要与变更管理、漏洞管理和审计流程结合的持续过程。只有把Secure Boot、写保护、密码策略、启动顺序锁定和更新策略作为一个整体来维护,才能确保EPYC平台从加电那一刻起就处于可信状态。