一、简介
auditd(Linux Audit Daemon)是 Linux 内核审计框架的用户态守护进程,用于监控系统安全相关事件(如文件访问、进程执行、权限变更、系统调用等),并生成标准化审计日志,适用于安全审计、合规检查、故障排查(尤其是权限 / 访问类问题)。
二、auditd核心组件
2.1 auditd 守护进程
负责收集 和存储审计事件。
2.2 auditctl 工具
用于配置审计规则,控制审计系统的命令工具。
2.3 ausearch 工具
用于查询审计日志的命令工具
2.4 aureport 工具
用于生成审计日志的汇总报告。
三、auditd核心配置文件
修改参数后需要重启服务:sudo systemctl restart auditd
/etc/audit/auditd.conf 部分参数介绍:
# 基础日志配置
log_file = /var/log/audit/audit.log # 主日志路径
log_format = RAW # 原始格式
log_group = root # 日志所属组
# 日志轮转配置
max_log_file = 100 # 单文件最大 100MB
max_log_file_action = rotate # 达到阈值后轮转
num_logs = 5 # 保留 5 个轮转日志
# 磁盘空间告警
space_left = 500 # 剩余 500MB 触发告警
space_left_action = SYSLOG # 记录系统日志
admin_space_left = 100 # 剩余 100MB 触发紧急操作
admin_space_left_action = SUSPEND # 暂停接收和记录内核审计事件
disk_full_action = SUSPEND # 暂停接收和记录内核审计事件
disk_error_action = SUSPEND # 暂停接收和记录内核审计事件
# 邮件配置
action_mail_acct = audit-alert@company.com # 告警邮箱
# 性能配置
flush = incremental # 增量刷盘
freq = 20 # 每 20 条事件刷盘
priority_boost = 4 # 进程优先级
disp_qos = lossy # 队列满时丢弃事件(性能优先)
# 高级配置
name_format = fqd # 记录 FQDN 主机名
tcp_listen_port = 0 # 禁用 TCP 监听
enable_krb5 = no # 禁用 Kerberos
四、auditctl 命令介绍
4.1 基本语法
auditctl [选项] [规则]
4.2 常用选项
| 选项 | 说明 |
|---|---|
| -l | 列出当前所有审计规则 |
| -s | 查看审计系统核心状态 |
| -D | 清除所有审计规则(永久规则重启后会重新加载) |
| -R <file> | 从指定文件加载规则 |
| -v | 查看auditctl版本 |
| -w <path> | 监控指定文件/目录 |
| -p <key> | 配合-w,指定监控的操作权限(rwx) |
| -k <key> | 为规则打标签,便于后续使用ausearch -k <key>搜索日志 |
| -a <list, action> | 动作和列表 |
| -F | 过滤条件,缩小监控范围 |
| -S <syscall> | 配合-a/-A,指定要监控的系统调用(支持多个/通配符) |
示例:
# 监控 /a/b/c/d文件的读写和属性更改,并添加日志标签file_action
auditctl -w /a/b/c/d -p rwxa -k file_action
# 监控/home/user/dir/目录下文件删除操作,并添加日志标签delete_action
auditctl -a always,exit -F arch=b64 -S rmdir,unlink,unlinkat -F dir=/home/user/dir/ -F key=delete_action
**注意:**使用auditctl创建的规则属于临时规则,重启后规则丢失,若希望创建永久规则,需将规则写入/etc/audit/rules.d/audit.rules
五、审计分析
5.1 ausearch 命令
基本语法: ausearch [options]
常用选项:
| 选项 | 含义 |
|---|---|
| -k <key> | 按规则标签检索日志 |
| -c <com> | 按进程名检索日志 |
| -ua <uid> | 按用户id进行检索 |
| -p <pid> | 按进程id进行检索 |
| -m <message type> | 按事件类似进行检索 |
| -f <file name> | 按文件名进行检索 |
| -ts <start date>/<start time> | 按开始时间进行检索 |
| -te <end date>/<end time> | 按结束时间进行检索 |
5.2 aureport 命令
**基本语法:**aureport [options]
常用选项:
| 选项 | 含义 |
|---|---|
| -l | 生成用户登录报告 |
| -f | 生成文件访问报告 |
| -k | 生成指定关键字报告 |
| -e | 生成事件报告 |