nginx限制请求数和连接数来防御cc攻击

主要通过nginx的http_limit_conn和http_limit_req模块来防御cc攻击。

ngx_http_limit_req_module可以限制单个IP每秒请求数

ngx_http_limit_conn_module可以限制单个IP的连接数

通过限制请求数和连接数能相对有效的防御CC攻击。

1、限制每秒请求数

ngx_http_limit_req_module模块指令通过漏桶原理来限制单位时间内的请求数,一旦单位时间内请求数超过限制,就会返回503错误,需要分别在http和server中配置。

例:

http {
limit_req_zone $binary_remote_addr zone=one:10m rate=5r/s;
...
server {
    ...
    location  / {
        limit_req zone=one burst=2 nodelay;
           }
       }
 }

说明:
$binary_remote_addr:表示客户端IP地址
zone=one:10m:漏桶名字为one,并为这个zone分配10M内存用来存储会话(二进制远程地址),1M的内存可以保存约16000个64字节的记录(可以参考官方文档:http://nginx.org/en/docs/http/ngx_http_limit_req_module.html
rate=5r/s:限制频率每秒5个请求
burst=2:允许超过频率限制请求,但是最多不能超过2个,举例一:第一秒请求1个,第二秒也请求1个,那么第三秒是可以请求5个的。举例二:第一秒请求4个,第二秒超过2个请求直接503。
nodelay:超过的请求不延迟处理,设置后4个请求在一秒内处理。

2、限制IP连接数

ngx_http_limit_conn_modul模块和上面的有些相似,使用起来更简单。

例:

http {
limit_conn_zone $binary_remote_addr zone=addr:10m;
...
server {
    ...
    location / {
        limit_conn addr 5;
            }
       }
 }

说明:limit_conn addr 5;限制同一时间内只允许5个连接,超出的返回503

时间: 2024-10-25 17:46:17

nginx限制请求数和连接数来防御cc攻击的相关文章

Nginx简单防御CC攻击的两种方法

CC攻击可以归为DDoS攻击的一种.他们之间都原理都是一样的,即发送大量的请求数据来导致服务器拒绝服务,是一种连接攻击.CC攻击又可分为代理CC攻击,和肉鸡CC攻击.代理CC攻击是黑客借助代理服务器生成指向受害主机的合法网页请求,实现DOS,和伪装就叫:cc(ChallengeCollapsar).而肉鸡CC攻击是黑客使用CC攻击软件,控制大量肉鸡,发动攻击,相比来后者比前者更难防御.因为肉鸡可以模拟正常用户访问网站的请求.伪造成合法数据包.防御CC攻击可以通过多种方法,禁止网站代理访问,尽量将

使用Discuz!自带参数防御CC攻击以及原理,修改Discuz X 开启防CC攻击后,不影响搜索引擎收录的方法

这部份的工作,以前花的时间太少. 希望能产生一定的作用. http://www.nigesb.com/discuz-cc-attacker-defence.html http://bbs.zb7.com/thread-8644-1-1.html CC攻击确实是很蛋疼的一种攻击方式,Discuz!的配置文件中已经有了一个自带的减缓CC攻击的参数,在配置文件config.inc.php中: 1 $attackevasive = 0;             // 论坛防御级别,可防止大量的非正常请求

阿里云云盾抗下全球最大DDoS攻击(5亿次请求,95万QPS HTTPS CC攻击)

报告披露,去年11月,阿里云安全团队成功防御了黑客对阿里云平台上某互联网金融用户发起的超大规模HTTPS/SSL CC流量攻击,此次攻击也是迄今为止全球有统计数据最大的HTTPS SSL/CC攻击. 作为国内最大的公共云计算服务提供商,大量网站选择阿里云的安全防护,也因此为国内客户防御了当前互联网上主要的攻击行为. 攻击者从11月5日下午14点开始针对网站开始发起攻击,出现两次波峰分别在14点10和晚上7点30左右,总攻击量达到了5亿次请求.   攻击请求QPS变化 通过日志数据分析,攻击特征如

网站前端性能优化减少HTTP请求数

 减少HTTP请求数对seo/seo.html" target="_blank">网站优化来说是非常重要的,过多的HTTP请求不仅会让用户等待时间变长,而且还会加重服务器的负担.减少HTTP请求主要有以下技术手段.     ①图片映射,利用HTML的Map标签将一张图片对应不同链接.     ②CSS sprite,国内又叫CSS精灵,或者融图.是将若干个图片融到一张大图中,以减少HTTP请求.     ③静态资源合并,将css和javascript等静态资源合并到一个

查看Apache并发请求数及其TCP连接状态

[文章作者:张宴 本文版本:v1.1 最后修改:2007.07.27 转载请注明出处:http://blog.s135.com] 这两天搭建了一组Apache服务器,每台服务器4G内存,采用的是prefork模式,一开始设置的连接数太少了,需要较长的时间去响应用户的请求,后来修改了一下Apache 2.0.59的配置文件httpd.conf: # prefork MPM# StartServers: number of server processes to start# MinSpareSer

nginx的请求接收流程(一)

今年我们组计划写一本nginx模块开发以及原理解析方面的书,整本书是以open book的形式在网上会定时的更新,网址为http://tengine.taobao.org/book/index.html.本书分析的nginx源码版本为1.2.0,环境为linux,事件处理模型为epoll,大部分分析流程都基于以上假设.我会负责其中一些章节的编写,所以打算在这里写一系列我负责章节内容相关的文章(主要包括nginx各phase模块的开发,nginx请求的处理流程等).本篇文章主要会介绍nginx中请

高性能WEB开发 为什么要减少请求数,如何减少请求数!_相关技巧

http请求头的数据量 我们先分析下请求头,看看每次请求都带了那些额外的数据.下面是监控的google的请求头 Host www.google.com.hk User-Agent Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 GTBDFff GTB7.0 Accept text/html,application/xhtml+xml,application/xml;q

请求数据传输问题-activity请求数据传给viewpager中的fragment

问题描述 activity请求数据传给viewpager中的fragment 怎么设计在activity中请求数据后把数据传给viewpager中的fragment 并且每次activity请求数据后及时刷新UI?能有代码例子更好 解决方案 activity- (ViewPager)--->Fragment 解决方案二: 可以用: 1.broadcast广播来实现,在activity请求数据成功获取数据处发送广播,在你fragment中接收广播,然后刷新对应UI: 2.用EventBus或者ot

as net-ASP.NET控制webservice请求数

问题描述 ASP.NET控制webservice请求数 用VS.NET做一个wenbservice服务用于客户调用,但是客户同时并发数量太大就会有问题,如何指定某个客户同一时间内请求串数,如果超过这个数量的话,那么就给客户反馈一个友好提示,求各位技术大牛给出出设计思路???