您当前的位置:首页 > 电脑百科 > 安全防护 > DDOS

使用Nginx、Nginx Plus防止服务器DDoS攻击

时间:2019-09-11 09:05:06  来源:  作者:

分布式拒绝服务攻击(DDoS)指的是通过多台机器向一个服务或者网站发送大量看似合法的数据包使其网络阻塞、资源耗尽从而不能为正常用户提供正常服务的攻击手段。随着互联网带宽的增加和相关工具的不断发布,这种攻击的实施难度越来越低,有大量IDC托管机房、商业站点、游戏服务商一直饱受DDoS攻击的困扰,那么如何缓解甚至解决DDoS呢?最近https://www.Nginx.com/blog/author/rick/在Nginx的官方博客上发表了一篇文章,介绍了https://www.nginx.com/blog/mitigating-ddos-attacks-with-nginx-and-nginx-plus/。

Rick Nelson首先介绍了DDoS攻击的一些特点,例如攻击的流量通常来源于一些固定的IP地址,每一个IP地址会创建比真实用户多得多的连接和请求;同时由于流量全部是由机器产生的,其速率要比人类用户高的多。此外,进行攻击的机器其User-Agent头也不是标准的值,Referer头有时也会被设置成能够与攻击关联起来的值。针对这些特点,Rick Nelson认为Nginx和Nginx Plus有很多能够通过调节或控制流量来应对或者减轻DDoS攻击的特性。

限制请求率将Nginx和Nginx Plus可接受的入站请求率限制为某个适合真实用户的值。例如,通过下面的配置让一个真正的用户每两秒钟才能访问一次登录页面:

limit_req_zone $binary_remote_addr zone=one:10m rate=30r/m;
server {
 ...
 location /login.html {
 limit_req zone=one;
 ...
 }
}

在该配置中, limit_req_zone指令配置了一个名为 one的共享内存 zone用来存储$binary_remote_addr的请求状态,location块中/login.html的 limit_req指令引用了共享内存zone。

限制连接的数量将某个客户端IP地址所能打开的连接数限制为真实用户的合理值。例如,限制每一个IP对网站/store部分打开的连接数不超过10个:

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

该配置中, limit_conn_zone指令配置了一个名为 addr的共享内存 zone用来存储 $binary_remote_addr的请求,location块中/store/的 limit_conn指令引用了共享内存zone,并将最大连接数设置为10.

关闭慢连接关闭那些一直保持打开同时写数据又特别频繁的连接,因为它们会降低服务器接受新连接的能力。Slowloris就是这种类型的攻击。对此,可以通过 client_body_timeout和client_header_timeout指令控制请求体或者请求头的超时时间,例如,通过下面的配置将等待时间控制在5s之内:

server {
 client_body_timeout 5s;
 client_header_timeout 5s;
 ...
}

设置IP黑名单如果能识别攻击者所使用的客户端IP地址,那么通过 deny指令将其屏蔽,让Nginx和Nginx Plus拒绝来自这些地址的连接或请求。例如,通过下面的指令拒绝来自123.123.123.3、123.123.123.5和123.123.123.7的请求:

location / {
 deny 123.123.123.3;
 deny 123.123.123.5;
 deny 123.123.123.7;
 ...
}

设置IP白名单如果允许访问的IP地址比较固定,那么通过 allow和 deny指令让网站或者应用程序只接受来自于某个IP地址或者某个IP地址段的请求。例如,通过下面的指令将访问限制为本地网络的一个IP段:

location / {
 allow 192.168.1.0/24;
 deny all;
 ...
}

通过缓存削减流量峰值通过启用缓存并设置某些缓存参数让Nginx和Nginx Plus吸收攻击所产生的大部分流量峰值。例如,通过 proxy_cache_use_stale指令的 updating参数告诉Nginx何时需要更新过期的缓存对象,避免因重复发送更新请求对后端服务器产生压力。另外, proxy_cache_key指令定义的键通常会包含嵌入的变量,例如默认的键 $scheme$proxy_host$request_uri包含了三个变量,如果它包含 $query_string变量,那么攻击者可以通过发送随机的 query_string值来耗尽缓存,因此,如果没有特别原因,不要在该键中使用 $query_string变量。

阻塞请求配置Nginx和Nginx Plus阻塞以下类型的请求:

  • 以某个特定URL为目标的请求
  • User-Agent头中的值不在正常客户端范围之内的请求
  • Referer头中的值能够与攻击关联起来的请求
  • 其他头中存在能够与攻击关联在一起的值的请求

例如,通过下面的配置阻塞以/foo.php为目标的攻击:

location /foo.php {
 deny all;
}

或者通过下面的配置阻塞已识别出的User-Agent头的值是foo或者bar的DDoS攻击:

location / {
 if ($http_user_agent ~* foo|bar) {
 return 403;
 }
 ...
}

限制对后端服务器的连接数通常Nginx和Nginx Plus实例能够处理比后端服务器多得多的连接数,因此可以通过Nginx Plus限制到每一个后端服务器的连接数。例如,通过下面的配置限制Nginx Plus和每一台后端服务器之间建立的连接数不多于200个:

upstream website {
 server 192.168.100.1:80 max_conns=200;
 server 192.168.100.2:80 max_conns=200;
 queue 10 timeout=30s;
}

另外,Rick Nelson还提到了如何http://nginx.com/blog/nginx-protect-cve-2015-1635/?_ga=1.144784956.967276342.1451228467和http://nginx.com/blog/tuning-nginx/?_ga=1.87178896.967276342.1451228467,以及http://nginx.org/en/docs/http/ngx_http_status_module.html?_ga=1.187642144.967276342.1451228467发现异常的流量模式,定位DDoS攻击。



Tags:Nginx DDoS   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
分布式拒绝服务攻击(DDoS)指的是通过多台机器向一个服务或者网站发送大量看似合法的数据包使其网络阻塞、资源耗尽从而不能为正常用户提供正常服务的攻击手段。随着互联网带宽...【详细内容】
2019-09-11  Tags: Nginx DDoS  点击:(179)  评论:(0)  加入收藏
▌简易百科推荐
前言传统的 DDOS 防御通常使用“硬抗”的方式,导致开销很大,而且有时效果并不好。例如使用 DNS 切换故障 IP 的方案,由于域名会受到缓存等因素的影响通常有分钟级延时,前端难以...【详细内容】
2021-12-21  网盾科技    Tags:DDOS   点击:(19)  评论:(0)  加入收藏
DDOS简介DDOS又称为分布式拒绝服务,全称是Distributed Denial of Service。DDOS本是利用合理的请求造成资源过载,导致服务不可用,从而造成服务器拒绝正常流量服务。就如酒店里...【详细内容】
2021-08-20  KaliMa    Tags:DDOS攻击   点击:(69)  评论:(0)  加入收藏
工具https://github.com/poornigga/tfn2k.githttps://github.com/cxueqin/falcon.git //tfn2k web版本https://github.com/GinjaChris/pentmenu.githttps://github.com/Of...【详细内容】
2021-08-04  安全客小安    Tags:DDoS   点击:(69)  评论:(0)  加入收藏
死亡之 Ping 攻击是一种拒绝服务 (DoS) 攻击,攻击者旨在通过发送大于最大允许大小的数据包来破坏目标计算机,从而导致目标计算机冻结或崩溃。原始的死亡之 Ping 攻击如今并不...【详细内容】
2021-04-15  埃文  今日头条  Tags:Ping 攻击   点击:(183)  评论:(0)  加入收藏
摘要: 发送大量的数据包消耗目标主机资源,使其无法正常工作。1.前言:DOS攻击原理:发送大量的数据包消耗目标主机资源,使其无法正常工作。DNS放大攻击的原理:伪造DNS数据包,向DNS服...【详细内容】
2021-04-15  安界  今日头条  Tags:DDoS   点击:(219)  评论:(0)  加入收藏
国内外有很多网站会遇到CC攻击这种说简单也简单说不简单也不简单的攻击类型,CC攻击很不利于一个网站服务器的运行,因此很多技术人员针对这种攻击手段来研发应对手段。不过,目前...【详细内容】
2021-03-19      Tags:CC攻击   点击:(157)  评论:(0)  加入收藏
根据Google最新公布的“Chrome中的HTTPS加密情况”统计数据表明,2015年至2020年通过HTTPS加载的业务占比逐步升高,截至2020年7月,在Chrome上加密的比例已达到96%,越来越多Web业...【详细内容】
2021-01-22      Tags:恶意流量   点击:(159)  评论:(0)  加入收藏
随着如今DDoS攻击技术的不断成熟,关于防DDoS攻击的安全防护措施你知道多少?只有清楚的了解DDoS攻击的定义和原理和你有可能或者将会面临什么样的攻击,才更好的不断加强防护,才能...【详细内容】
2021-01-22      Tags:DDoS攻击   点击:(201)  评论:(0)  加入收藏
上网的时候,我们总能或多或少地听到一些新闻,某某网站又遭遇DDoS攻击了,十几二十个小时,网站都没办法打开。似乎每一次DDoS的出现,都有大新闻。...【详细内容】
2021-01-19      Tags:DDoS攻击   点击:(141)  评论:(0)  加入收藏
当我在 Heroku 管理安全团队时,我经常做一个噩梦:我的 PagerDuty 警报响了,提醒我发生了安全事故。在梦中,我盯着手机并意识到“不,大事不好”——接着,我就被惊醒了。...【详细内容】
2020-12-07      Tags:DoS攻击   点击:(143)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条