当前位置: 首页 > news >正文

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”:从启动到运行,只允许系统执行“预先认可”的代码和数据,其余一律拒之门外。
http://www.sczhlp.com/news/1671/

相关文章:

  • RoD-TAL:罗马尼亚驾照考试问答基准
  • @NotBlank、@NotEmpty、@NotNull
  • pid查询树形结构
  • 图像生成-连续性方程-09 - jack
  • 2.7 rt-thread meunconfig运行原理分析
  • Fats移植系列1
  • charles破解
  • MySQL面试题及详细答案 155道(001-020) - 指南
  • C语言基础-随机数
  • 教育 AI 大事件!OpenAI 深夜甩出 ChatGPT Study,免费当你 24 小时私人家教
  • C语言基础-循环语句(循环结构)
  • 题解:AT_agc066_c [AGC066C] Delete AAB or BAA
  • CF2120D Matrix game 题解
  • DP - 数据结构优化
  • P1163 银行贷款-二分
  • PyTorch基础
  • Gitee Wiki重塑关键领域软件开发的知识管理范式
  • [原创]《C#高级GDI+实战:从零开发一个流程图》第08章:增加菱形、平行四边形、圆角矩形,文本居中显示
  • 题解:CF1458C Latin Square
  • 探究 AI 智能体:扣子空间的使用门槛与未来进化方向
  • CF1731D 题解
  • G. Unusual Entertainment 题解
  • 贪心
  • centos+stress-ng+cgroup完整压力测试方案
  • 2.6 rt-thread实操 SConstruct解析
  • mac配置hdc+adb环境
  • C# Avalonia 07 - LoadFromCommandLine
  • 【译】当JavaScript擅自决定我的一天从早上9点开始
  • IPD项目管理软件对比市面上10款主流工具,哪个最值得入手?
  • C++小白修仙记_LeetCode刷题_1768交替合并字符串