宝塔面板作为国内常用的服务器管理面板,其便捷的操作降低了服务器运维门槛,但默认配置下存在不少安全隐患,容易被攻击者植入WebShell获取服务器权限。做好相关安全设置是网站稳定运行的基础。

一、限制网站目录写入与执行权限
WebShell通常需要写入网站目录并被执行,因此合理设置目录权限是防范的第一道防线。首先进入宝塔面板的网站模块,选择对应站点点击设置,在网站目录中做如下调整:
- 将网站根目录的权限设置为
755,所有者设置为www用户,避免其他用户随意写入文件 - 对于不需要上传文件的目录,直接取消
写权限,仅保留读和执行权限 - 上传目录单独设置权限,禁止该目录下的PHP、ASP等脚本文件执行,可在伪静态中添加如下规则:
# 禁止上传目录执行PHP脚本
location ~* /upload/.*.(php|php5|php7)$ {
return 403;
}
二、优化PHP配置拦截恶意脚本
PHP是WebShell最常见的运行环境,调整PHP配置可以有效拦截大部分恶意脚本的执行。进入宝塔面板的软件商店,找到对应PHP版本点击设置,在配置修改中调整以下参数:
| 配置项 | 推荐值 | 作用说明 |
|---|---|---|
| disable_functions | exec,passthru,shell_exec,system,proc_open,popen,curl_exec,dl,php_uname,chmod,chown | 禁用危险函数,阻止WebShell执行系统命令 |
| open_basedir | 网站根目录路径 | 限制PHP只能访问指定目录,防止跨目录读取敏感文件 |
| expose_php | Off | 隐藏PHP版本信息,减少攻击者针对性利用漏洞的可能 |
三、启用宝塔面板自带安全功能
宝塔面板内置了多个安全防护功能,开启后可以进一步提升防御能力:
1. 启用宝塔系统防火墙
进入安全模块,开启系统防火墙,仅开放80、443、22等必要端口,关闭其他无用端口,减少攻击面。同时可以在屏蔽IP中添加频繁扫描的恶意IP段。
2. 开启网站防篡改功能
在对应站点的设置中找到防篡改功能,开启后锁定网站核心文件,即使攻击者获取了写入权限,也无法修改或新增PHP等脚本文件,仅允许指定目录的上传操作。
3. 配置Web应用防火墙
宝塔面板的企业版自带WAF功能,免费版可以通过安装第三方WAF插件实现,配置规则拦截包含WebShell特征的请求,比如常见的eval、assert等恶意函数调用请求。
四、定期监控与日志审计
防范WebShell不能只靠事前设置,还需要定期做监控审计:
- 定期查看网站日志,排查异常访问请求,比如陌生IP频繁访问上传接口、请求不存在的PHP文件等
- 使用宝塔面板的文件监控功能,开启网站目录的文件变动提醒,一旦有新增或修改PHP文件立即收到通知
- 定期使用杀毒工具扫描网站目录,排查隐藏的WebShell文件,常见的WebShell会伪装成图片或正常系统文件
五、其他补充安全建议
除了上述面板相关设置,还需要注意服务器层面的安全:
- 不要使用默认的宝塔面板端口,将面板端口修改为非8888的自定义端口,避免被批量扫描
- 面板登录开启双因素认证,避免使用弱密码,定期更换面板和服务器登录密码
- 及时更新宝塔面板、PHP、Nginx等组件的版本,修复已知的安全漏洞
通过以上多层面的设置,可以大幅降低宝塔面板环境下WebShell入侵的风险,不过安全是一个持续的过程,需要定期巡检和调整防护策略,才能应对不断变化的攻击手段。