详解如何使用Nginx来查看高频访问IP并封禁IP - 汇站网

详解如何使用Nginx来查看高频访问IP并封禁IP

2023-11-12 0 220

正文:

如何设置能限制某个IP某一时间段的访问次数是一个让人头疼的问题,特别面对恶意的DDoS攻击的时候。其中CC攻击(Challenge Collapsar)是DDoS(分布式拒绝服务)的一种,也是一种常见的网站攻击方法,攻击者通过代理服务器或者肉鸡向受害主机不停地发大量数据包,造成对方服务器资源耗尽,一直到宕机崩溃。

详解如何使用Nginx来查看高频访问IP并封禁IP
为了防止CC攻击,可以使用Nginx的HttpLimitReqModule和HttpLimitZoneModule来限制IP在同一时间段的访问次数。

HttpLimitReqModule是一个用来限制单位时间内连接数的模块,可以通过配置limit_req_zone和limit_req指令来实现限制。当并发连接超过指定数量时,服务器会返回503错误。

HttpLimitConnModule则是用来限制单个IP的并发连接数,可以通过配置limit_zone和limit_conn指令来实现限制。

这两个模块的区别在于,HttpLimitReqModule是对一段时间内的连接数进行限制,而HttpLimitConnModule是对同一时刻的连接数进行限制。

下面是一个使用HttpLimitReqModule限制某一段时间内同一IP访问次数的实例:

 http{
  ...
  #定义一个名为allips的limit_req_zone用来存储session,大小是10M内存,
  #以$binary_remote_addr 为key,限制平均每秒的请求为20个,
  #1M能存储16000个状态,rete的值必须为整数,
  #如果限制两秒钟一个请求,可以设置成30r/m
  limit_req_zone $binary_remote_addr zone=allips:10m rate=20r/s;
  ...
  server{
    ...
    location {
      ...
      #限制每ip每秒不超过20个请求,漏桶数burst为5
      #brust的意思就是,如果第1秒、2,3,4秒请求为19个,
      #第5秒的请求为25个是被允许的。
      #但是如果你第1秒就25个请求,第2秒超过20的请求返回503错误。
      #nodelay,如果不设置该选项,严格使用平均速率限制请求数,
      #第1秒25个请求时,5个请求放到第2秒执行,
      #设置nodelay,25个请求将在第1秒执行。
      limit_req zone=allips burst=5 nodelay;
      ...
    }
    ...
  }
  ...
}  

HttpLimitZoneModule 是一个用于限制并发连接数的模块实例

limit_zone 只能在 http 作用域中定义,而 limit_conn 可以在 http、server 和 location 作用域中定义。

 http{
  ...
  #定义一个名为one的limit_zone,大小10M内存来存储session,
  #以$binary_remote_addr 为key
  #nginx 1.18以后用limit_conn_zone替换了limit_conn
  #且只能放在http作用域
  limit_conn_zone  one $binary_remote_addr 10m;
  ...
  server{
    ...
    location {
      ...
      limit_conn one 20;     #连接数限制
      #带宽限制,对单个连接限数,如果一个ip两个连接,就是500x2k
      limit_rate 500k;     
      ...
    }
    ...
  }
  ...
}  

服务器全局限IP

  #vi nginx.conf
  allow 10.57.22.172;
  deny all; 

指定目录的IP访问限制

在nginx的配置文件中,可以使用正则表达式来限制指定目录的IP访问。具体实现如下:

 ```
server {
    listen 80;
    server_name xxx.com;

    location /test1/ {
        allow 192.168.1.101;
        deny all;
    }

    location /test2/ {
        allow 192.168.1.101;
        deny all;
    }

    location / {
        # 其他目录的php程序,所有ip地址均可以访问
        # 这里可以根据实际需求进行配置
    }
}
```  

注意事项:

1. 注意事项一:一定要在deny指令中加入一个IP地址,否则会直接跳转到403页面,不再执行后续操作。如果403页面是同一域名下的默认页,会导致无限循环访问。
2. 注意事项二:允许访问的IP段需要按照从小到大的顺序排列。例如,只有在127.0.0.0/24之后才能是10.10.0.0/16。其中,24表示子网掩码为255.255.255.0,16表示子网掩码为255.255.0.0,8表示子网掩码为255.0.0.0。
3. 注意事项三:在配置文件的结尾处添加deny all指令,表示除了上述允许访问的IP段之外,其他所有IP都被禁止访问。

deny 192.168.1.1;           allow 127.0.0.0/24;           allo w 192.168.0.0/16;           allow 10.10.0.0/16;           deny all;

转载请注明:汇站网 » 详解如何使用Nginx来查看高频访问IP并封禁IP

收藏 (0)

微信扫一扫

支付宝扫一扫

点赞 (0)

感谢您的来访,获取更多精彩资源请收藏本站。

本站声明

本资源仅用于个人学习和研究使用,禁止用于任何商业环境!

 1.  本网站名称:汇站网
 2.  本站永久网址:https://www.huizhanii.com/
 3.  本站所有资源来源于网友投稿和高价购买,所有资源仅对编程人员及源代码爱好者开放下载做参考和研究及学习,本站不提供任何技术服务!
 4.  未经原版权作者许可,禁止用于任何商业环境,任何人不得擅作它用,下载者不得用于违反国家法律,否则发生的一切法律后果自行承担!
 5.  为尊重作者版权,请在下载24小时内删除!请购买原版授权作品,支持你喜欢的作者,谢谢!
 6.  若资源侵犯了您的合法权益, 请持您的版权证书和相关原作品信息来信通知我们请来信     通知我们我们会及时删除,给您带来的不便,我们深表歉意!
 7.  如下载链接失效、广告或者压缩包问题请联系站长处理!
 8.  如果你也有好源码或者教程,可以发布到网站,分享有金币奖励和额外收入!
 9.  本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
 10.  因源码具有可复制性,一经赞助 ,不得以任何形式退款。
 11.  更多详情请点击查看

汇站网 Linux 详解如何使用Nginx来查看高频访问IP并封禁IP https://www.huizhanii.com/33747.html

汇站

站长资源下载中心-找源码上汇站

常见问题
  • 如果付款后没有弹出下载页面,多刷新几下,有问题联系客服!
查看详情
  • 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。
查看详情

相关文章

发表评论
暂无评论
  随机评论 表情开关按钮图片
表情表情表情表情表情表情表情表情表情表情表情表情表情表情表情表情表情表情表情表情表情表情表情表情表情表情表情表情表情表情表情表情表情表情表情表情表情表情表情
登录后评论
联系官方客服

为您解决烦忧 - 24小时在线 专业服务

(汇站网)一个专注站长资源的平台网站,提供最新的网站模板和整站源码,内容包含各类精品网页模板,企业网站模板,网站模板,DIV+CSS模板,织梦模板,帝国cms模板,discuz模板,wordpress模板,个人博客论坛模板,上千种免费网页模板下载尽在汇站网.找源码上汇站.huizhanii.com