IMA学习纪实 - luckdawn/trusted-computing-note GitHub Wiki
内核完整性子系统的目标是检测文件是否被远程和本地意外或恶意更改,根据存储为扩展属性的“良好”值评估文件的度量,并强制执行本地文件完整性。 这些目标是对 LSM 模块(例如 SElinux 和 Smack)提供的强制访问控制 (MAC) 保护的补充,它们可以根据策略尝试保护文件完整性。
IMA-measurement是内核完整性子系统的一个组件,是基于可信计算组开放标准的整体完整性架构的一部分,包括可信平台模块 (TPM)、可信启动、可信软件堆栈 (TSS)、可信网络连接 (TNC) 和平台信任服务 (PTS)。 linux-ima 项目页面包含一个图表,显示这些标准之间的关系,并提供指向相应规范和开源实现的链接。 IMA-measurement和 EVM 仍然可以在没有硬件 TPM 的平台上运行,尽管没有妥协检测的硬件保证。
IMA-appraisal是内核完整性子系统的第二个组件,扩展了“安全启动”概念,即在转移控制权或允许操作系统访问文件之前验证文件的完整性。
IMA-audit 是内核完整性子系统的另一个组件,在系统审计日志中包含文件哈希,可用于增强现有系统安全分析/取证。
内核完整性子系统的 IMA 测量、IMA 评估和 IMA 审计方面相互补充,但可以相互独立地配置和使用。
measure func=KEXEC_KERNEL_CHECK
appraise func=KEXEC_KERNEL_CHECK
appraise_type=imasig
audit func=KEXEC_KERNEL_CHECK
● 计算一次文件哈希
● 将哈希添加到测量列表
● 验证内核映像签名*
● 添加审计记录
修改/替换Policy方法:
修改policy 重定向到文件policy(文件路径:/sys/kernel/security/ima 下)
(法1)
echo ... >policy(适用于一条policy)
(法2)
cat >policy
policy: action [options](适用于多条policy,编辑完成后CTRL+D退出)
IMA-measurement 是一个开源的可信计算组件。 IMA 维护一个运行时测量列表,如果锚定在硬件可信平台模块 (TPM) 中,则该列表上的聚合完整性值。 在 TPM 中锚定聚合完整性值的好处是,任何软件攻击都无法破坏测量列表,而不会被检测到。 因此,在受信任的引导系统上,IMA 测量可用于证明系统的运行时完整性。
IMA 首先包含在 2.6.30 内核中。 对于在其内核中默认启用 IMA 的发行版,收集 IMA 测量值只需要在引导命令行上使用内置的“ima_policy=”重新启动内核。 (Fedora/RHEL 可能还需要引导命令行参数“ima=on”。)
要确定您的发行版是否默认启用 IMA,请挂载 securityfs (mount -t securityfs security /sys/kernel/security),如果尚未挂载,然后检查“/integrity/ima”是否存在。 如果存在,则 IMA 确实已启用。 在未启用 IMA 的系统上,重新编译内核并启用配置选项“CONFIG_IMA”。
IMA 由几个内核命令行参数控制:
ima_audit= 信息审计日志 格式:{“0”| “1”} 0 ——正常的完整性审计消息。 (默认) 1 ——启用附加的信息完整性审计消息。
(例如。虽然文件测量只被添加到测量列表一次并被缓存,如果 inode 被刷新,随后对 inode 的访问将导致重新测量文件并尝试再次将测量添加到测量列表中。启用 ima_audit将记录此类尝试。)
ima_policy= 内置策略 格式:{"tcb" | "appraise_tcb" | “secure-boot”} 新的 Linux-4.13 默认值:无策略
ima_template= 使用的模板 格式:{ "ima" | "ima-ng" | “ima-sig”} Linux 3.13 默认值:“ima-ng”
ima_hash= 使用的哈希 格式:{ "sha1" | "md5" | "sha256" | "sha512" | "wp512" | ... } 'ima' 模板默认值:“sha1” Linux 3.13 默认值:“sha256”
ima_tcb(已弃用) 如果指定,则启用满足可信计算库需求的 TCB 策略。这意味着 IMA 将测量所有 exec 的程序、exec 的文件 mmap 以及所有 uid=0 为读取而打开的文件。
IMA-measurements 维护了一个运行时测量列表
将 securityfs 挂载为 /sys/kernel/security
$ su -c 'mkdir /sys/kernel/security' $ su -c 'mount -t securityfs securityfs /sys/kernel/security'
修改 /etc/fstab 以在启动时挂载 securityfs。
IMA 测量列表可以通过 IMA securityfs 文件读取,通常安装在: /sys/kernel/security/ima/ascii_runtime_measurements,以及测量列表 条目看起来像: