从nginx层阻断可执行的php 防止宝塔站点挂马

今天主机上多个网站又给人挂马了,前一久才把全部站点清干净,并加固了处理,好不容易过了半个月又中了,查看网站日志应该5.6环境出了问题,也没对应wap.php文件,想了一下还得从这里入手才行,因为使用宝塔,且网站多个,所以没法确定是哪个网站的漏洞。但可以确定的是对方上传了可执行的php文件。

1697878567-6669bba95399ff9

方法
防止执行除入口文件(index.php)以外的其他php文件。

步骤
1、修改宝塔php配置文件

我用的是php5.6和php7.4,且大部分网站都有一个统一的入口index.php

先备份 /www/server/nginx/conf/enable-php-56.conf 为/www/server/nginx/conf/enable-php-56-origin.conf

再修改 /www/server/nginx/conf/enable-php-56.conf

location ~ [^/]\.php(/|$)
{
try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi-56.sock;
fastcgi_index index.php;
include fastcgi.conf;
include pathinfo.conf;
}
将上面的改为

## 只允许访问index.php
location = /index.php
{
try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi-56.sock;
fastcgi_index index.php;
include fastcgi.conf;
include pathinfo.conf;
}
## 其他php都返回404
location ~ .*\.(php)$
{
return 404;
}
2、确认伪静态配置文件

因为大部分网站是thinkphp的

location / {
if (!-e $request_filename){
rewrite ^(.*)$ /index.php?s=$1 last; break;
}
}
验证
1、在站点的入口处建一个,tt.php

<?php

echo 'test';
访问 xxx.com/tt.php 则返回404

2、在入口处新建 test目录,并在test目录中建立index.php

<?php

echo 'test/index.php';
访问 xxx.com/test/index.php 则返回404

3、而网站的其他链接则都能正常访问。
————————————————
版权声明:本文为CSDN博主「aixh1985」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u010192444/article/details/128627716

服务声明: 本网站所有发布的源码、软件和资料均为作者提供或网友推荐收集各大资源网站整理而来,仅供功能验证和学习研究使用,您必须在下载后24小时内删除。不得使用于非法商业用途,不得违反国家法律,否则后果自负!一切关于该资源商业行为与本站无关。如果您喜欢该程序,请购买正版源码,能得到更好的正版售后服务。如有侵犯你的版权合法权益,请邮件或QQ与我们联系处理(邮箱:3089659733@qq.com),本站将立即删除改正。

播播资源 » 从nginx层阻断可执行的php 防止宝塔站点挂马

发表回复