如何跟踪进程文件访问 auditd审计系统配置指南

auditd可通过添加规则追踪进程文件访问,具体步骤为:1.使用auditctl指定路径或pid设置监控规则;2.利用ausearch查询日志;3.编辑配置文件实现规则持久化。例如用auditctl -w /usr/bin/myapp -p war -k myapp_access监控文件访问,通过ausearch -k myapp_Access筛选日志,将规则写入/etc/audit/rules.d/目录下的文件确保重启生效,并需注意权限、性能、日志轮转及安全模块干扰等问题。

如何跟踪进程文件访问 auditd审计系统配置指南

如果你在 linux 系统中需要追踪某个进程访问了哪些文件,auditd 是一个非常实用的工具。它不像简单的 strace 那样只能临时追踪,而是可以长期记录、审计系统调用和文件访问行为。下面是一些实际配置方法和建议,帮助你快速上手 auditd 来监控特定进程的文件访问。

如何跟踪进程文件访问 auditd审计系统配置指南


如何添加针对某个进程的审计规则

首先你需要知道要监控的进程 PID 或者程序路径。假设你想跟踪 /usr/bin/myapp 这个程序访问的所有文件,你可以使用 auditctl 添加如下规则:

如何跟踪进程文件访问 auditd审计系统配置指南

auditctl -w /usr/bin/myapp -p war -k myapp_access
  • -w 指定要监控的路径;
  • -p war 表示监听写入(w)、属性修改(a)、执行(r)等操作;
  • -k 是一个可选标签,方便后面查询日志时过滤。

如果你已经知道目标进程的 PID,也可以通过系统调用来更精确地跟踪:

auditctl -F pid=<PID> -S openat -S open -k file_open_by_pid

这样就只会记录该进程调用 open() 或 openat() 的情况。

如何跟踪进程文件访问 auditd审计系统配置指南


怎么查看审计日志并过滤关键信息

auditd 的日志默认保存在 /var/log/audit/audit.log 中。由于日志量可能很大,建议使用 ausearch 工具来筛选:

ausearch -k myapp_access

或者根据 PID 查询:

ausearch -p <PID>

输出的日志中会包含访问的文件名、调用的系统调用号、成功与否的状态等信息。例如你会看到类似下面的内容:

type=SYSCALL msg=audit(1234567890.123:456): arch=c000003e syscall=2 success=yes exit=3 ... type=PATH msg=audit(...): name="/etc/passwd" ...

其中 name= 后面就是被访问的文件路径。


审计规则持久化保存的方法

上面提到的 auditctl 命令是临时生效的,重启后会失效。如果希望规则持久保留,需要编辑 /etc/audit/audit.rules 文件或在 /etc/audit/rules.d/ 目录下新建 .rules 文件。

例如创建 /etc/audit/rules.d/myapp.rules 内容如下:

-w /usr/bin/myapp -p war -k myapp_access

然后加载规则:

augenrules --load

这样即使系统重启后规则也会自动生效。


一些容易忽略但重要的细节

  • 权限问题:auditd 需要 root 权限才能添加规则和读取日志;
  • 性能影响:不要过度监控大范围路径(比如整个根目录),否则会影响系统性能;
  • 日志轮转:确保配置了 logrotate 或 auditd 自带的轮转机制,防止日志过大;
  • 系统调用兼容性:不同架构下的系统调用号可能不同,使用 ausyscall 可以查看当前系统的调用名对应编号;
  • SELinux/AppArmor干扰:某些安全模块可能会限制 auditd 的行为,注意排查相关策略。

基本上就这些,auditd 功能强大但配置不复杂,只要理解规则语法和日志结构,就能轻松实现对进程文件访问的追踪。

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享