网站防篡改的核心在于建立多层防御体系:底层文件系统锁定防止核心代码被修改,Web服务器层面禁止特定目录执行脚本防止木马运行,PHP层面限制目录访问防止跨站攻击。在开始操作前,请确保您拥有服务器的root权限,并且已安装好宝塔Linux面板。本指南以Linux系统(CentOS/Ubuntu/Debian)为例,默认网站根目录为/www/wwwroot/你的网站。
chattr是Linux系统下 EXT2/EXT3/EXT4 文件系统的专用属性修改工具,其中的+i属性(Immutable)可以让文件即使被root用户也无法直接删除、修改或重命名,这是防止网站被篡改的最强力手段。
大多数Linux发行版默认已包含该工具。首先通过SSH终端输入以下命令检查是否可用:
```bash which chattr ```如果未安装,CentOS系统使用yum install e2fsprogs -y安装,Ubuntu/Debian系统使用apt-get install e2fsprogs -y安装。
配置文件(如config.php、wp-config.php、application.php)通常是黑客的首选篡改目标。请将以下命令中的路径替换为您实际的文件路径:
```bash chattr +i /www/wwwroot/你的网站/config.php ```执行后,尝试使用rm -f或vim修改该文件,系统会提示“Operation not permitted”,即锁定成功。
对于不需要频繁更新的静态资源目录(如uploads以外的图片、css、js目录)或核心代码目录,可以使用-R参数进行递归锁定:
注意:千万不要锁定需要程序写入的目录,例如/runtime、/cache、/uploads等,否则会导致网站无法正常生成缓存或上传文件。
使用lsattr命令查看文件属性:
输出结果中如果包含-i字样,说明+i属性已生效,文件已处于防篡改保护状态。
即使黑客通过漏洞上传了WebShell木马文件到uploads或data目录,只要禁止该目录执行PHP脚本,木马就无法运行。这是防止“挂马”的关键步骤。
在宝塔面板中,点击左侧菜单【网站】,找到对应的站点,点击【设置】->【配置文件】。该文件通常位于/www/server/panel/vhost/nginx/你的域名.conf。
在server代码块内部、location / { ... }代码块的外部或上方,插入以下配置。请根据您网站的实际目录结构调整路径。
参数解释:~表示不区分大小写匹配;^/(uploads|...)匹配以这些目录开头的路径;\.(php|php5)$匹配以php或php5结尾的文件;deny all直接拒绝访问并返回403错误。

在宝塔面板配置文件编辑器中点击【保存】,系统会自动检测Nginx语法。如果配置正确,点击【重载配置】或直接在SSH执行以下命令使配置生效:
```bash nginx -t && nginx -s reload ```open_basedir是PHP.ini中的一个设置,用于限制PHP脚本只能访问指定目录下的文件。防止黑客通过脚本读取/etc/passwd、网站源码或其他站点的数据库配置文件。
在宝塔面板中,进入【网站】->【设置】->【网站目录】。在“防跨站攻击(open_basedir)”一栏中,确保路径被正确设置为网站根目录。通常格式为:
```text /www/wwwroot/你的网站/:/tmp/ ```注意:必须保留/tmp/,因为PHP session等文件需要写入临时目录。确保该选项处于勾选(开启)状态。
如果面板设置未生效,可以检查PHP的配置文件。在宝塔【软件商店】->【PHP 7.4】(选择你的版本)->【设置】->【配置文件】中,搜索open_basedir。确保其值如下:
修改后需重启PHP服务(在宝塔软件商店中点击【重载配置】或【重启】)。
不合理的文件权限是篡改的温床。在Linux服务器上,网站文件原则上不应具备写入权限,除非是特定目录。
通过SSH进入网站根目录,执行以下命令批量设置权限:
```bash 进入目录 cd /www/wwwroot/你的网站 设置所有文件为644(用户读写,组和其他人只读) find . -type f -exec chmod 644 {} \; 设置所有目录为755(用户读写执行,组和其他人读执行) find . -type d -exec chmod 755 {} \; ```对于配置文件,建议设置更严格的权限,仅允许所有者读取:
```bash chmod 600 /www/wwwroot/你的网站/config.php ```确保网站文件所有者是www(宝塔默认Web用户),防止其他用户越权修改:
```bash chown -R www:www /www/wwwroot/你的网站 ```当您需要更新网站程序或修改配置文件时,必须先解除chattr的锁定,否则无法保存。
使用-i参数移除不可变属性:
如果之前锁定了整个application目录,更新前需递归解锁:
通过以上六个步骤的严格配置,您的网站将在文件系统、Web服务、PHP运行环境三个层面建立起坚实的防篡改屏障,极大提升安全性。请务必在测试环境先行演练,确认路径无误后再在生产环境操作。
易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。
Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图