IMA-Audit

IMA-Audit includes file hashes in the system audit log, which can be used to augment existing system security analytics and/or forensics. IMA-Audit extends the IMA policy ABI with the Policy Syntax Action keyword audit.

There are no built-in policies containing audit rules.

Example policy to audit executable files and files open by user 10:

audit func=BPRM_CHECK mask=MAY_EXEC
audit func=FILE_CHECK mask=MAY_READ fowner=10

The system audit log is in the /var/log/audit directory. The entry will have type=INTEGRITY_RULE and the entry includes:

  • file name

  • hash algorithm and hash

  • ppid, pid,

  • auid, uid, gid, euid, suid, fsuid, egid, sgid, fsgid

  • the command that triggered the rule

A typical audit log entry is (with newlines added for readability):

type=INTEGRITY_RULE msg=audit(1724272003.040:450): file="/home/kgold/.emacs"
hash="sha256:654897e5d6ff41bffac650f7f545975757380ae0bf1bb5459c0dc054cb342084"
ppid=13236 pid=13396
auid=1000 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000
tty=pts2 ses=2 comm="more" exe="/usr/bin/more"
subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023AUID="kgold" UID="kgold"
GID="kgold" EUID="kgold" SUID="kgold" FSUID="kgold" EGID="kgold" SGID="kgold" FSGID="kgold"

 

 

IMA-Audit 是 Linux Integrity Measurement Architecture(IMA)的第三大子功能(另外两个是 Measurement 与 Appraisal),专门负责把文件完整性事件写进系统审计日志,供事后追溯与集中分析。下面从原理、策略、部署、日志格式到典型场景逐层展开。
一、原理一句话
“在文件被 open/exec/mmap 时,IMA 把文件名、哈希、UID、进程等关键信息写进 /var/log/audit/audit.log,实现事后审计和取证。”
二、触发时机与策略
  1. 触发点
    execve()mmap()open() 等系统调用路径。
  2. 策略语法
    IMA 策略新增关键字 audit,与 measure/appraise 并列,可组合使用。
    示例:
    Copy
    # 审计所有可执行文件加载
    audit func=BPRM_CHECK mask=MAY_EXEC
    
    # 审计 root 用户打开的所有文件
    audit func=FILE_CHECK mask=MAY_READ fowner=0
     
    策略通过 /sys/kernel/security/ima/policy 或启动参数 ima_policy= 加载
  3. 与 Measurement/Appraisal 的关系
    • Measurement:只记录哈希,不阻断;Appraisal:发现篡改即拒绝;Audit:无论成功/失败,都把事件写日志,形成完整证据链。
三、部署三步曲
  1. 内核打开相关配置
    CONFIG_IMA_AUDIT=y
    CONFIG_AUDIT=y
     
  2. 启动参数加入审计策略
    ima_policy="audit func=BPRM_CHECK mask=MAY_EXEC"
     
    或在运行期
    echo 'audit func=FILE_CHECK mask=MAY_READ fowner=0' > /sys/kernel/security/ima/policy
     
  3. 确认审计日志
    tail -f /var/log/audit/audit.log | grep INTEGRITY_RULE
     
四、日志格式解读
一条典型 IMA-Audit 记录
type=INTEGRITY_RULE msg=audit(1724272003.040:450):
file="/home/kgold/.emacs"
hash="sha256:654897e5d6ff41bffac650f7f545975757380ae0bf1bb5459c0dc054cb342084"
ppid=13236 pid=13396 auid=1000 uid=1000 gid=1000 ... comm="more" exe="/usr/bin/more"
 
字段速查
file:被访问文件路径
hash:本次计算的摘要
auid/uid/gid:登录用户/进程实际用户/组
comm/exe:触发命令及二进制路径
type=INTEGRITY_RULE:固定标识,便于 SIEM 集中收集。
五、使用场景与价值
  1. 合规审计:等保、PCI-DSS 要求对关键可执行文件进行完整性审计。
  2. 事后取证:出现入侵时,通过 audit 日志迅速定位被篡改文件及时间点。
  3. 与 SIEM 集成:借助 ausearch -m INTEGRITY_RULE 或 fluent-bit/ELK 做集中关联分析。
  4. 远程证明补充:IMA-Measurement 把度量结果写 TPM PCR,IMA-Audit 把同样信息写文本日志,二者互为备份。
六、常见问题速答
Q1:与 SELinux 审计冲突吗?
A:不会,两者事件类型不同,SELinux 记 MAC 决策,IMA-Audit 记完整性事件。
Q2:如何只审计失败事件?
A:目前 IMA-Audit 记录所有命中策略的事件;可后续用 ausearch -i -m INTEGRITY_RULE -sv no 过滤失败。
Q3:需要 TPM 吗?
A:不需要,IMA-Audit 是纯软件功能,但若同时做远程证明,TPM 可增强度量日志可信度。
七、一句话总结
IMA-Audit = “让每一次文件完整性相关的系统调用都留下一条不可抵赖的审计痕迹”,为系统运维、合规、应急响应提供最底层的证据链。

 

posted @ 2025-07-30 14:16  云long  阅读(24)  评论(0)    收藏  举报