上周,我们的网站遭到了一次DDoS攻击。虽然我对DDoS的防御还是比较了解,但是真正遇到时依然打了我个措手不及。DDoS防御是一件比较繁琐的事,面对各种不同类型的攻击,防御方式也不尽相同。对于攻击来的太快量也很大这种时,在自身环境下做调整已经无法抵抗攻击。为了缓解网站压力,在尝试了其他方式后最终还是选择切换到了知道创宇的高防产品。过程中也遇到了很多问题,但是为以后的DDoS防御留下的很多经验。所以写下这篇文章,与大家分享。
这次DDoS攻击的类型是CC攻击,CC攻击是目前应用层攻击的主要手段之一,只需要借助代理服务器生成指向目标系统的合法请求,就能实现伪装和DDoS。
其实我们都有这样的体验,访问一个静态页面,即使人多也不需要太长时间,但如果在高峰期访问论坛、贴吧等,那就很慢了,因为服务器系统需要到数据库中判断访问者是否有读帖、发言等权限。访问的人越多,论坛的页面越多,数据库压力就越大,被访问的频率也越高,占用的系统资源也就相当的大。CC攻击就充分利用了这个特点,模拟多个正常用户不停地访问如论坛这些需要大量数据操作的页面,造成服务器资源的浪费。
当时我们发现服务器的CPU长时间处于100%的状态,永远都有处理不完的请求,网络拥塞,正常访问被中止。但是由于CC攻击技术性含量高,我们又无法见到真实源IP,也见不到特别大的异常流量,但服务器就是无法进行正常连接。最后才确定,这些其实都是CC攻击的典型特征。
CC攻击之所以会选择代理服务器是因为代理可以有效地隐藏自己的身份,也可以绕开防火墙,因为基本上所有的防火墙都会检测并发的TCP/IP连接数目,超过一定数目一定频率就会被认为是Connection-Flood。当然也可以使用肉鸡来发动CC攻击,攻击者使用CC攻击软件控制大量肉鸡发动攻击,肉鸡可以模拟正常用户访问网站的请求伪造成合法数据包,相比前者来说更难防御。
CC攻击是针对Web服务在第七层协议发起的攻击,在越上层协议上发动DDoS攻击越难以防御,上层协议与业务关联愈加紧密,防御系统面临的情况也会更复杂。比如CC攻击中最重要的方式之一HTTP Flood,不仅会直接导致被攻击的Web前端响应缓慢,对承载的业务造成致命的影响,还可能会引起连锁反应,间接攻击到后端的Java等业务层逻辑以及更后端的数据库服务。真的非常的扎心!后来知道创宇的工程师告诉我们,由于CC攻击成本低、威力大,80%的DDoS攻击都是CC攻击。而攻击造成的后果就是:带宽资源严重被消耗,网站瘫痪;CPU、内存利用率飙升,主机瘫痪;瞬间快速打击,无法快速响应。
那我们是如何一步一步解决的?其实在遇到攻击时,我们有仔细考虑过很多方案,是选择高防机房、机房流量清洗还是云防御?
遭到攻击的第一刻,我们首先想到的是用机房进行流量迁移。网上也有很多过来人推荐这种办法。确实,这种办法能快速的响应,面对小流量的攻击时价钱合理同事也十分有效。但问题是,攻击者一直孜孜不倦,流量越打越大,我们花出去的钱也越来越多…无奈之下我们只能转向考虑高防,高防的优势还是很明显,配置简单接入方便,能很快见效,合理的套餐选择使得攻击大时价格能低于机房清洗。在选择高防产品时我们对阿里云、腾讯云和知道创宇三家进行了评估。三家实力都很雄厚,价格阿里云>腾讯云>知道创宇,但也就几百的差距,没什么影响。最后选择知道创宇的主要原因是,我们这次遭遇到的攻击也是以CC为主,他们防御CC的能力确实很牛,所以…
最后一点点经验给到大家:遇到1G以下的攻击,使用防火墙就可以搞定(或者使用一些免费的云防御产品);流量1G—10G时可以选择机房进行流量迁移和清洗;大于10G时使用高防CDN(云防御)是相对最靠谱并且价钱最能接受的。由于攻防资源和成本的天平严重倾斜,让攻击更加肆无忌惮。只有做好充分的准备,在威胁来临的时候才不至于乱了阵脚。因此,平时就对网络架构进行优化显得十分的必要,负载均衡方案也能大大提高应对DDoS攻击的能力。
希望这点经验能帮到大家,欢迎留言交流。