加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > Nginx > 正文

nginx – 出于安全原因拒绝除index.php之外的所有* .php请求

发布时间:2020-12-13 21:15:10 所属栏目:Nginx 来源:网络整理
导读:os:CentOS 7 nginx:1.6.2 httpd:apache 2.4.6 cms:Drupal 7 在我的服务器遭到入侵后,我从服务器中删除了所有内容,重新安装了操作系统和软件,并从备份恢复了数据 现在,我以最大的安全风格配置所有服务. 在详细研究访问日志之后 我决定拒绝任何对php文件的

os:CentOS 7
nginx:1.6.2
httpd:apache 2.4.6
cms:Drupal 7

在我的服务器遭到入侵后,我从服务器中删除了所有内容,重新安装了操作系统和软件,并从备份恢复了数据
现在,我以最大的安全风格配置所有服务.

在详细研究访问日志之后 – 我决定拒绝任何对php文件的请求,除了index.php之外,它位于站点文档根目录中以提高安全性.

Nginx访问日志内容很多记录如:

azenv2.php
az.php

/*/wp-login.php
/administrator/index.php
/MyAdmin/index.php

第一类 – 后门(其中一个入侵了我的网站,有人从我的服务器发送了大量垃圾邮件).

第二 – 有人想找到流行的cms和实用程序,并尝试登录@密码,如admin @ 123456

我通过拒绝对php文件的请求来阻止这两个类别的原因是:

>即使有人上传php-shell,也无法使用它.
>所有这些请求都是’不好’的小修道院 – 并且通过nginx拒绝它们将保护drupal(httpd php mysql)工作和消耗能力.

我对一个虚拟主机的当前配置:

server {

  listen 

nginx.conf – 安装后未更改.

UPDATE
最后我为deny创建了这个配置:

location ~ .php${
  access_log /path/to/log/nginx_deny.log name_log;
  deny all;
}

这个配置代理:

location =/index.php {
  proxy_pass http://127.0.0.1:

1).因此,有关攻击尝试的完整信息将收集在日志中.
2).服务器不会为错误的请求做额外的工作.
3). Drupal cron可以工作.

最佳答案
您可以通过多种方式实现这一目标.

与您在配置文件中的内容完全直接集成,您可能希望简单地包含以下部分;

location ~ .php${
try_files index.php @error;

fastcgi_pass ...;

fastcgi_param SCRIPT_FILENAME /path/to$fastcgi_script_name;

...
}

location @error {
[config of however you want to handle errors]
}

在允许其访问/执行之前,将检查所请求文件的存在.

除此之外,我个人建议使用fail2ban,如果配置正确,将为您提供更全面的安全性;您可以将其配置为实时监控访问日志,并通过自动创建新的iptables规则来禁止IP访问您的服务器,并指定禁止时间.

就个人而言,我的服务器配置为根据this article使用带有nginx的fail2ban(或者至少基于此 – 您可以根据需要更改它).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读