分层布防实现配置文件安全闭环:一、用auditd精准监控关键配置文件写操作;二、用Wazuh FIM建立基线并比对变更内容;三、用轻量脚本联动告警与自动处置;四、用osquery溯源修改进程。

核心思路是分层布防:用内核级审计抓源头、用文件完整性监控盯变化、用自动化脚本做响应,三者协同才能实现“改了就发现、发现就告警、告警就处置”。不依赖单一工具,也不追求一步到位。
一、锁定关键路径,配置auditd实时捕获修改行为
auditd直接监听系统调用,对/etc/passwd、/etc/sudoers、/etc/ssh/sshd_config等文件的任何写操作都逃不过。关键是规则要精准,避免误报和漏报:
- 在/etc/audit/rules.d/下新建critical-conf.rules,添加如下规则(每行一条):
-a always,exit -F path=/etc/passwd -F perm=w -k conf_passwd
-a always,exit -F path=/etc/sudoers -F perm=w -k conf_sudoers
-a always,exit -F path=/etc/ssh/sshd_config -F perm=w -k conf_sshd - 执行sudo augenrules --load加载规则,再重启服务:sudo systemctl restart auditd
- 验证是否生效:用sudo echo "test" > /etc/passwd触发一次(注意别真写),然后运行ausearch -k conf_passwd | aureport -i -f,应能看到完整操作链:谁、哪个进程、从哪调用、是否成功
二、启用Wazuh FIM建立基线并对比变更
auditd能记录“谁动了”,但无法自动识别“改成了什么样”。Wazuh的文件完整性监控(FIM)补上这一环,它会生成哈希快照并持续比对:
使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。
- 编辑/var/ossec/etc/ossec.conf,在<syscheck>区块中加入:
<directories realtime="yes" whodata="yes">/etc/passwd,/etc/sudoers,/etc/ssh/sshd_config</directories>
whodata="yes"启用内核级监控,比普通inotify更可靠;realtime="yes"确保秒级响应 - 重启agent:sudo systemctl restart wazuh-agent
- 首次扫描后,所有变更都会生成结构化告警,含原始内容、新旧哈希、时间戳。可通过Kibana或Wazuh UI查看,并导出diff结果
三、编写轻量联动脚本,实现自动告警与初步阻断
光有日志没用,必须让告警“活起来”。一个50行以内的shell脚本就能完成邮件通知+临时冻结+日志归档:
- 监听Wazuh告警队列(如/var/ossec/logs/alerts/alerts.json)或auditd日志(/var/log/audit/audit.log),用grep -q "conf_.*w"匹配关键词
- 匹配成功后,立即执行:
— 发送企业微信消息(调用webhook接口)
— 记录到本地/var/log/security/conf-change.log并追加主机名、时间、文件路径、UID
— 若是/etc/sudoers被改,自动执行sudo chmod 440 /etc/sudoers重置权限,防止提权扩散 - 将脚本注册为systemd服务,设置Restart=always,确保长期存活
四、补充osquery做终端侧变更溯源
当怀疑是某个进程偷偷修改配置时,auditd和Wazuh只能告诉你“发生了什么”,而osquery能帮你查“这个进程从哪来、启动参数是什么、父进程是谁”:
- 配置osquery的file_events表,监控上述关键路径,interval设为60秒
- 配合processes表做关联查询,例如:
SELECT p.name, p.path, p.cmdline, p.parent, f.action FROM file_events f JOIN processes p ON f.process_guid = p.guid WHERE f.path = '/etc/sudoers' AND f.time > unixepoch('now', '-5 minutes'); - 结果可直接接入SIEM,或通过osquery的--logger_plugin=socket推送到中央日志平台
整个流程不要求所有组件同时上线。建议先跑通auditd + 邮件脚本,再叠加Wazuh做内容比对,最后用osquery补强溯源能力。重点不在工具多,而在每个环节都能闭环验证。

















