网站实时防篡改监控后台文件变更记录:网站实时防篡改监控

为什么需要网站实时防篡改监控

网站文件被篡改是很常见的安全问题,比如被植入恶意脚本、修改首页或插入广告。
如果等到用户反馈或搜索引擎提醒才发现,损失已经造成。
实时防篡改监控可以在文件变更的瞬间记录下:谁改的、什么时候改的、改了哪个文件、进程 ID 是什么。
这样无论是排查入侵还是事后溯源,都有据可查。

本文使用的工具是 Linux 自带的 auditd(审计守护进程),它不需要安装额外软件,配置一次就能持续监控网站目录。
所有变更记录都会写入 /var/log/audit/audit.log,配合 ausearch 命令可以快速过滤。

准备工作

  • 一台运行 CentOS 7/8 或 Ubuntu 20.04/22.04 的服务器(已安装网站环境,例如 Nginx + PHP 或宝塔面板)。
  • 拥有 root 权限或能使用 sudo。
  • 明确你要监控的网站根目录,例如 /www/wwwroot/example.com

在开始前,先用 SSH 登录服务器,执行以下命令确认 auditd 是否已安装:

which auditd

如果没有输出,需要先安装。

安装 auditd(如果未安装)

CentOS / RHEL / Rocky Linux

sudo yum install audit -y
sudo systemctl enable auditd
sudo systemctl start auditd

Ubuntu / Debian

sudo apt update
sudo apt install auditd -y
sudo systemctl enable auditd
sudo systemctl start auditd

安装后检查状态:

sudo systemctl status auditd

看到 active (running) 就表示已启动。

配置监控规则:实时记录网站目录文件变更

我们要对网站根目录及其所有子文件和子目录进行监控,记录属性修改两类事件。
这里以 /www/wwwroot/example.com 为例,请替换为你的真实路径。

添加一条规则(加入 /etc/audit/rules.d/ 或直接使用 auditctl):

sudo auditctl -w /www/wwwroot/example.com -p wa -k website_monitor

参数说明:

  • -w:指定监控路径。
  • -p wa:监控权限事件,w 表示写(修改内容),a 表示属性修改(如权限、时间戳、重命名等)。你也可以根据需要加上 r(读)或 x(执行),但生产环境一般只监控写和属性。
  • -k website_monitor:给这条规则打一个标签,方便后续过滤日志。

如果你希望规则重启后仍然生效,可以将它写入永久规则文件:

echo "-w /www/wwwroot/example.com -p wa -k website_monitor" | sudo tee -a /etc/audit/rules.d/website.rules
sudo service auditd restart

查看后台文件变更记录

监控规则生效后,任何对网站目录的写或属性修改都会被记录。
查看实时日志可以用:

sudo tail -f /var/log/audit/audit.log | grep website_monitor

如果只查看最近几条记录,可以用 ausearch 命令:

sudo ausearch -k website_monitor --just-one

输出示例:

time->2025-03-28 10:15:32.123 type=SYSCALL msg=audit(1743135332.123:456): arch=c000003e syscall=2 success=yes exit=0 a0=7ffe... a1=2 a2=1 a3=7... items=2 ppid=1234 pid=5678 auid=1000 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=1 comm="vim" exe="/usr/bin/vim" subj=unconfined key="website_monitor"

关键字段解读:

  • time:事件发生时间。
  • ppid / pid:父进程和进程 ID。
  • comm:触发命令名称(如 vim、cp、rm)。
  • exe:可执行文件路径。
  • uid:用户 ID(0 为 root)。
  • key:我们设置的标签。
  • 后面还会有 PATH 记录显示具体文件和操作类型。

你也可以通过 aureport 命令生成汇总报告:

sudo aureport -k -i --start today | grep website_monitor

避坑指南

  • 监控目录不要过深或过大:如果网站目录包含大量静态文件(如几十万张图片),auditd 会产生海量日志,可能撑爆磁盘。建议只监控关键目录,例如 webrootwp-content 等。
  • 定期清理日志:audit.log 默认不会自动轮转,一定要配置 logrotate。在 /etc/logrotate.d/audit 中已有默认配置,检查是否开启并调整保留天数。
  • 忽略合法操作:如果网站通过 FTP 或面板在线编辑文件,这些操作也会被记录,属于正常行为。你需要通过 comm 字段过滤出可疑进程(例如非 Web 服务进程的写操作)。
  • 重启后规则丢失:如果使用 auditctl 临时添加,重启后会丢失。务必写入 /etc/audit/rules.d/ 下的文件。
  • 不要同时监控同一个目录多次:重复规则会导致重复记录,增加日志量。

效果验证

模拟一次篡改操作:在网站根目录新建一个测试文件,然后修改内容:

echo "hacked!" > /www/wwwroot/example.com/test_hack.txt

接着查看日志:

sudo ausearch -k website_monitor -i | grep test_hack

你应该能看到类似下面这样的记录,包含创建和写入的事件:

type=CREATE ... pid=2345 comm="bash" ... path="/www/wwwroot/example.com/test_hack.txt"
type=WRITE ... pid=2345 comm="bash" ... path="/www/wwwroot/example.com/test_hack.txt"

如果实时需要告警,可以结合 audispd 插件发送邮件或对接第三方告警系统,但本文暂不展开。

总结

通过 auditd 实现网站实时防篡改监控,成本低、效果好,尤其适合没有安全面板的 Linux 服务器。
关键在于配置正确的监控路径和权限事件,并养成定期查看日志的习惯。
如果你正在搭建或维护网站,建议尽快按照本文步骤配置一次,记下关键文件变更记录,防患于未然。
遇到异常事件时,优先排查非预期进程,及时溯源修复。

分享到:
上一篇
多站点批量绑定SSL证书宝塔一键脚本
下一篇
老旧TLS协议拦截浏览器访问Nginx修复脚本
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意