auditd可实时捕获系统目录未授权写入,需精准监控/etc/、/bin/等关键路径,结合auid!=0等权限过滤,并用-k标签实现日志追溯,规则须持久化至/etc/audit/rules.d/并重载生效。

直接用 auditd 实时捕捉系统目录的未授权写入,核心是精准设置监控路径、限定高风险系统调用、明确权限过滤条件,并通过 -k 标签实现日志可追溯。auditd 不做判断,但能完整记录“谁、在何时、用什么命令、以何种权限”触发了写操作——后续分析靠 ausearch 和字段组合。
聚焦关键系统目录,避免宽泛监控导致日志爆炸
未授权写入高发且危害大的路径包括:
-
/etc/(配置文件篡改主战场) -
/bin/、/usr/bin/、/sbin/、/usr/sbin/(核心命令替换) -
/lib/、/lib64/、/usr/lib/(系统库劫持) -
/boot/(内核镜像与引导配置) -
/etc/cron.*、/etc/crontab(定时任务后门)
不建议对整个 / 或 /usr 加 -w,应按需逐目录配置,例如:
sudo auditctl -w /etc/ -p wa -k etc_unauth_write sudo auditctl -w /bin/ -p wa -k bin_unauth_write sudo auditctl -w /boot/ -p wa -k boot_unauth_write
捕获真正代表“未授权”的系统调用和上下文
仅监控路径不够,必须结合权限上下文过滤掉合法行为:
- 用
-F auid!=0区分非 root 登录用户(auid 不随su/sudo改变,比uid更可靠) - 补充
-F euid!=0排除以非 root 身份执行的进程 - 捕获绕过文件监控的底层调用,如
openat、creat、renameat、unlinkat、init_module(驱动加载)
示例规则(写入 /etc/audit/rules.d/system-write.rules):
-w /etc/ -p wa -k system_etc_write -w /bin/ -p wa -k system_bin_write -a always,exit -F arch=b64 -S openat,creat,renameat,unlinkat -F dir=/etc/ -F auid!=0 -k unauthorized_etc_access -a always,exit -F arch=b64 -S init_module,finit_module -F auid!=0 -k unauthorized_kmod_load
确保规则持久化并验证是否真生效
临时规则重启即失效,必须:
- 将上述内容保存为
/etc/audit/rules.d/system-write.rules - 执行
sudo augenrules --load重载全部规则 - 检查加载结果:
sudo auditctl -l | grep -E "(etc|bin|unauthorized)" - 确认服务运行:
sudo systemctl status auditd | grep "active (running)"
实时捕获与快速识别未授权行为
用以下命令秒级查看最新未授权写入事件:
# 查最近5分钟所有带 unauthorized_ 标签的事件
sudo ausearch -k unauthorized_etc_access -i --start 5m | aureport -f -i
# 提取关键字段:原始用户、命令、执行路径、源IP(如有)
sudo ausearch -k unauthorized_etc_access -m SYSCALL -i --start recent | \
awk '/auid=|comm=|exe=|addr=/ {print}' | head -12
# 模拟测试(普通用户下执行)
su -c "touch /etc/test.conf" -s /bin/bash testuser 2>/dev/null 联动响应的关键不是阻止,而是快速定位与隔离
auditd 不拦截,但日志足够支撑自动响应:
- 解析
ausearch输出提取auid和addr,调用pkill -u $AUID终止会话 - 提取
exe=路径,若为/tmp/xxx或非常规路径,立即rm -f并审计父进程 - 配合
fail2ban的auditdfilter,对同一addr多次触发自动封禁
不复杂但容易忽略。

















