测试
我会简单的告诉你如何配置Nginx的限制请求模块并且它是如何保护你的网站,防止你被攻击与DDOS或是其他基于HTTP的拒绝服务攻击。
这个测试中,我将样本页在保存在Blitz.io(现在是免费服务)命名为about.html,用于测试limit_req指令.
首先,我在Blitz上使用下面的指令,用来发起1075个并发请求并且持续一分钟,响应超时设置为2分钟,区域为加州,同时设置了除掉状态200以外的其他状态全部为异常状态,甚至是503都被认为是没有成功.
-p 1-1075:60 --status 200 -T 2000 -r california http://kbeezie.com/about.html
还不算坏,对不对? 但如果这是一个php文档. 很可能有用户会造成PHP进程的502/504状态,让服务器一直崩溃或无响应. 尤其是你使用了没有任何保护的VPS或者其他廉价服务器,故障率会更高。(原文广告,此处屏蔽)
当然你可以使用缓存或其他工具来提高服务器性能与响应能力, 就比如你使用WordPress你肯定要使用wordpress caching plugin. da For those type of people we can use the limit request module.
在Nginx中我们创建一个区域http { },我叫他blitz设置每秒5次请求, 最大容纳数据量为10MB.我使用$binary_remote_addr当作session变量 让你自己比$remote_addr的正常访客可以访问大于10MB的空间.
limit_req_zone $binary_remote_addr zone=blitz:10m rate=5r/s;
然周在服务器中定义上这些规则:
location = /about.html { limit_req zone=blitz nodelay; }
然后重新载入Nginx配置,看一下效果:
你会发现现在大于只有285人可以访问到服务器,每秒请求数为4.75 ,没有超过我们设置的5次每秒,检查日志你会发现没有访问到的请求都是HTTP 503,访问到的都是HTTP 200.
使用这样的设置对于想限制地区访问是很有帮助的,它也可以应用在所有的php请求上.
PHP 应用请求限制
如果你想限制所有的PHP应用限制,你可以这样做:
location ~ \.php { limit_req zone=flood; include php_params.conf; fastcgi_pass unix:/tmp/php5-fpm.sock; }
它可以帮你玩意些设置项像加速或减速,以应对突发或无延时需求. 配置项详情,猛击这里: HttpLimitReqModule.
注:
你可能注意到上面的图表测试了1075个用户请求,这里有个误导,因为所有的访问请求都来自与位于加州的同一个IP(50.18.0.223).
我很难实现一个真实的高流量网络或者DDOS (分布式拒绝服务攻击).这也就是为什么我们访问成功的用户的数量跟IP不是很大. 服务器负载也会影响测试用户的访问数或者地区. 使用免费版本你可以最多并发访问到的用户数是50个. 当然你可以花每天$49美刀让1000个用户访问你的网站.
如果你有足够的内存跟带宽,用单一IP地址测试是很容易的. 用这个工具就可以实现: 高并发量, ab, openload等等. 只不过是在终端界面,没有UI而已.
当然你要自己测试, 记住要使用status flag,因为Blitz会在5秒左右后响应访问请求.
更好的替换方案
这里不会深入讲解更多细节, 如果你认真的想阻止攻击你服务器的DDOS或multi-service attack,还有其他很棒的软件工具像 iptables (linux), pf (packet filter for BSD) , 或者你的服务器提供硬件的话,你可以使用你的硬件防火墙 . 上述的限制模块只会阻止通过HTTP请求过来的洪水攻击,它不会阻止ping包洪水攻击或者其他的漏洞,对于这些情况你可以关闭不需要的服务和不需要的端口,以防止别人的突破.
举个例子,我的服务器对外网公开的端口只有HTTP/HTTPS和SSH. 像MySQL这些服务之绑定本地连接. 也可以将一些通用服务设置成不常用的端口上,这样就不会被嗅探器(iptables/pf会对这种情况有帮助).
本文向大家介绍Nginx防止流量攻击的配置详解,包括了Nginx防止流量攻击的配置详解的使用技巧和注意事项,需要的朋友参考一下 使用场景 最近在工作中遇到一个问题,项目中报告查询系统负载均衡集群相关配置已经完成,两种实现方式分别是基于Ehcache和Redis的session管理策略。 大家都知道服务器资源有限的,但是客户端来的请求是无限的(不排除恶意攻击), 为了保证大部分的请求能够正常响应,不
本文向大家介绍Nginx防御DDOS攻击的配置方法教程,包括了Nginx防御DDOS攻击的配置方法教程的使用技巧和注意事项,需要的朋友参考一下 前言 Nginx是一款轻量级的Web服务器,由俄罗斯的程序设计师Igor Sysoev所开发,最初供俄国大型的入口网站及搜寻引Rambler使用。 其特点是占有内存少,并发能力强,事实上Nginx的并发能力确实在同类型的网站服务器中表现较好。 防御DDOS
本文向大家介绍Nginx中防止SQL注入攻击的相关配置介绍,包括了Nginx中防止SQL注入攻击的相关配置介绍的使用技巧和注意事项,需要的朋友参考一下 防止sql注入最好的办法是对于提交后台的所有数据都进行过滤转义。 对于简单的情况,比如包含单引号' , 分号;, <, >, 等字符可通过rewrite直接重订向到404页面来避免。 用rewrite有个前提需要知道,一般用rewrite进行正则匹
在本节中,我们将讨论如何对服务器端进行攻击。服务器端攻击不需要用户交互。这些攻击可以与Web服务器一起使用。我们也可以将它们用在人们每天使用的普通计算机上。为了进行这些攻击,我们将针对一个Metasploitable设备。我们将在Melasploitable设备上使用它的原因是,如果我们的目标使用个人计算机,并且如果它们与我们不在同一网络上,那么即使我们设法获取其IP地址,其IP地址同在于路由器的
本文向大家介绍Windows服务器应对高并发和DDOS攻击的配置方法,包括了Windows服务器应对高并发和DDOS攻击的配置方法的使用技巧和注意事项,需要的朋友参考一下 windows系统本身就有很多机制可以用来提高性能和安全,其中有不少可以用来应对高并发请求和DDOS攻击的情况。 通过以下配置可以改善windows服务器性能: 一、应对高并发请求: 1、TCP连接延迟等待时间 TcpTimed
本文向大家介绍如何防止XSS攻击?相关面试题,主要包含被问及如何防止XSS攻击?时的应答技巧和注意事项,需要的朋友参考一下 (1) 将前端输出数据都进行转义 (2) 将输出的字符串中的\反斜杠进行转义 (3) 从url中获取的信息,防止方法是由后端获取,在前端转义后再行输出 (4) 使用cookie的HttpOnly属性,保护好cookie 详细参见:http://blog.csdn.net/fe