1. 课程导入与安全基线认知

在数据中心里,一台双路 AMD EPYC 服务器可能同时承载几十个虚拟机、数百个容器,以及数据库、密钥服务、AI 推理等敏感负载。攻击者一旦从某个被攻陷的容器或带外管理口进入,横向移动的代价极低。因此,讨论 EPYC 平台的安全,不能只停留在"打补丁"层面,而要建立一套可度量、可验证、可复现的安全基线,并让访问控制成为这套基线的执行骨架。

一、AMD EPYC 安全体系全景

AMD EPYC(以 Zen 架构的 EPYC 7002/7003/9004 系列为代表)的安全能力分布在多个层次,从芯片内部一直延伸到平台与操作系统。理解这些层次,是后续所有基线项的前提。

最底层是 AMD Secure Processor(AMD-SP,早期称 PSP),它是 SoC 内一个独立的 ARM 微控制器,运行签名固件,负责安全启动、密钥管理与固件验证。围绕它展开的核心机制包括:

  • AMD Secure Boot:对 BIOS/UEFI 固件镜像逐级验签,防止固件被篡改;
  • AMD Memory Guard / SME:安全内存加密,用芯片内密钥对 DRAM 数据加密,抵御物理内存读取与冷启动攻击;
  • SEV / SEV-ES / SEV-SNP:面向虚拟化的加密虚拟化,SNP 进一步提供虚拟机内存完整性保护与证明(Attestation);
  • AMD-V 与 IOMMU:硬件虚拟化与设备 DMA 隔离,是访问控制中"设备不能越权访问他人内存"的基础;
  • fTPM / TPM 2.0:可信平台模块,用于度量启动链、存储密钥与远程证明。

这些机制并非孤立开关,而是形成一条信任链:AMD-SP 验证固件 → 固件度量并配置 SME/SEV → 引导加载程序与内核延续度量 → 最终由操作系统与虚拟化层执行访问控制策略。任何一环被关闭或降级,整条链的可信度都会下降。

AMD EPYC 安全体系分层与信任链 自下而上逐级度量与验证,任一环降级都会削弱整体可信度 ① 芯片根信任层 AMD-SP 安全处理器 · 签名固件 · 硬件密钥 ② 固件与启动层 AMD Secure Boot · UEFI 验签 · fTPM 度量 ③ 内存与虚拟化层 SME 内存加密 · SEV-SNP · AMD-V · IOMMU ④ 操作系统与虚拟化层 内核加固 · SELinux/AppArmor · KVM 隔离 ⑤ 访问控制与审计层 身份认证 · 最小权限 · 日志与合规核查 信任链传递方向 AMD-SP 验证固件签名 固件度量结果写入 fTPM PCR SME/SEV 密钥由硬件派生并锁定 内核与 KVM 继承可信状态 访问控制策略执行并记录审计 远程证明(Attestation)对外输出可信证据

二、什么是安全基线

安全基线(Security Baseline)是一组经过验证、可重复施加、可检查判定的安全配置集合。它回答三个问题:平台应当处于什么状态?如何确认它确实处于该状态?偏离后如何纠正?

与"最佳实践建议"不同,基线必须可判定。例如"启用 SEV-SNP"不是基线项,而"在 KVM 主机上,所有生产虚拟机均以 sev-snp 模式启动,且 /sys/kernel/debug/sev/status 显示 SNP 已启用"才是可检查的基线项。基线项通常包含四个要素:检查对象、期望值、检查方法、偏离处置。

在 EPYC 平台上,基线大致分为四类:

类别典型基线项检查入口
固件与启动Secure Boot 开启、BIOS 写保护、禁用未用调试口BIOS 设置、dmidecode、fTPM PCR
内存与虚拟化SME 开启、SEV-SNP 可用、IOMMU 强制隔离dmesg、sevctl、内核启动参数
操作系统加固内核锁定、模块签名、SELinux enforcingsysctl、getenforce、auditd
访问与审计最小权限、SSH 密钥认证、审计日志留存sshd_config、auditctl、日志平台

三、访问控制在服务器平台中的定位

访问控制不是独立模块,而是把上述硬件能力"翻译"为业务可用的权限边界。在 EPYC 服务器上,它至少覆盖四个平面:

  • 带外管理平面:BMC/IPMI/Redfish 接口,一旦被攻破可直接控制整机,必须独立网段、强认证、禁用默认账户;
  • 主机管理平面:SSH、串口、本地控制台,决定谁能登录宿主机;
  • 虚拟化平面:KVM/QEMU 与 libvirt 权限、虚拟机间隔离、设备直通(VFIO)的 IOMMU 分组;
  • 数据平面:SME/SEV 保护的内存与虚拟机内存,确保即使宿主机被部分攻陷,租户数据仍受保护。

这四个平面共享同一套身份与授权逻辑。实践中常见的错误是:主机 SSH 做了密钥认证,但 BMC 仍使用出厂密码;或者启用了 SEV,却把虚拟机磁盘放在宿主机可读的共享存储上。访问控制的价值,正在于把这些"局部正确、整体失效"的缺口补齐。

判断一条访问控制规则是否有效,可以问:如果攻击者已经拿到该平面上的一个普通账户,他还能横向移动到哪些对象?如果答案是"几乎全部",说明隔离粒度不足。

四、课程目标与学习路径

本课程围绕"认知—配置—验证—排障"展开,目标是让学员能够独立完成一台 EPYC 服务器的安全基线落地,并能对偏离项做出判断。学习路径分为四个阶段:

  1. 认知阶段(第1–6章):理解 EPYC 安全体系、基线定义、访问控制模型与威胁面;
  2. 配置阶段(第7–16章):掌握 Secure Boot、SME/SEV-SNP、IOMMU、TPM 度量、内核加固与账户权限的具体配置;
  3. 验证阶段(第17–24章):使用 sevctl、tpm2-tools、auditd、lynis 等工具核查基线,并解读输出;
  4. 排障与运营阶段(第25–30章):处理启动失败、性能回退、证明失败等典型问题,建立持续核查机制。

作为起点,建议先在一台测试机上完成一次"基线快照":记录当前 BIOS 版本、Secure Boot 状态、SME/SEV 可用性、SELinux 模式与 SSH 配置。例如:

# 查看 SEV 能力与当前状态(示例输出,实际以平台为准)
$ sudo sevctl status
SEV:           ENABLED
SEV-ES:        ENABLED
SEV-SNP:       ENABLED
Platform State: WORKING

# 查看内存加密是否生效
$ sudo dmesg | grep -i -E "sme|sev"
[    0.000000] AMD Memory Encryption Features active: SME SEV SEV-ES SEV-SNP

# 查看强制访问控制状态
$ getenforce
Enforcing

这些输出就是后续所有基线检查的"参照原点"。当某台机器的输出与快照不一致时,差异本身就是排查线索。下一阶段,我们将从威胁模型出发,明确 EPYC 平台到底要防谁、防什么,从而让基线项有明确的取舍依据。