前置知识: 网络安全

auditd 审计命令

3 min入门

Linux auditd 审计命令:审计规则编写(watch/syscall)、ausearch 与 aureport 检索、关键事件监控与 SIEM 对接

auditd 服务管理

基本写法:启动 auditd 服务 systemctl start auditd

# 启动 auditd 审计服务
sudo systemctl start auditd
sudo systemctl enable auditd

基本写法:查看服务状态 systemctl status auditd

# 查看 auditd 服务运行状态
sudo systemctl status auditd

基本写法:重启 auditd 服务 systemctl restart auditd

# 重启 auditd 服务
sudo systemctl restart auditd

基本写法:重载规则配置 systemctl reload auditd

# 重新加载 auditd 配置不中断服务
sudo systemctl reload auditd

基本写法:查看 auditd 版本 auditd -v

# 查看 auditd 版本信息
auditd -v

审计规则管理

基本写法:查看已加载规则 auditctl -l

# 查看当前已加载的所有审计规则
sudo auditctl -l

基本写法:添加文件监控规则 auditctl -w <文件> -p <权限> -k <键值>

# 监控 /etc/passwd 文件的读写与属性变更
sudo auditctl -w /etc/passwd -p rwa -k passwd_change

基本写法:监控目录 auditctl -w <目录> -p <权限> -k <键值>

# 监控 /etc 目录所有变化
sudo auditctl -w /etc/ -p wa -k etc_changes

基本写法:监控系统调用 auditctl -a always,exit -S <系统调用> -F <过滤条件> -k <键值>

# 监控 unlink 系统调用记录文件删除
sudo auditctl -a always,exit -S unlink -S unlinkat -F auid>=1000 -k file_delete

基本写法:删除规则 auditctl -d <规则>

# 删除指定审计规则
sudo auditctl -d -w /etc/passwd -p rwa -k passwd_change

基本写法:清空所有规则 auditctl -D

# 清空所有已加载审计规则
sudo auditctl -D

审计规则配置文件

基本写法:查看规则配置 cat /etc/audit/audit.rules

# 查看持久化审计规则配置
cat /etc/audit/audit.rules

基本写法:添加持久化规则 echo '<规则>' >> /etc/audit/audit.rules

# 添加永久审计规则
echo '-w /etc/passwd -p rwa -k passwd_change' | sudo tee -a /etc/audit/audit.rules

基本写法:重载规则文件 augenrules --load

# 从 rules.d 目录加载规则
sudo augenrules --load

基本写法:测试规则配置 augenrules --check

# 检查规则配置文件语法
sudo augenrules --check

基本写法:查看规则目录 ls /etc/audit/rules.d/

# 列出 rules.d 目录中的规则文件
ls -l /etc/audit/rules.d/

审计日志查询

基本写法:查看所有审计日志 cat /var/log/audit/audit.log

# 查看审计日志文件
sudo tail -n 100 /var/log/audit/audit.log

基本写法:按键值查询 ausearch -k <键值>

# 查询特定键值的审计事件
sudo ausearch -k passwd_change

基本写法:按时间查询 ausearch -ts <开始时间> -te <结束时间>

# 查询指定时间范围的审计事件
sudo ausearch -ts today
sudo ausearch -ts "2026-07-31 10:00:00" -te "2026-07-31 12:00:00"

基本写法:按用户查询 ausearch -ua <UID>

# 查询特定用户的活动
sudo ausearch -ua 1000

基本写法:按事件类型查询 ausearch -m <事件类型>

# 查询登录相关审计事件
sudo ausearch -m LOGIN

审计报告生成

基本写法:生成摘要报告 aureport

# 生成审计日志摘要报告
sudo aureport

基本写法:生成失败事件报告 aureport --failed

# 生成所有失败事件报告
sudo aureport --failed

基本写法:生成成功事件报告 aureport --success

# 生成所有成功事件报告
sudo aureport --success

基本写法:生成用户报告 aureport -u

# 生成按用户分类的报告
sudo aureport -u

基本写法:生成文件访问报告 aureport -f

# 生成文件访问报告
sudo aureport -f

基本写法:生成命令执行报告 aureport -x

# 生成执行命令报告
sudo aureport -x | head -20

审计日志分析

基本写法:统计登录失败次数 aureport --failed --summary -i

# 统计失败事件概要
sudo aureport --failed --summary -i

基本写法:查看登录失败用户 aureport -u --failed -i | awk '{print $4}' | sort | uniq -c

# 统计登录失败用户排行
sudo aureport -u --failed -i | awk '{print $4}' | sort | uniq -c | sort -rn | head

基本写法:查找可疑文件访问 ausearch -k <键值> | grep -i "denied\|error"

# 查找被拒绝的文件访问
sudo ausearch -k etc_changes | grep -i "denied\|error"

基本写法:统计系统调用频率 ausearch -m SYSCALL | grep -oE "syscall=[0-9]+" | sort | uniq -c | sort -rn

# 统计系统调用频率排行
sudo ausearch -m SYSCALL | grep -oE "syscall=[0-9]+" | sort | uniq -c | sort -rn | head

基本写法:监控特定进程 ausearch -sc <系统调用> | grep <进程名>

# 查找特定进程的系统调用
sudo ausearch -sc execve | grep "nginx"

高级审计规则

基本写法:监控特权命令执行 auditctl -a always,exit -F path=<命令路径> -F perm=x -k <键值>

# 监控 sudo 命令执行
sudo auditctl -a always,exit -F path=/usr/bin/sudo -F perm=x -k privilege

基本写法:监控用户切换 auditctl -w /bin/su -p x -k user_switch

# 监控 su 命令使用
sudo auditctl -w /bin/su -p x -k user_switch

基本写法:监控 SSH 登录 auditctl -w /var/log/lastlog -p wa -k ssh_login

# 监控 SSH 登录事件
sudo auditctl -w /var/log/lastlog -p wa -k ssh_login

基本写法:监控内核模块加载 auditctl -w /sbin/insmod -p x -k module_load

# 监控内核模块加载
sudo auditctl -w /sbin/insmod -p x -k module_load
sudo auditctl -w /sbin/modprobe -p x -k module_load

基本写法:监控权限变更 auditctl -a always,exit -S chmod -S chown -F auid>=1000 -k perms

# 监控文件权限变更
sudo auditctl -a always,exit -S chmod -S chown -S chmodat -F auid>=1000 -k perms

审计日志轮转

基本写法:查看日志轮转配置 cat /etc/audit/auditd.conf

# 查看 auditd 配置文件
cat /etc/audit/auditd.conf | grep -i "max\|rotate\|size"

基本写法:配置日志大小限制 num_logs = <数量>

# 保留 10 个日志文件
# num_logs = 10
# max_log_file = 50
# max_log_file_action = rotate

基本写法:手动轮转日志 kill -USR1 $(pidof auditd)

# 手动触发日志轮转
sudo kill -USR1 $(pidof auditd)

基本写法:压缩归档日志 gzip /var/log/audit/audit.log.1

# 压缩归档日志文件
sudo gzip /var/log/audit/audit.log.1

基本写法:清理旧日志 find /var/log/audit/ -name "audit.log.*" -mtime +30 -delete

# 删除 30 天前的归档日志
sudo find /var/log/audit/ -name "audit.log.*" -mtime +30 -delete

审计性能优化

基本写法:查看审计速率限制 auditctl -s | grep rate

# 查看审计日志速率限制
sudo auditctl -s

基本写法:设置速率限制 auditctl -r <每秒条数>

# 限制每秒最多记录 100 条
sudo auditctl -r 100

基本写法:设置缓冲区大小 auditctl -b <缓冲区大小>

# 设置审计缓冲区为 8192 条
sudo auditctl -b 8192

基本写法:设置积压阈值 auditctl -f <级别>

# 设置积压失败级别(2 为打印到控制台)
sudo auditctl -f 2

基本写法:查看审计状态 auditctl -s

# 查看 auditd 运行状态与参数
sudo auditctl -s

审计规则模板

基本写法:监控所有 sudo 操作 auditctl -w /var/log/sudo.log -p wa -k sudo_log

# 监控 sudo 日志文件变化
sudo auditctl -w /var/log/sudo.log -p wa -k sudo_log

基本写法:监控 cron 任务变更 auditctl -w /etc/crontab -p wa -k cron_change

# 监控计划任务变更
sudo auditctl -w /etc/crontab -p wa -k cron_change
sudo auditctl -w /etc/cron.d/ -p wa -k cron_change

基本写法:监控网络配置变更 auditctl -w /etc/network/ -p wa -k network_change

# 监控网络配置文件变更
sudo auditctl -w /etc/network/ -p wa -k network_change
sudo auditctl -w /etc/hosts -p wa -k network_change

基本写法:监控 SSH 配置变更 auditctl -w /etc/ssh/sshd_config -p wa -k ssh_config

# 监控 SSH 配置文件变更
sudo auditctl -w /etc/ssh/sshd_config -p wa -k ssh_config

基本写法:监控用户与组变更 auditctl -w /etc/passwd -p wa -k user_change

# 监控用户和组文件变更
sudo auditctl -w /etc/passwd -p wa -k user_change
sudo auditctl -w /etc/shadow -p wa -k user_change
sudo auditctl -w /etc/group -p wa -k user_change