针对 Linux Audit 系统(auditd),常用设置主要集中在配置文件调优、规则策略制定、日志管理以及最佳实践四个方面。
以下是 Audit 最常用的设置和技巧:
主配置文件位于 /etc/audit/auditd.conf。
默认配置通常能满足基本需求,但在生产环境中,建议调整以下参数以防日志丢失或占用过多磁盘空间。
vim /etc/audit/auditd.conf
常用参数设置:
log_file = /var/log/audit/audit.log
max_log_file = 8 (或更大,如 100)
单个日志文件的最大容量(单位:MB)。当达到这个大小时,Auditd 会自动轮转日志。
max_log_file_action = ROTATE
ROTATE:轮转(保留旧日志,创建新文件,数量由 num_logs 决定)。推荐。
KEEP_LOGS:不覆盖,不断增加日志文件。IGNORE:不记录,继续写到当前文件(可能导致日志损坏)。num_logs = 5
保留的轮转日志文件数量。
例如设置为 5,加上当前正在使用的 1 个,总共最多占用 6 倍 max_log_file 的空间。
space_left = 20% (或具体数值如 75M)
space_left_action = SYSLOG (或 email)
SYSLOG 会向系统日志发送警告;如果安装了邮件服务,可以设置为 email 并配置 action_mail_acct。admin_space_left = 10%
admin_space_left_action = SUSPEND (或 HALT/SINGLE)
SUSPEND:暂停记录日志(默认),防止系统崩溃。HALT:直接关机(适用于极高安全要求的系统,防止日志被覆盖)。SINGLE:切换到单用户模式。flush = INCREMENTAL
INCREMENTAL 配合 freq 参数可以平衡性能和数据安全。DATA 或 SYNC 更安全但更耗性能。规则通常写在 /etc/audit/rules.d/audit.rules 中。
以下是根据安全合规性(如 CIS Benchmark)整理的常用规则集合。
监控关键系统文件是否被篡改(如密码文件、SSH配置、Web目录)。
# 监控 /etc/passwd 和 /etc/shadow (写和属性变更)-w /etc/passwd -p wa -k identity-w /etc/shadow -p wa -k identity# 监控 SSH 配置-w /etc/ssh/sshd_config -p wa -k sshd_config# 监控 sudoers 文件-w /etc/sudoers -p wa -k sudoers-w /etc/sudoers.d/ -p wa -k sudoers# 监控 Web 目录 (可选)-w /var/www/html -p wa -k web_data
监控特定权限的提升或变更操作。
# 监控时间修改 (防止有人回溯系统时间)-a always,exit -F arch=b64 -S adjtimex -S settimeofday -S stime -S clock_settime -k time_change# 监控用户/组相关操作 (useradd, groupadd 等)-a always,exit -F arch=b64 -S creat -S open -S openat -S truncate -S ftruncate -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access-a always,exit -F arch=b64 -S unlink -S unlinkat -S rename -S renameat -F auid>=1000 -F auid!=4294967295 -k delete# 监控权限变更 (chmod, chown)-a always,exit -F arch=b64 -S chmod -S fchmod -S chown -S fchown -S lchown -S setxattr -S lsetxattr -S fsetxattr -S chmodat -S fchmodat -k perm_mod# 监控特权管理 (sudo)-a always,exit -F arch=b64 -S execve -C uid!=euid -F euid=0 -k exec_priv-a always,exit -F arch=b64 -S execve -C gid!=egid -F egid=0 -k exec_priv
防止未登录用户(UID < 1000 或 4294967295)的噪音,只关注普通用户操作。
*注意:auditctl 的规则中,-F auid!=4294967295 是用来排除 unset (未设置) 的 auid,这是过滤系统进程的关键。*
有时候系统会产生大量无用的审计日志(例如某个特定的高频程序),可以使用 -a never,exit 来忽略。
# 忽略特定系统调用的日志记录 (例如忽略特定用户的进程)# 语法:-a <action>,<filter> -S <syscall> -F <field=value>-a never,exit -S all -F pid=<特定PID>
注意:在 /etc/audit/rules.d/ 中配置忽略规则时,通常将忽略规则放在最前面。
有了设置和规则,最重要的就是如何查看数据。
1. 实时查看审计日志
tail -f /var/log/audit/audit.log

2. 使用 ausearch 精准查询
ausearch -m USER_LOGIN -ts today -sv no
/etc/passwd 的所有变更:ausearch -f /etc/passwd -i
-i 参数很重要,它会把数字翻译成可读的文本。

ausearch -k sshd_config -i
3. 生成汇总报告 (aureport)
# 查看今天的总体摘要aureport -ts today -i# 查看最近谁登录成功过aureport -l -ts today -i# 查看文件修改记录aureport -f -ts today

-k) 标记:每一条规则都尽量加上 -k 标签,否则在海量日志中你找不到头绪。max_log_file_action。auditctl 命令,一定要修改 /etc/audit/rules.d/audit.rules 并执行 augenrules --load。# 监控 auditd 自身的控制命令 -w /sbin/auditctl -p x -k audit_tools -w /sbin/auditd -p x -k audit_tools
在 Linux 中,auditctl 命令用于控制审计系统。添加规则主要有两种方式:临时添加(立即生效,重启失效)和永久添加(写入配置文件,重启生效)。
基本语法:auditctl -a <action,list> <filter> -S <syscall> -F <field=value> -k <key_name>
-a: 添加规则。-S: 系统调用名称(如 open, write, chmod)。-F: 过滤条件(如路径、用户ID等)。-k: 给规则打一个唯一的标签(方便后续查找)。常用场景示例:
/etc/passwd):# -w 指定路径,-p 指定权限,-k 指定关键字 auditctl -w /etc/passwd -p wa -k passwd_changes
解释:监控 /etc/passwd 文件的写入 和属性变更 操作,并标记为 passwd_changes。
/var/www/html):auditctl -w /var/www/html -p rwa -k web_access
解释:监控该目录的读、写和属性变更。
auditctl -a always,exit -F arch=b64 -S unlink -S unlinkat -k delete_file
解释:监控 64 位系统的 unlink 和 unlinkat 系统调用。
auditctl -a always,exit -F arch=b64 -S unlink -F uid=1000
为了让规则在重启后依然生效,需要将规则写入 /etc/audit/rules.d/ 目录下的文件中(通常以 .rules 结尾)。
vim /etc/audit/rules.d/audit.rules
auditctl 的命令(去掉 auditctl)写入文件。例如:-w /etc/passwd -p wa -k passwd_changes -w /var/www/html -p rwa -k web_access
systemctl restart auditd
auditctl -D
如果你在添加规则时使用了 -k 参数,可以通过它删除:
auditctl -W <path> -k <key_name> # 例如: auditctl -W /etc/passwd -k passwd_changes
vim /etc/audit/rules.d/audit.rules
删除文件中对应的行。
重启服务或重新加载规则:
# 强制重新加载规则(不重启服务) augenrules --load # 或者重启 systemctl restart auditd
可以使用以下命令查看内核中当前加载的审计规则:
auditctl -l# 或者以更详细的格式显示auditctl -l -v
查看 Auditd 服务是否正在运行以及一些基本统计:
auditctl -s
添加规则是为了记录日志,查看日志通常使用 ausearch 或 aureport。
# 搜索标记为 'passwd_changes' 的日志 ausearch -k passwd_changes
ausearch -ts recent | aureport -i
或者直接看原始日志:
ausearch -ts recent
ausearch -f /etc/passwd
| 操作 | 命令 | 说明 |
|---|---|---|
| 添加(临时) | auditctl -w /path -p permissions -k key | 监控文件/目录 |
| 添加(永久) | 编辑 /etc/audit/rules.d/*.rules | 重启生效 |
| 删除(全部) | auditctl -D | 清空所有当前规则 |
| 查看规则 | auditctl -l | 列出当前加载的规则 |
| 查看日志 | ausearch -k <key> | 根据标签查找记录 |
注意: 执行这些操作通常需要 root 权限 (sudo)。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持本站。
您可能感兴趣的文章: