我一直在使用Varnishcaching服务器,我的网页闪电般快,在Google的Pagespeed和100 @ Pingdom中获得了97分。 我使用了Varnish(代理到nginx),NGINX(只有本地可用,代理* .php到php-fpm(但我想转移到HipHop PHP编译器))。
所以当我的页面很快,只有〜500 / 1GB的Ram被使用时,我请我的一个朋友对这台机器的HTTP服务器进行压力testing。 我configuration了以下Anti-DDoS机制:
除了当前正在播放的APC供电歌曲外,网页上没有任何dynamic数据,并且完全不需要会话。
所以现在对我的问题,我的朋友从他被授权使用的一台机器启动了DoS攻击,而且我的服务器速度非常快。 我很担心,所以我使用串口控制台,并检查清漆日志,显示:会话开始会话结束
而这一直在重复。 我提前访问了我的控制台,并禁止了IP,我的网页又回来了。
现在因为不需要会话,我需要VCL语法来禁止所有会话,除了subdir / user中的脚本。
IIRC清漆使用线程处理连接,并configuration了一个限制。 所以攻击者所要做的就是打开200个连接到caching来阻塞每个线程(另请参阅slowloris )。 另一方面,nginx(它将很高兴地作为caching反向代理运行)是一个基于事件的服务器; 上下文切换是由需求驱动的 – 它只能受限于它可以打开的套接字的数量,因此更多地抵抗这种攻击。
(清漆仍然比前叉更好,甚至工人阿帕奇在转变请求没有大的每个请求的足迹,因此你会看到很多人在谈论使用它来减轻这种DOS攻击)。
您可以使用iptables和/或基于QOS的路由来减lessnetworking层的DOS攻击,但是我build议先使用nginx作为代理。
您可以安装像fail2ban或OSSEC(我最喜欢的)的工具来自动阻止这种攻击。 它不能让你免受欺骗性的IP攻击(实际上很难对付这些攻击),但这是一个开始。