linux中配置Nginx 拒绝代理访问

先大概说说简单的结构…前端一个Nginx反向代理,后端一个Nginx instance app for PHP…实际上就是个Discuz,之前面对CC攻击都是预警脚本或者走CDN,但是这次攻击者不再打流量,而是针对数据库请求页面进行攻击,如search操作…帖子ID F5等..从日志分析来看是从3个URL着手攻击的,当时使用Nginx 匹配$query_string 来return 503…不过会导致页面不能访问,所以想到这么一个折中的办法。

首先你看一段代理请求的日志:

##通过分析,在后端发现其代理访问过来的数据都是两个IP的,默认情况下直接访问获取真实IP,其IP只有一个,而通过手机 3G4G上网则是2个IP,不过有匿名IP的话,到服务器则只有一个IP,这种就不太好判断了...

[root@ipython conf]# tail -f /var/log/nginx/logs/access.log | grep ahtax

120.193.47.34 - - [26/Sep/2014:23:34:44 +0800] "GET /ahtax/index.html HTTP/1.0" 503 1290 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36" "10.129.1.254, 120.193.47.34"

使用PHP分析下访问时的_SERVER变量

代码如下

[root@ipython conf]# cat /%path%/self_.php
<?php

if ($_SERVER["HTTP_X_FORWARDED_FOR"]!="")
{
$user_ip=$_SERVER["HTTP_X_FORWARDED_FOR"];
}elseif($_SERVER["HTTP_X_REAL_IP"]!=""){
$user_ip=$_SERVER["HTTP_X_REAL_IP"];
}else{
$user_ip=$_SERVER["REMOTE_ADDR"];
}

echo $user_ip."<br />";

foreach($_SERVER as $key=>$value)
echo $key."\t"."$value"."<br />";

?>

通过浏览器访问确认相关参数



有了这个特征就很好判断了….

首先需要有一个正则来匹配日志里的两个IP,Nginx正则依赖pcre库...

代码如下

[root@ipython conf]# pcretest
PCRE version 7.8 2008-09-05

re> '^\d+.\d+.\d+.\d+\W\s\d+.\d+.\d+.\d+$'
data> 192.168.1.1, 1.1.1.1
0: 192.168.1.1, 1.1.1.1

Nginx配置文件在location $dir 中加入条件来匹配http_x_forwarded_for:
#proxy
if ($http_x_forwarded_for ~ '^\d+.\d+.\d+.\d+\W\s\d+.\d+.\d+.\d+$'){
return 503;
}

重载配置后就可以限制使用代理IP来访问的网站用户了

(0)

相关推荐

  • linux系统中配置Nginx 拒绝代理访问指定IP的方法

    先大概说说简单的结构…前端一个Nginx反向代理,后端一个Nginx instance app for PHP…实际上就是个Discuz,之前面对CC攻击都是预警脚本或者走CDN,但是这次攻击者不再打 ...

  • Linux VPS上配置Nginx反向代理的方法

    反向代理是什么? 反向代理指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部(或其他)网络上的服务器,并将从服务器上得到的结果返回给Internet上请求连接的客户端。 实现方法: ...

  • 红旗Linux中配置LILO

    在Linux中,用于实现多个操作系统并存的一个重要文件就是LILO。LILO是Linux Loader的缩写,用于系统装载启动过程中的多重选择。如果您安装了多个操作系统,就可以使用LILO在启动过程中 ...

  • 如何在Linux中配置屏幕软键盘

    在Linux中安装好软键盘Florence之后,只需要几个简单的命令就可以加载屏幕键盘使用了,如何安装已经有经验讲述了,,一般默认的情况都是屏幕键盘在窗口的顶部. 操作方法 01 首先按照自己的想法进 ...

  • 如何在 Linux 中配置使用 SSD

    当我在运行 Linux 的计算机上安装我的第一块固态驱动器(SSD)后,我开始探索如何用好它们.SSD 在操作方式上与传统磁性驱动器不同,并且它们需要在软件上另行处理以达到功能优化. 操作方法 01 ...

  • linux配置好了nginx和tomcat访问不了的情况

    有时候配置好了linux下的nginx通过pc访问不了,同样的事情发生在tomca上面 操作方法 01 启动nginx,并查看进程 02 启动tomcat并查看进程 03 关闭防火墙所有的端口对外界访 ...

  • linux如何查看nginx是否启动

    Nginx是一个高性能的反向代理服务器,现在一般作为我们网站或其他Web服务的第一层代理,用户在浏览器请求首先经过的就是Nginx服务. 如果Nginx服务没有启动或异常结束,将会影响Web服务的正常 ...

  • 在Linux系统下使用Docker以及Weave搭建Nginx反向代理

    Hi, 今天我们将会学习如何使用 Weave 和 Docker 搭建 Nginx 的反向代理/负载均衡服务器.Weave 可以创建一个虚拟网络将 Docker 容器彼此连接在一起,支持跨主机部署及自动 ...

  • 在Linux中使用Alpine工具在命令行里访问Gmail的教程

    在这个帖子中,我将为你展示 Linux 命令行的另一个漂亮干练的使用案例:访问 Google 的 Gmail 服务,为此,我们将使用 Alpine,一个基于 ncurses 的多功能命令行邮件客户端( ...