配置关键目录监控需以auditd实现细粒度审计,覆盖/etc、/root、/var/log、/boot及其子项真实路径,结合权限加固与远程日志留存形成闭环防御。

配置系统关键目录监控,核心是“精准捕获访问行为+权限加固+日志可追溯”,不能只靠 chmod 或防火墙拦住访问,而要让每一次读、写、执行、属性变更都留下不可抵赖的审计痕迹。
明确监控范围与真实路径
先锁定真正需要保护的关键目录:/etc、/root、/var/log、/boot。这些目录下文件一旦被篡改或窃取,极易导致权限提升、日志擦除或系统启动劫持。
- 用 ls -ld /etc /root /var/log /boot 确认当前权限,/root 必须是 drwx------(700),/etc 推荐 drwxr-xr-x(755),/var/log 建议 drwxr-x---(750)
- 避免监控整个 /etc 目录——粒度太粗易产生海量日志;应聚焦子项如 /etc/shadow、/etc/sudoers、/etc/ssh/sshd_config,并单独加规则
- 若目录是软链接(如 /etc/shadow → /usr/etc/shadow),auditd 规则必须指向真实 inode 路径,否则事件无法捕获。查真实路径用:ls -i /etc/shadow
用 auditd 设置永久性细粒度监控规则
auditd 是内核级审计框架,能记录谁、何时、以何种方式访问了哪些路径,且规则持久化后不随重启失效。
- 在 /etc/audit/rules.d/ 下新建规则文件,例如:10-sensitive-dir.rules
- 写入以下内容(每行一条,不加注释,不空行):
-w /etc -p wa -k etc_access
-w /root -p wa -k root_access
-w /var/log -p wa -k log_access
-w /boot -p wa -k boot_access
其中 -p wa 表示监控写入(write)和属性修改(attribute change),覆盖 cp、chmod、chown、mv 等操作 - 运行 sudo augenrules --load 加载所有 .rules 文件;验证是否生效:sudo auditctl -l | grep etc_access
增强监控深度:覆盖“进入”与“探测”行为
仅监控写操作不够——攻击者常先尝试进入 /root 或列出其内容,这类行为不触发 -w 规则,需用系统调用规则补全。
- 在 /etc/audit/rules.d/root-access.rules 中添加:
-a always,exit -F dir=/root -F perm=x -F key=root_access
-a always,exit -F arch=b64 -S openat,statx,getdents64 -F dir=/root -F key=root_access
这能捕获 cd /root、ls /root、stat /root 等所有底层动作 - 对 /etc 目录同样适用:补充 getdents64 和 openat 规则,防止脚本静默探测配置结构
- 加载后模拟测试:用普通用户执行 ls /root,再立即运行:
sudo ausearch -k root_access -m SYSCALL --start recent | aureport -f -i
应看到完整 UID、终端、命令名和时间戳
配套防护与日志闭环管理
监控只是起点,必须配合权限加固、日志防删和集中留存,形成防御闭环。
- 对关键日志文件(如 /var/log/secure)设置 chattr +a,允许追加但禁止删除或覆盖;归档后可用 chattr +i 锁定
- 配置 rsyslog 或 journald 将 audit 日志同步至远程服务器,规避本地日志被清空风险
- 定期检查是否有非预期进程打开敏感路径:sudo lsof +D /etc 2>/dev/null | grep -E "(shadow|sudoers)"
- 扫描定时任务和脚本中硬编码的敏感路径读取:grep -r "/etc/shadow\|/root" /etc/cron* /etc/systemd/system/ 2>/dev/null

















