固件与物理安全#
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_PARTITIONPCR 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[运行期访问控制与沙盒]参考与延伸
- ArchWiki:Trusted Platform Module ↗
- ArchWiki:Unified Extensible Firmware Interface/Secure Boot ↗
- ArchWiki:Dm-crypt ↗
- ArchWiki:AppArmor ↗
- ArchWiki:Security ↗
根据技术笔记重新整理,示例使用通用名称。
沿专题继续阅读
Arch Linux
- 01Arch Linux 的哲学与安装规划
- 02内核管理、systemd-boot 与 UKI
- 03Pacman Hook、AUR 与构建安全
- 04Btrfs 子卷布局与 Snapper 快照
- 05LUKS2、Secure Boot 与 TPM2 加固
- 06性能选择与日常维护清单
- 07Pacman 常用命令与参数记忆
- 08Pacman 下载慢的诊断与镜像选择
- 09informant:Arch 新闻与 Pacman Hook
- 10Arch Linux 与 Btrfs:手动安装和 archinstall
- 11GNOME 桌面、输入法与快照配置
- 12GNOME 笔记本管理与桌面美化
- 13Arch Linux 的 KVM、GPU 直通与游戏
- 14Arch 桌面的交换空间、内核与排障