[实战]记一次被不断切换不同IP的刷流量攻击问题的解决

2015-08-09 13:19 栏目:技术开发 查看(37199)

俗话说“人怕出名猪怕壮”,今天我要分享的这个问题其实是源于很久以来的问题渊源,可能很多人都在某个地方看到我们说曾经运营了日IP过万的网站。对,就是那个网站才有了今天问题的出现。为什么这样说呢,因为当初的时候就有某些丧尽天良的人为了达到某种目的对我们发起流量攻击,造成正常用户无法访问。谁知道好多年了只要是以我身份注册的域名上线的网站,就会“享受”同样的待遇,之前我还没在意,而就在最近我发现访问微构网络非常慢,原来发现微构网络中引用的一个资源在那台服务器上,结果就排查了那台服务器。

问题背景

那台服务器为阿里云云服务器,就放了几个平常流量不大的网站,虽然配置只有1核+1GB内存+30GB硬盘+2MB带宽(独享独立IP),但我想给那几个网站用书足够了,这样的配置正常情况下承受2000日ip的访问量是几乎没有问题,但那几个网站还没达到这个量。于是我在阿里云后台看了一下,比如最近24小时的统计,CPU是正常的,唯独带宽几乎没沾满。

efe

 

问题发现

然后我个人名下的两个网站的CNZZ统计数据,看了我就惊呆了。这里要感谢那个攻击者让我的这个网站重新回到曾经的“辉煌”——日UV(独立访客)过万,当然玩笑归玩笑,这样的数据一看就是不正常的。

SFS

很明显这里UV和IP的值相差太大了,而且PV与IP或者UV的比值也太小了,一般情况下会是3左右,而如果用户粘度高的网站可能这个比值会更大,如果真的一个网站的真实数据是这样子,那就算有流量也是挺失败的。我们来看下流量访问明细,下面截取其中的某一小段的:

sfew

 

大家想一想,如果是你正常访问一个网站,你会不断重复刷新十几次甚至几十次网站的首页么,也就是说上图中的这个IP对应的访客肯定不是一个人,而是一个由程序控制的“机器”,而且我发现其中有不同的这样的IP来访问。显然,这里的一切是由攻击者造成的,而且是切换不同的IP来进行的。

问题分析

看到这里的问题我们似乎变得无能为力了,针对这个问题我也提交了工单到阿里云去,对方售后工程师的回复是:“请控制网站的访问,禁止异常IP”,我的天,他这个回答是做着说话不腰疼呀。我一个网站要在运行,我是要给我的正常用户看的,否则直接关闭不就得了;怎么来禁止IP,人家的IP是几百上千甚至更多,而且不断有新的IP出现,也毫无规律,这怎么屏蔽。

就在这个时候我几乎差点要把网站关闭算了,但我在CNZZ后台发现了一个细节,后面在日志中也发现了。那就是:攻击者使用的软件中内嵌的浏览器为IE6版本浏览器,而且一般的这种软件只内置了一种浏览器;再者这个攻击者肯定是使用别人做的软件,也就是他不太可能可以修改这个软件。请注意这里有几个非常重要的关键词:IE6、一个版本的浏览器、攻击者几乎不能修改。而就是这几个关键词可以说成了问题解决的关键了。

dddxd

问题解决

于是我就有了一个不是太完美的想法:禁止IE6访问!实际上如果顺利,我觉得从某种角度来说这是一个完美的方案,因为我的网站IE6的正常访客几乎没有,就算其他的网站也没太多,很多网站都放弃了对IE6的兼容了。但问题是怎么解决呢?

很多人可能想到的是HTML的if 语句或者JS之类的,我承认我也首先想到的是这两种方式,而且也用了,结果肯定是不行的,为什么?因为这都是客户端的东西,也就是说客户已经把资源给取到了,我们服务器上的资源还是在消耗着。

所谓失败是成功他妈,客户端控制不行(其实想到这个问题的时候我都觉得自己傻逼了),那我是不是可以从服务器端进行控制呢?我可以通过服务器端来判断访问设备的UA,也就是需要用到HTTP_USER_AGENT(百度百科),我的服务用的WEB服务器是Apache,于是乎就在.htaccess中加上了下面的代码:

RewriteCond %{HTTP_USER_AGENT} ^.*MSIE\s6.*$ [NC]

RewriteRule ^.* – [F,L]

当然实际上可以根据这个方式我们可以禁止更多的类型,当然那也就意味着影响“合法”的用这些设备访问你网站的用户。因此这确实不是太完美,好在这些软件几乎都是内嵌了IE6。到这里,我们发现带宽占用明显开始下降了:

sds

结束语

正所谓“道高一尺魔高一丈”,这里攻击者是用的IE6,而且我们也愿意放弃IE6,因此问题解决似乎比较顺利。但是如果攻击者使用的是随机版本的浏览器的软件来攻击,或者说有众多的攻击者,那样的问题我想除了让服务器的资源更充足外几乎无解了。

与我们的项目经理联系
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流

转载请注明出处:[实战]记一次被不断切换不同IP的刷流量攻击问题的解决 - 微构网络
分享: