
Linux系统中,用户操作审计是一个重要的安全需求,尤其是在服务器环境里。如果你想知道某个用户在系统上执行了哪些命令、访问了哪些文件,或者系统资源被如何使用,auditd就是你该用的工具。

什么是auditd?
auditd 是 Linux 审核子系统的核心组件,它能记录系统调用、文件访问、用户行为等事件。不像 syslog 那样只是记录服务日志,auditd 的重点是安全相关的事件追踪,适合用于合规性检查和事后调查。

它的优势在于:
- 可以跟踪特定用户或程序的行为
- 日志结构清晰,便于分析
- 支持规则配置,灵活控制监控范围
安装 auditd 很简单,在大多数发行版上只需要运行:

sudo apt install auditd # Debian/Ubuntu sudo yum install audit # CentOS/RHEL
安装完成后,auditd 会自动启动并开始记录默认的一些事件。
如何启用用户操作审计?
要让 auditd 监控用户操作,需要配置审核规则。这里有几个常用场景:
监控指定用户的命令执行
你可以为某个用户添加规则,比如监控用户 john 执行的所有命令:
sudo auditctl -w /bin/ -p war -k user_john_bin sudo auditctl -w /usr/bin/ -p war -k user_john_usrbin
这样可以监控这个用户对常用命令目录的访问情况。
记录所有用户的终端命令(带参数)
如果想记录每个用户执行的具体命令及其参数,可以通过如下方式设置:
sudo auditctl -a exit,always -F arch=b64 -S execve sudo auditctl -a exit,always -F arch=b32 -S execve
这条规则会让 auditd 捕获每次执行的命令,并记录到日志中。查看这些日志可以用 ausearch 命令:
sudo ausearch -sc EXECVE
这样就能看到所有通过 execve 系统调用执行的命令,包括参数。
怎么看auditd的日志?
auditd 默认的日志位置通常是 /var/log/audit/audit.log。直接打开这个文件你会觉得内容很乱,建议使用 ausearch 和 aureport 工具来解析。
使用 ausearch 查找特定事件
比如查找某个时间段内的登录失败记录:
sudo ausearch -m USER_LOGIN -ts today
或者查找某个用户的操作:
sudo ausearch -u john
使用 aureport 生成报告
如果你想看看最近一天都有哪些系统调用发生过,可以用:
sudo aureport --syscall -ts yesterday
这会生成一个汇总报告,方便快速浏览。
几个实用建议
- 日志保存时间:auditd 默认不会轮转日志太久,建议配合 logrotate 设置保留策略。
- 远程日志中心:对于关键系统,最好将日志发送到远程服务器,防止本地篡改。
- 避免过度监控:虽然可以监控一切,但开启太多规则会影响性能,建议只关注关键路径。
- 结合其他工具:如 fail2ban、syslog 分析器等,构建完整的安全监控体系。
基本上就这些。auditd 功能强大但配置略复杂,刚开始用的时候可能得反复试几遍才能找到最合适的规则。不过一旦配置好,它就是你排查问题和保障安全的好帮手。










