僵尸网络攻击:有点类似于DDOS攻击了,从WEB应用程序层面上已经无法防御。
代理攻击:CC攻击者一般会操作一批代理服务器,比方说100个代理,然后每个代理同时发出10个请求,这样WEB服务器同时收到1000个并发请求的,并且在发出请求后,立刻断掉与代理的连接,避免代理返回的数据将本身的带宽堵死,而不能发动再次请求,这时WEB服务器会将响应这些请求的进程进行队列,数据库服务器也同样如此,这样一来,正常请求将会被排在很后被处理,就象本来你去食堂吃饭时,一般只有不到十个人在排队,今天前面却插了一千个人,那么轮到你的机会就很小很小了,这时就出现页面打开极其缓慢或者白屏。
3
攻击者的升级
一般我们遇到的情况,就是几个IP,不断的访问网站请求资源。
之前CC攻击的手段是攻击网站的任何一个页面,后来有了统计工具,攻击的时候IP就会被记录下来,于是做坏事的人就换了方法——去登陆页面或者管理后台这样没有统计代码的地方搞破坏。但是新的PHP代码解决方案出来了,通过SESSION来记录刷新的次数,然后针对超过在规定时间内访问次数的IP,进行页面重定向;只要是页面总会有代码,所以这个PHP的解决方案在当时也是很有效的。
然而事情并没有到此结束!最近我看了系统日志,才发现,攻击者开始不对页面进行CC攻击了,而是对着站点的favicon.ico进行CC攻击,这么个小文件几乎每个网站都有。而且这样的文件,根本防不胜防了。即使你用了诸如七牛CDN之类的CDN,访问源站的地址还是会访问到的。
升级版的解决方案
对于这样的攻击,我是无计可施了,我百度和谷歌了相应的解决方案,找到了以下几个比较靠谱的手法,供大家参考:
4
域名解析
暂时暂停一下域名的解析:本方法适合域名真实IP还没有暴露的朋友们,如果CC攻击者是通过域名攻击你的网站的,那么我们暂时让他们攻击失效,一会儿就会好起来。
或者你也可以把自己的域名解析到127.0.0.1上,让攻击你的CC狂魔来反攻击自己的服务器。
5
防火墙
安装防火墙:如果你是VPS用户,可以试试阿里云盾,或者CSF这款免费的防火墙程序。顺便附上一行CSF防火墙有效设置防止CC攻击的设置行:首先用vim命令打开csf.conf,然后修改一行命令:
vim /etc/csf/csf.conf
PORTFLOOD = "22tcp5300,80tcp205"
6
设置IP黑名单
这个方法实际上也是最无奈,也是最有效的方案。我在寻找CC攻击的解决方案的时候看见了月光博客发的博文,虽然月光没有给出他的代码,但是他说了他的思路就是屏蔽IP黑名单。像月光博客这么大的网站,黑名单IP也只有100多条。于是我决定自己找出这些老鼠屎手动屏蔽之。
打开网站访客日志,查看异常IP,进行屏蔽。为了大家看的清楚,我这里用Cpanel面板截图:
7
点击最近访客就可以进去查看网站的访客和他们的浏览行为了。哪些IP是可疑的?
短时间内频繁访问网站的IP;
User Agent中包含MSIE 6.0的IP,这个年代,身为人类,用这个浏览器的人不多,经过我的观察,100%的恶意CC攻击的IP都是来自这个UA,其实我早就想把所有的IE6.0用户排除我的网站了,正常的访客,一个月里面也没有几个会用IE6.0浏览器的了;
访问favicon.ico次数频繁的IP,前面说了,不解释;
来自同一频段的IP,比如168.168.121.9和168.168.119.8这样相近的IP如果多次出现在你的访客中,显然都是一伙的来刷CC的,屏蔽掉。
CC主要是用来攻击页面的。就是在访问论坛时,如果这个论坛比较大,访问的人比较多,打开页面的速度会比较慢,对不?!一般来说,访问的人越多,论坛的页面越多,数据库就越大,被访问的频率也越高,占用的系统资源也就相当可观,现在知道为什么很多空间服务商都说大家不要上传论坛,聊天室等东西了吧。一个静态页面不需要服务器多少资源,甚至可以说直接从内存中读出来发给你就可以了,但是论坛就不一样了,我看一个帖子,系统需要到数据库中判断我是否有读读帖子的权限,如果有,就读出帖子里面的内容,显示出来——这里至少访问了2次数据库,如果数据库的体积有200MB大小,系统很可能就要在这200MB大小的数据空间搜索一遍,这需要多少的CPU资源和时间?如果我是查找一个关键字,那么时间更加可观,因为前面的搜索可以限定在一个很小的范围内,比如用户权限只查用户表,帖子内容只查帖子表,而且查到就可以马上停止查询,而搜索肯定会对所有的数据进行一次判断,消耗的时间是相当的大。
CC就是充分利用了这个特点,模拟多个用户(多少线程就是多少用户)不停的进行访问(访问那些需要大量数据操作,就是需要大量CPU时间的页面)。很多朋友问到,为什么要使用代理呢?因为代理可以有效地隐藏自己的身份,也可以绕开所有的防火墙,因为基本上所有的防火墙都会检测并发的TCP/IP连接数目,超过一定数目一定频率就会被认为是Connection-Flood。
使用代理攻击还能很好的保持连接,我们这里发送了数据,代理帮我们转发给对方服务器,我们就可以马上断开,代理还会继续保持着和对方连接(我知道的记录是有人利用2000个代理产生了35万并发连接)。
可能很多朋友还不能很好的理解,我来描述一下吧。我们假设服务器A对Search.asp的处理时间需要0.01S(多线程只是时间分割,对结论没有影响),也就是说他一秒可以保证100个用户的Search请求,服务器允许的最大连接时间为60s,那么我们使用CC模拟120个用户并发连接,那么经过1分钟,服务器的被请求了7200次,处理了6000次,于是剩下了1200个并发连接没有被处理。有的朋友会说:丢连接!丢连接!问题是服务器是按先来后到的顺序丢的,这1200个是在最后10秒的时候发起的,想丢?!还早,经过计算,服务器满负开始丢连接的时候,应该是有7200个并发连接存在队列,然后服务器开始120个/秒的丢连接,我们发动的连接也是120个/秒,服务器永远有处理不完的连接,服务器的CPU 100%并长时间保持,然后丢连接的60秒服务器也判断处理不过来了,新的连接也处理不了,这样服务器达到了超级繁忙状态。
如果遇见cc攻击,又没有一个专业的程序员处理,建议体验一下杭州超级科技的超级盾,百分百防cc,ddos防御无上限。可以免费试用看效果!
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)