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/目录下的文件确保重启生效,并需注意权限、性能、日志轮转及安全模块干扰等问题。
如果你在 Linux 系统中需要追踪某个进程访问了哪些文件,auditd 是一个非常实用的工具。它不像简单的 strace 那样只能临时追踪,而是可以长期记录、审计系统调用和文件访问行为。下面是一些实际配置方法和建议,帮助你快速上手 auditd 来监控特定进程的文件访问。
首先你需要知道要监控的进程 PID 或者程序路径。假设你想跟踪 /usr/bin/myapp 这个程序访问的所有文件,你可以使用 auditctl 添加如下规则:
auditctl -w /usr/bin/myapp -p war -k myapp_access
如果你已经知道目标进程的 PID,也可以通过系统调用来更精确地跟踪:
auditctl -F pid=<PID> -S openat -S open -k file_open_by_pid
这样就只会记录该进程调用 open() 或 openat() 的情况。
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 功能强大但配置不复杂,只要理解规则语法和日志结构,就能轻松实现对进程文件访问的追踪。
以上就是如何跟踪进程文件访问 auditd审计系统配置指南的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号