IMA-Appraisal 简单介绍

IMA-Appraisal(IMA 评估模式)是 Linux 内核 Integrity Measurement Architecture(IMA)子系统的核心能力之一,用于在系统运行时对文件进行主动完整性验证,防止被篡改的文件被访问或执行。以下从“原理→机制→部署→运行→优化”五个维度进行详解。

一、原理:一句话理解 IMA-Appraisal

“提前把文件应有的样子(哈希或签名)存起来,系统每次真正用到文件时,再算一遍比对,若不一致就拒绝访问。”
  • 触发点:open()execve()mmap(PROT_EXEC)、加载 kernel module/firmware 等系统调用 。
  • 基准值位置:文件的扩展属性 security.ima,或内核维护的“摘要列表白名单池”
  • 校验失败动作:
    • enforce 模式 → 返回 -EACCES,进程拿不到 fd;
    • log 模式 → 仅记录审计日志,仍可访问;
    • fix 模式 → 直接把“当前文件”的哈希/签名写回基准值(用于初始化或修复)

二、机制总览:三条技术路线

路线基准值校验方式适用场景工具/命令示例
原生哈希 security.ima = sha256 值 直接比对哈希 可变文件、数据文件 evmctl ima_hash
原生签名 security.ima = PKCS#7 签名 公钥验签 → 得哈希 → 比对 关键可执行文件、库 evmctl ima_sign --key xxx.key
摘要列表 内核白名单池(哈希表) 查表即可 发行版批量部署、性能要求高 openEuler gen_digest_lists + echo /path/list > /sys/kernel/security/ima/digest_list_data

三、部署流程(以“原生签名”为例)

  1. 启动进入 fix 模式
    ima_appraise=fix ima_policy=appraise_tcb
     
  2. 为文件打签名
    find /usr/bin -fstype ext4 -type f -executable -uid 0 \
         -exec evmctl ima_sign --key /path/ima.key -a sha256 '{}' \;
     
  3. 重启切 enforce
    ima_appraise=enforce ima_policy=appraise_tcb
     
  4. 验证
    getfattr -n security.ima /sbin/init
     
    能看到 security.ima0x03 0x00 0x00 0x00 0x30... 的签名串

四、运行期关键接口与调试

接口用途
/sys/kernel/security/ima/policy 动态加载评估策略
/sys/kernel/security/ima/digest_list_data 导入摘要列表
/sys/kernel/security/ima/digests_count 查看已导入哈希条目数
/sys/kernel/security/ima/ascii_runtime_measurements 实时度量日志
audit.log 完整性失败事件:type=INTEGRITY_DATA cause=invalid-signature

五、性能与易用性优化:IMA 摘要列表机制(openEuler 24.03+)

  • 一次性导入:RPM 安装时把 所有文件哈希 打包成二进制摘要列表,随包分发,避免逐个打签名
  • 查表 O(1):内核维护哈希表,查找耗时极短,TPM 扩展频率从 N 次降到 1 次。
  • 无策略启动:
    ima_appraise=enforce ima_appraise_digest_list=digest-nometadata
     
    系统启动即生效,无需再手动 fix

六、证书信任链(签名路线必做)


证书类型存放位置用途
根证书 内核编译时 CONFIG_SYSTEM_TRUSTED_KEYS="./root.crt" 验证子证书
子证书 initrd 里的 /etc/keys/x509_ima.der 验证文件签名
查看命令 keyctl show %:.builtin_trusted_keys / keyctl show %:ima 调试 

七、一句话总结

IMA-Appraisal 就是“文件级别的 Secure Boot”:从启动到运行,只允许系统执行“预先认可”的代码和数据,其余一律拒之门外。
posted @ 2025-07-30 14:05  云long  阅读(57)  评论(0)    收藏  举报