7. 屏蔽特定的请求
可以设置 Nginx、Nginx Plus 屏蔽一些类型的请求:
-
针对特定 URL 的请求
针对不是常见的 User-Agent 的请求
针对 Referer 头中包含可以联想到攻击的值的请求
针对其他请求头中包含可以联想到攻击的值的请求
比如,如果你判定攻击是针对一个特定的 URL:/foo.php,我们就可以屏蔽到这个页面的请求:
location /foo.php {
deny all;
}
或者你判定攻击请求的 User-Agent 中包含 foo 或 bar,我们也可以屏蔽这些请求:
location / {
if ($http_user_agent ~* foo|bar) {
return 403;
}
...
}
http_name 变量引用一个请求头,上述例子中是 User-Agent 头。可以针对其他的 http 头使用类似的方法来识别攻击。
8. 限制到后端服务器的连接数
一个 Nginx、Nginx Plus 实例可以处理比后端服务器多的多的并发请求。在 Nginx Plus 中,你可以限制到每一个后端服务器的连接数,比如可以设置 Nginx Plus 与 website upstream 中的每个后端服务器建立的连接数不得超过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;
}
`max_conns` 参数可以针对每一个后端服务器设置 Nginx Plus 可以与之建立的最大连接数。`queue` 命令设置了当每个后端服务器都达到最大连接数后的队列大小,`timeout` 参数指定了请求在队列中的保留时间。
9. 处理特定类型的攻击
有一种攻击是发送包含特别大的值的请求头,引起服务器端缓冲区溢出。Nginx、Nginx Plus 针对这种攻击类型的防御,可以参考
[Using NGINX and NGINX Plus to Protect Against CVE-2015-1635]
http://nginx.com/blog/nginx-protect-cve-2015-1635/?_ga=1.14368116.2137319792.1439284699)
10. 优化Nginx性能
DDOS 攻击通常会带来高的负载压力,可以通过一些调优参数,提高 Nginx、Nginx Plus 处理性能,硬抗 DDOS 攻击,详细参考:
[Tuning NGINX for Performance]
http://nginx.com/blog/tuning-nginx/?_ga=1.48422373.2137319792.1439284699
三、识别DDOS攻击
到目前为止,我们都是集中在如何是用 Nginx、Nginx Plus 来减轻 DDOS 攻击带来的影响。如何才能让 Nginx、Nginx Plus 帮助我们识别 DDOS 攻击呢?`Nginx Plus Status module` 提供了到后端服务器流量的详细统计,可以用来识别异常的流量。Nginx Plus 提供一个当前服务状态的仪表盘页面,同时也可以在自定义系统或其他第三方系统中通过 API 的方式获取这些统计信息,并根据历史趋势分析识别非正常的流量进而发出告警。
四、总结








