需融合四层能力实现关键文件审计与防护:一、chattr+auditd实现只读锁定与内核级审计;二、kysec等模块提供意图感知型保护;三、inotifywait脚本实现目录变更实时告警;四、统一日志归集与闭环溯源。

要对系统关键业务文件实现审计、只读保护、防篡改和自动告警,需融合“锁定控制 + 行为监控 + 操作溯源 + 实时响应”四层能力。不依赖商业产品,全部基于Linux原生机制与轻量工具即可落地。
一、用chattr + auditd实现文件级只读锁定与内核级操作审计
对真正不可修改的核心文件(如/etc/passwd、/usr/bin/sudo、业务主程序),先加不可变属性,再启用auditd捕获绕过行为:
- 执行
sudo chattr +i /etc/passwd锁定文件(注意:后续更新前必须先chattr -i) - 在
/etc/audit/rules.d/immutable.rules中添加审计规则:-a always,exit -F path=/etc/passwd -F perm=w -k passwd_write-a always,exit -F path=/usr/bin/sudo -F perm=x -k sudo_exec - 重载规则:
sudo augenrules --load && sudo systemctl restart auditd - 验证是否生效:
ausearch -k passwd_write | aureport -f -i可查到尝试写入的用户、进程、时间
二、用KYSEC或类似强制访问模块做意图感知型保护
chattr无法区分“误操作”和“恶意行为”,而KYSEC等国产安全模块支持按执行上下文拦截,更贴近业务场景:
- 给Nginx配置加只读保护:
sudo kysec_set -n protect -vreadonly /etc/nginx/conf.d/*.conf - 即使root执行
rm或echo >也会被拦截,并记录到系统日志 - 配合
journalctl -t kysec可快速检索拦截事件,含调用进程、UID、命令行完整参数 - 优势在于:无需解除保护即可审计;支持细粒度策略(如仅禁止非deploy用户修改)
三、用inotifywait + 脚本实现目录级变更实时告警
适用于内容动态但结构固定的业务目录(如/var/www/html、/opt/myapp/conf),不锁死文件,而是盯住“谁在改什么”:
- 编写监控脚本
/usr/local/bin/monitor-core-dir.sh,核心逻辑是监听IN_MODIFY和IN_MOVED_TO事件 - 对每个变更事件,提取PID并检查其所属进程名:
ps -o comm= -p $PID,若不在白名单(如nginx、rsync、deploy)中,则判定可疑 - 触发动作:写入syslog(
logger -t core-file-alert)、发邮件、推送企业微信机器人 - 用systemd守护该脚本,确保开机自启、崩溃后自动重启
四、构建闭环:日志归集 + 告警聚合 + 快速溯源
单点告警容易淹没,需统一入口便于响应与复盘:
- 所有审计日志(auditd、kysec、inotify脚本)统一打标,例如都带
core-file-alerttag - 用rsyslog或journalbeat将日志转发至SIEM平台(如ELK、Splunk)或轻量方案(如Grafana Loki)
- 设置告警规则:5分钟内同一文件被修改≥2次、或非白名单进程修改关键路径,立即触发高优通知
- 溯源时组合查询:
ausearch -m execve -ts recent | aureport -f -i+journalctl -t core-file-alert -S "10 minutes ago",5分钟内定位操作链











