← LeisureLinux 文章索引
LeisureLinux · 微信公众号文章

离机即毁:利用 TPM 2.0 与 UKI 锁定 Linux 镜像的物理生存权

安全/漏洞 阅读原文(微信)↗

{#section path-to-node="2"}

【前言】

在 IT 运维的终极语义里,安全不是"多复杂的密码",而是"物理上的不可违约"。如果你交付的 ISO 镜像离开特定硬件还能被轻易运行,或在传输中被悄悄植入后门,那么整套安全体系就是失败的。

今天,LeisureLinux 带你构建一套基于UKI (Unified Kernel Image)TPM 2.0的绝对防御链路。我们要做的,是让系统镜像具备物理归属感:身心合一,离机即毁。

一、 铸造"金丹":UKI 实现内核级原子化

传统的 Linux 启动像是一场没有封条的接力:BIOS 引导 GRUB,GRUB 加载内核与 Initrd。黑客可以在中途替换 Initrd(初始内存盘)而无需改动内核,从而绕过安全校验。

UKI (Unified Kernel Image) 的本质,是将内核、Initrd 以及启动参数强行封装为一个单一的.efi二进制文件。

  • 物理封条:任何细微的改动都会导致整个.efi文件的数字签名失效。

  • 锁定指纹:我们将dm-verity Root Hash(磁盘数据指纹)直接硬编码进 UKI 的启动参数中。

构建指令:

[Bash]{ngcontent-ng-c1474045893=""}

/usr/lib/systemd/ukify build \
    --linux=/boot/vmlinuz \
    --initrd=/boot/initrd.img \
    --cmdline="ro_root_hash=你的磁盘指纹 quiet" \
    --output=leisure-linux.efi

二、 封印"基因":TPM 2.0 的物理死锁

有了 UKI 保护代码逻辑,我们还需要锁定硬件。通过TPM 2.0 (Trusted Platform Module),我们可以实现磁盘密钥的Sealing(封印)

1. 什么是封印?

系统将磁盘加密密钥(LUKS Key)存入 TPM 硬件芯片。只有当满足以下PCR(平台配置寄存器)校验时,芯片才会吐出钥匙:

  • PCR 0/1:BIOS 固件与主板配置。

  • PCR 7:Secure Boot 状态。

2. 执行绑定

在目标服务器上,将磁盘分区与本机芯片深度缝合:

[Bash]{ngcontent-ng-c1474045893=""}

sudo systemd-cryptenroll --tpm2-device=auto --tpm2-pcrs=0+1+7 /dev/nvme0n1p3
```text

**结果**磁盘离机即毁即便硬盘被拔下插到另一台一模一样的主板上由于 TPM 内部根密钥不同数据将永远无法解密

## ** ** {#section-7 path-to-node="24"}

## ** 渡劫"无常"降临时的容灾方案** {#三-渡劫当无常降临时的容灾方案 path-to-node="24"}

极端的锁往往也是极端的枷锁在企业级运维中必须为"主板损坏""物理坏道"留出后路

### ** ** {#section-8 path-to-node="26"}

### **1. 灵魂转世Recovery Key** {#灵魂转世recovery-key path-to-node="26"}

在执行 TPM 绑定时**必须**生成一个不依赖硬件的恢复密钥

[Bash]{ngcontent-ng-c1474045893=""}

sudo systemd-cryptenroll --recovery-key /dev/nvme0n1p3

**运维信条**该密钥需离线纸质备份它是主板烧毁后跨越物理限制拯救数据的唯一通道

### ** ** {#section-9 path-to-node="30"}

### **2. 基因备份Header 损坏修复** {#基因备份header-损坏修复 path-to-node="30"}

加密磁盘最怕\*\*元数据区Header)\*\*出现坏扇区一旦 Header 损坏全盘皆失

-   **预案**初始化后立即备份头部信息

[Bash]{ngcontent-ng-c1474045893=""}

```bash
sudo cryptsetup luksHeaderBackup /dev/nvme0n1p3 --header-backup-file rootfs_header.bak

3. 优雅解绑:固件升级 SOP

当你需要升级 BIOS 或更换硬件前,必须先行"解绑",否则指纹变动将触发系统自杀:

[Bash]{ngcontent-ng-c1474045893=""}

```

清理所有 TPM2 绑定,回退到手动密码模式

sudo systemd-cryptenroll --wipe-slot=tpm2 /dev/nvme0n1p3 ```bash

四、 MOK 授权:收回"信任的根源"

不要依赖微软的通用证书。通过MOK (Machine Owner Key),你在客户的机器上植入的是你自己的信任根。

  1. 签署:用你的私钥签署 UKI。

  2. 授权:客户通过mokutil——import导入你的证书。

  3. 闭环:至此,硬件(MOK)、代码(UKI)、数据(dm-verity)三位一体。

【IT 禅悟】

安全不是玄学,是数学上的确定性。

  • UKI保证了"心"的纯净(逻辑完整);

  • dm-verity保证了"肉身"的不腐(数据完整);

  • TPM 2.0保证了"灵魂"的归属(硬件唯一)。

在分布式运维的荒原上,这套"三位一体"的方案是你对资产掌控权的最强护身符。

结语

"所有的加密方案,本质上都是在'防御外敌'与'自杀风险'之间走钢丝。一个合格的架构师,左手握着封印的符咒,右手一定攥着重生的契约。"

LeisureLinux 提示:由于 TPM 方案对系统版本有硬性要求,建议在部署前确认内核版本[\$\ge 5.15\$]{index-in-node="50" math="\ge 5.15"}且systemd[\$\ge 248\$]{index-in-node="69" math="\ge 248"}。

本文整理自微信公众号 LeisureLinux 的原创内容(Linux / AI / 安全 硬核技术)。

· 阅读原文(微信公众号)

· 关注公众号 LeisureLinux,第一时间获取技术深度内容。

LeisureLinux 公众号二维码(微信扫一扫关注)