我有一个VPS运行Ngix,目前托管了几个网站。如您所知,VPS资源少,应该由客户端执行安全措施。
我刚刚注意到很多压力工具都存在,这些工具可能会导致out服务器崩溃,或者服务器会吃掉所有的资源,而这些资源最终会被挂起。我的windows电脑里有LoadUI。甚至还有类似的在线服务,比如LoadImpact.com。
它甚至不需要同时运行10或数千个工具,甚至只有一个孩子可以在这些工具中输入域名,并通过大量并发连接运行测试,并充分利用服务器带宽、硬件资源等。
我想知道我该如何防止这些洪水袭击?有什么事情应该由Iptable来处理吗?还是Nginx?
发布于 2012-05-10 22:13:24
您已经在运行nginx了,这是一个很好的开始--基于事件的服务器对sloloris类型的攻击具有更强的抵抗力。
这仍然是一个好主意,以防止DOS攻击尽可能远离您的应用程序。下一步是iptable。
您需要考虑如何对攻击进行分类,并将它们与实际通信量区分开来--创建新协议的速度是一个非常好的指标--您可以配置iptable来限制每个ip上的新连接:
iptables -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent --set
iptables -A INPUT -p tcp --dport 80 -i eth0 -m state --state NEW -m recent \
--update --seconds 30 --hitcount 80 -j DROP(当速率每30秒上升到80以上时,就会删除新的连接请求)
可以限制每个ip地址的并发连接数:
iptables -A INPUT -p tcp --syn --dport 80 -m connlimit \
--connlimit-above 20 -j REJECT --reject-with tcp-reset这也是一个好主意,限制带宽,取决于您的流量配置文件,至少10%的可用带宽-这是使用tc而不是iptables。
然后,对于通过的连接,HTTP请求中可能有识别攻击的特征(引用者、URL请求、用户代理、接受语言.)你现在为这些选择的具体值并不重要--你只需要确保你已经准备好了机器,在攻击的第一个迹象下你就可以快速地改变参数。虽然您可以在log服务器上处理请求,但更好的解决方案是使用iptables fail2ban是工具阻止来自远程IP地址的访问,以便将日志数据桥接到iptables配置。
当然,对于大规模的DDOS,这并不能解决攻击者用服务器忽略的数据包填充internet管道的问题--因为您需要与上游提供商交谈。
发布于 2012-05-10 21:46:20
我建议研究的2件事是iptables、速率限制和fail2ban。Fail2ban会给你一些很好的自动拦截IP,这些IP对你的服务器有太多的打击,并且允许你定制你希望他们被禁止的时间。Iptables速率限制将允许您控制所有类型的流量进入您的服务器。我找到了一篇不错的文章,这里。然而,如果你做一个基本的谷歌搜索,你会看到更多。
编辑:虽然我没有使用nginx的个人经验,但我确实看到它有一个HttpLimitReqModule,您也应该了解它。
https://serverfault.com/questions/388073
复制相似问题