OFFSET偏移
← 文章目录OFFSET / FIELD NOTESNO. 059

LUKS2、Secure Boot 与 TPM2 加固

把磁盘加密、引导验证与运行期访问控制组合起来,并为每层保留恢复入口。

所在专题Arch Linux ↗
约 6 分钟阅读开始阅读

固件与物理安全#

TPM、固件密码和 Secure Boot 可以形成启动防护的一部分,但要结合设备威胁模型和恢复需求:

  • 确认 TPM 2.0 已启用,固件和用户空间能正常访问。
  • 固件管理员密码可限制设置修改,但不能阻止所有拆机或硬件攻击。
  • 按需求限制外部介质引导,同时保存能临时恢复设置的方法;不能把禁用 USB 引导当作绝对要求。

LUKS2 与 TPM 解锁#

LUKS2 是磁盘加密元数据格式,Argon2id 是口令派生函数,二者不是同一种“加密算法”。实际默认值以 cryptsetup 版本、构建配置和已有卷为准。

Initramfs 钩子

采用 systemd-based initramfs 与 systemd-cryptenroll 时,使用 systemd、sd-encrypt 方案,例如:

HOOKS=(base systemd autodetect microcode modconf kms keyboard sd-vconsole block sd-encrypt filesystems fsck)

按实际存储堆栈补充所需钩子,并重新生成镜像。传统 encrypt 方案并非对所有用途都过时,只是不直接提供本文的 systemd TPM 解锁流程。

TPM 注册示例

在已建立 LUKS2 卷、已备份卷头且保留可用恢复口令的前提下:

sudo systemd-cryptenroll --tpm2-device=auto --tpm2-pcrs=0+7 /dev/EXAMPLE_LUKS_PARTITION

PCR 0 与固件代码测量有关,PCR 7 与 Secure Boot 状态及信任证书有关。固定测量值可能在正常固件/密钥更新后变化,必须测试恢复流程。它们不直接验证全部内核内容;UKI 可结合 PCR 11 的签名策略。无人值守解锁也有冷启动、硬件总线和运行期攻击风险,可按需求增加 TPM PIN。

Secure Boot 密钥管理#

部署流程

先确认固件可进入 Setup Mode,备份密钥及 Windows/其他系统恢复资料,再选择信任范围。

sudo sbctl create-keys
sudo sbctl enroll-keys -m
sudo sbctl sign -s /efi/EFI/Linux/arch-linux.efi
sudo sbctl sign -s /efi/EFI/systemd/systemd-bootx64.efi
sudo sbctl verify

这里假设 ESP 挂载在 /efi,文件路径已核对。-m 加入微软证书以改善兼容性,同时扩大信任范围。实际启动还可能使用 EFI/BOOT/BOOTX64.EFI,应检查所有启动路径。保存签名路径后,验证每次内核及引导器更新都有相应 hook 完成重签。

运行期加固#

内核参数

在生成 UKI 的实际命令行输入(例如 /etc/kernel/cmdline)中按需要加入:

slab_nomerge init_on_alloc=1 init_on_free=1 vsyscall=none

它们分别限制部分 slab 合并、清零内存、禁用旧 vsyscall 入口,会产生性能或旧软件兼容性取舍。原笔记中的 /etc/cmdline.d/security.conf 不是所有 UKI 工具都会读取的通用路径。

AppArmor

sudo pacman -S apparmor
sudo systemctl enable --now apparmor.service

还需确认 AppArmor 在当前 LSM 列表中启用,例如检查:

cat /sys/kernel/security/lsm
sudo aa-status

若需要设置 lsm=,保留当前所需模块和正确顺序,再重建 UKI/引导配置并验证。服务启动不等于所有应用已受限;需要加载并维护对应 profile。额外的 apparmor.d 规则集合应审核来源、当前打包方式和与应用版本的兼容性,不能把未核对包名直接混入官方仓库安装命令。

应用沙盒#

Flatpak 使用 Bubblewrap 等机制隔离应用,实际强度取决于应用权限。检查文件系统、设备、会话总线等授权范围。Firejail 是另一种传统应用隔离方案,也需要适配 profile 和使用场景。沙盒不能替代更新、可信来源和最小权限。

信任链关系#

graph TD
    A[固件设置与 TPM] --> B[Secure Boot 信任证书]
    B --> C[签名 UKI]
    C --> D[TPM 测量与解锁策略]
    D --> E[LUKS2 解锁或恢复口令]
    E --> F[运行期访问控制与沙盒]

参考与延伸

  1. ArchWiki:Trusted Platform Module ↗
  2. ArchWiki:Unified Extensible Firmware Interface/Secure Boot ↗
  3. ArchWiki:Dm-crypt ↗
  4. ArchWiki:AppArmor ↗
  5. ArchWiki:Security ↗

根据技术笔记重新整理,示例使用通用名称。

沿专题继续阅读

Arch Linux

  1. 01Arch Linux 的哲学与安装规划
  2. 02内核管理、systemd-boot 与 UKI
  3. 03Pacman Hook、AUR 与构建安全
  4. 04Btrfs 子卷布局与 Snapper 快照
  5. 05LUKS2、Secure Boot 与 TPM2 加固
  6. 06性能选择与日常维护清单
  7. 07Pacman 常用命令与参数记忆
  8. 08Pacman 下载慢的诊断与镜像选择
  9. 09informant:Arch 新闻与 Pacman Hook
  10. 10Arch Linux 与 Btrfs:手动安装和 archinstall
  11. 11GNOME 桌面、输入法与快照配置
  12. 12GNOME 笔记本管理与桌面美化
  13. 13Arch Linux 的 KVM、GPU 直通与游戏
  14. 14Arch 桌面的交换空间、内核与排障
CONTINUE READING / 下一篇性能选择与日常维护清单

以测量选择内核、压缩交换和电源管理,并建立滚动更新后的检查流程。