防篡改系统部署防止站点被挂马劫持

为什么你的站点需要防篡改系统

网站被挂马或劫持是站长最头疼的安全问题之一。
攻击者往往通过漏洞上传恶意文件、修改关键脚本(如 index.php.htaccess),导致用户访问时跳转到钓鱼页面或被植入恶意代码。防篡改系统的核心作用是在文件写入层建立保护:只允许可信进程(如 FPM、HTTPD)在必要目录写文件,其他所有修改行为都被拦截并告警。

部署防篡改系统后,即使攻击者获得了后台登录权限或挖出了文件上传漏洞,也无法轻易篡改网站源码,因为修改请求会被实时阻断。
下面我们以 宝塔面板 自带的防篡改功能(基于 Linux 内核 chattr 和 inotify 机制)为例,一步步完成部署。

如果你使用其他面板或裸系统,原理类似:找到对应的文件保护插件或工具(如安全狗、云锁),操作路径略有不同,但核心步骤一致。

部署前的准备工作

在开启防篡改之前,先确认以下条件已满足:

  • 服务器环境:CentOS 7+ 或 Ubuntu 18.04+,已安装宝塔面板(7.9+ 版本)。
  • 站点状态:站点能正常访问,并且你已将网站文件完整上传至 /www/wwwroot/ 下。
  • 备份:为防止误操作,建议先在服务器上对站点目录做一次全量备份。
    cp -r /www/wwwroot/你的站点目录 /备份路径
  • 账号权限:登录宝塔面板后台,使用管理员账号操作。

准备就绪后,进入下一步。

三步部署防篡改系统(宝塔面板实操)

1. 开启网站防篡改

在宝塔面板左侧菜单点击 安全 -> 防篡改,点击右上角 添加项目

  • 保护模式:选择“严格模式”(默认会锁定所有文件,只允许指定的写入点)。
  • 指定目录:填写你的站点绝对路径,例如 /www/wwwroot/example.com
  • 白名单目录:通常需要放行以下目录,否则动态程序无法写入缓存、上传文件或生成临时文件:
  • /www/wwwroot/example.com/runtime/www/wwwroot/example.com/storage (取决于你的程序,如 ThinkPHP 的 runtime、Laravel 的 storage)
  • /www/wwwroot/example.com/uploads (用户上传目录)
  • /www/wwwroot/example.com/tmp (临时文件)
  • 白名单进程:保持默认(php-fpm、nginx 等 Web 服务进程)即可。

点击 提交 后,系统会立即锁定目录内的所有文件(包含子目录)。
你可以直接到站点目录下测试:

touch /www/wwwroot/example.com/test.html

正常情况下会提示 Operation not permitted,说明防篡改已生效。

2. 配置动态写入规则

如果开启了严格模式,你的网站可能出现“无法写入缓存”或“上传图片失败”的问题。
此时需要进入 安全 -> 防篡改,点击项目右侧的 编辑,在“放行目录”中添加对应的写入路径。

例如,一个常见的 WordPress 站点需要放行:

  • /wp-content/uploads
  • /wp-content/cache
  • /tmp(如果 WordPress 使用临时文件)

放行后点击保存,系统会自动解除对这些目录的锁定。提示:不要过度放行,只放行程序绝对必要的目录,否则防篡改效果会打折扣。

3. 开启实时告警(可选)

宝塔防篡改支持在发生篡改尝试时发送通知。
安全 -> 防篡改 页面,点击右上角 告警设置,绑定你的微信或邮箱。
当有非法写入请求时,你会第一时间收到告警信息,方便及时排查。

避坑指南:新手最易遇到的三个问题

  • 开启防篡改后网站出现 500 错误:多半是因为必要目录未放行。先关闭防篡改,确认网站恢复,然后按照第 2 步的放行规则重新添加白名单目录。
  • 通过 FTP 客户端无法上传文件:这是正常现象,因为防篡改阻止了所有非服务进程的写入。如果你需要临时修改文件(如更新主题),可以在宝塔面板里临时关闭防篡改,操作完成后立刻开启。
  • 防篡改与备份插件冲突:某些备份插件(如 UpdraftPlus)因为无法写入备份目录而报错。解决方法是在放行目录里添加备份插件使用的路径(通常为 /wp-content/updraft)。

效果验证:模拟一次挂马攻击

部署完成后,建议你亲自验证防篡改是否真正有效。
下面用最简单的 shell 命令模拟攻击:

  1. 尝试修改 index.php:
    echo "恶意代码" >> /www/wwwroot/example.com/index.php

观察终端输出,应该会出现类似 bash: /www/wwwroot/example.com/index.php: Permission denied 的错误。

  1. 尝试新建一个 webshell:
    touch /www/wwwroot/example.com/shell.php

也会被拒绝。

  1. 检查宝塔面板的 安全 -> 防篡改 日志,会看到拦截记录,包括时间、文件路径、操作类型(写/新建)。

如果你的测试结果和被拦截的记录一致,说明防篡改系统已经成功部署。

常见问题解答

Q:防篡改系统会降低网站性能吗?
A:宝塔防篡改基于 inotify 事件驱动,只在文件写入时触发检查,对正常访问几乎没有性能影响。但如果你的站点有大量实时写入(例如高频缓存刷新),可以考虑将对应的目录加入白名单。

Q:我同时使用了云锁或安全狗,还需要开启宝塔防篡改吗?
A:不建议重复开启多个文件保护工具,容易造成冲突。选择一个你最熟悉且稳定的即可,宝塔防篡改对宝塔面板用户来说集成度最高、最方便。

Q:开启防篡改后,如何更新网站源码?
A:临时关闭防篡改 -> 通过 FTP 或面板文件管理器上传新文件 -> 重新开启防篡改。整个更新过程仅需几分钟。

如果你在部署过程中遇到其他报错,建议先检查防篡改日志和站点错误日志(位于宝塔面板 -> 网站 -> 对应站点 -> 错误日志),通常能定位到是哪个目录或文件被误拦截了。
按照本文的放行原则调整即可。
对于更复杂的动态程序(如 Discuz、EcsShop),可以到官方社区搜索关键词“防篡改 白名单 路径”获取对应配置。

分享到:
上一篇
网站移动端加载缓慢静态资源加速优化
下一篇
站内链布局提升全站页面收录量实操:站内链布局提收录实操
1
系统公告

机房迁移升级通知

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