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

前端之家收集整理的这篇文章主要介绍了nginx – 出于安全原因拒绝除index.php之外的所有* .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_access.log main;
  }

}

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: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(或者至少基于此 – 您可以根据需要更改它).

猜你在找的Nginx相关文章