auditd是Linux系统级审计工具,用于监控用户操作、文件访问和系统调用。通过安装auditd并配置规则,可记录特定用户行为、敏感文件访问及命令执行,如监控/etc/shadow访问、sudo执行和bash启动。审计日志存于/var/log/audit/audit.log,可用ausearch和aureport查询和生成报告。为确保规则持久化,需将规则写入/etc/audit/rules.d/audit.rules并重启服务。合理配置可平衡安全审计与系统性能。

Linux中的auditd服务是系统级审计工具,能记录用户行为、文件访问、系统调用等关键操作,适合用于安全审计和故障排查。通过合理配置auditd,可以有效监控用户执行的命令、访问的敏感文件以及系统资源的使用情况。
安装并启动auditd服务
大多数Linux发行版默认未安装auditd,需手动安装并启用服务。
在基于RPM的系统(如CentOS、RHEL)中:
yum install audit audit-libs -y
systemctl enable auditd
systemctl start auditd
在Debian/Ubuntu系统中:
apt-get install auditd audispd-plugins -y
systemctl enable auditd
systemctl start auditd
安装后,auditd会自动加载基础规则并开始记录事件。
配置审计规则监控用户操作
auditd通过预定义规则来捕获特定事件。常用规则包括监控系统调用、文件访问和用户命令执行。
以下是一些实用的审计规则示例:
- 监控特定用户的系统调用:例如监控用户ID为1001的所有execve调用(执行命令)
auditctl -a always,exit -F arch=b64 -S execve -F euid=1001
- 监控敏感文件或目录的访问:如/etc/passwd、/etc/shadow
auditctl -w /etc/passwd -p rwxa -k passwd_access
auditctl -w /etc/shadow -p rwxa -k shadow_access
其中 -p 指定监控的权限类型(读、写、执行、属性变更),-k 是用户定义的关键词,便于后续搜索。
- 监控sudo命令的执行
auditctl -a always,exit -F path=/usr/bin/sudo -F perm=x -k sudo_exec
- 记录所有用户的命令执行(需结合auditd与bash日志):auditd本身不直接记录shell命令内容,但可通过监控bash二进制文件间接实现
auditctl -a always,exit -F path=/usr/bin/bash -F perm=x -k run_bash
注意:该方法仅记录bash启动,不包含具体输入的命令。若需完整命令记录,建议结合bash的history审计或使用其他工具如syslog+ PROMPT_COMMAND。
查看和分析审计日志
审计日志默认保存在 /var/log/audit/audit.log,使用ausearch和aureport工具进行查询。
- 按关键词搜索日志:如查找所有标记为sudo_exec的事件
ausearch -k sudo_exec
- 查看特定用户的操作:例如查询UID为1001的所有事件
- 生成审计报告:使用aureport统计系统调用、文件访问等
ausearch -ua 1001
aureport --file # 文件访问报告
aureport --syscall --summary # 系统调用汇总
aureport -u # 用户活动报告
持久化审计规则
使用auditctl添加的规则在重启后会丢失,需写入配置文件实现持久化。
编辑规则文件:
vim /etc/audit/rules.d/audit.rules
添加规则示例:
-a always,exit -F arch=b64 -S execve -F euid=1001 -k user_cmd_1001
-w /etc/shadow -p rwxa -k shadow_access
-w /usr/bin/sudo -p x -k sudo_exec
保存后重启auditd服务:
systemctl restart auditd
或使用:
augenrules --load
基本上就这些。auditd功能强大,但需注意日志量可能较大,建议定期归档和监控磁盘使用。合理配置规则,既能满足审计需求,又避免性能开销过高。










