被攻击的余温还未褪去,未来还要迎接多少突如其来的攻击尚不得知。作为一个小小站长,永远要做的就是时刻做好准备,也要做好最坏的打算,哪怕是最后一丝希望。

星星之火,可以燎原

  周日晚上9点左右,自己刚从嗜睡中醒来,肚子已经迫不及待地的开始迫索要口粮,洗了把脸就急匆匆出去觅食,在饭馆里坐下打开手机与一个博客群的伙伴儿们聊的不亦乐乎,大家开始互换链接分享自己的博文,我随手也发了一条比较新的文章链接出去,刚发出去没等到一分钟就有伙伴向我反馈链接已经打不开了……我心想,糟了一定是被CC了……
  我以迅雷不及掩耳之势一顿狼吞虎咽之后就往回赶,到家的时候博客已经陷入502 bad gateway状态(Web服务器网关请求失败,已经宕机),并且在502状态下请求还仍在继续,502的请求次数已经达到了1.7万次,为了尽快恢复服务,我选择了重启主机。
  我非常清楚这次攻击是出在博客群的某一个人,但没有足够的证据只好作罢,便对这位不露面的攻击者进行了好一番嘲讽。待服务器重启之后,流量已经开始越变越大……

持续发酵

  重新启动服务器后,网站经过短暂的正常之后又开始濒临502,流量开始进一步提升,为了保持网站的正常访问我开启了防火墙的强验证模式,并且屏蔽了海外IP,因为攻击者的代理IP来均来自海外。经过一番紧急的屏蔽措施之后网站的负载率基本平稳在了20-30%之间,此时的CC攻击量已经达到17万。

屏蔽海外IP

  正在向胜利准备挥手时,画风突变!攻击IP由海外变为大陆IP,攻击流量又开始回升。我压低了防火墙的容忍值,封堵了最少一半以上的CC流量,网站速度又恢复了正常。由于捕捉到该攻击者的国内IP资源不够多,采用的是某免费IP代理网站批量获取的免费,用了部分IP段,所以我把几个固定的IP段手动屏蔽掉之后网站几乎不影响访问。

被封堵的大陆IP

  机智的攻击者见攻势越来越弱,开始转变思路瞄准了防火墙规则 —— User-Agent(用户代理),攻击者把UA模拟成百度爬虫(Baiduspider),钻了防火墙屏蔽规则的漏洞,因为防火墙无视各大搜索引擎的爬虫,所以通过模拟搜索引擎爬虫访问网站的请求不会被拉黑(当然国外IP即使模拟UA也是无法通过的)。我本想着屏蔽掉爬虫规则,但是考虑到百度收录的问题只能另想办法。好在攻击者的国内IP资源并不多,继续手动屏蔽一些IP段还是可以有效的控制。

  经过一晚上的敌我的较量,我的博客勉强略胜一筹,还是挺到了最后。攻击者最后IP消失殆尽,在晚上11点50分停止了攻击(历时2个半小时)。攻击结束后我的博客已经被CC攻击打了70万+万次!终于可以抽颗烟睡觉了……

无利不起早

  早晨到公司简单地吃过早餐之后准备新一周的工作,在10点的时候接到微信推送来的服务器预警消息……

  昨晚的防御措施我并没有急着关闭,目的就是为了防御接下来的攻击,没想到攻击者一大早已经开始又一波攻击,真是无利不起早!看这种情形,我昨晚的防御措施已经被瞬间沦陷!

硝烟再起,群魔乱舞

  心里想着被攻击就被攻击吧,即便服务器瘫痪了我也不会造成什么损失,想把重心转移到工作上,但微信上一遍又一遍的警报时时刻刻提醒着我去看看!最后终于忍不住,那就开干吧!
  等我登陆到服务器上的时候,还没到半小时攻击量已经接近30万了,而且攻击思路沿用了昨天最后的套路,搞来了大量国内的垃圾IP,而且模拟UA不止单纯有百度,还有有道、谷歌。此时的CC防火墙已经形同虚设,只能拦截少数攻击。

  攻击者不仅伪装了多种搜索引擎的UA,还由HTTPS CC转为了HTTP CC,这样无论是国内IP还是国外IP都可以命中目标,因为我网站默认强制开启了HTTPS,所以请求HTTP链接时默认会301重定向到HTTPS,这个也是钻了防火墙的漏洞。一时间手慌脚乱,CPU负载已经趋近100%满负荷,网站已经开始出现访问延时。

  不管三七二十一,把CC容忍度一降再降,祭出最终大招,不管任何爬虫访问,真实的也好,模拟的也好,只要超出预设的CC容忍值一律送进小黑屋。(当时脑门一团乱,应该关闭HTTPS访问,转单向HTTP访问,这样防火墙规则就能正常了)。

所有爬虫列入规则名单

  经过这样一番调整之后,网站恢复正常访问状态,但负载依然超过40%,我选择死扛……

最终BOSS之战

  对于整个CC攻击事件,我前思后想很多,有很多巧合能与一个人关联上。甚至已经严重怀疑是我在群内认识的某一个人。因为我没有确切的证据,但是最后脑门一热,我把整站所有请求都301重定向到我怀疑的那一个人站点上,瞬间我网站的负载降至正常水平,所有的流量转达到对方站点,对方被我转过去的流量被CC到打不开页面,没过几分钟攻击便停止了,这不得不让我和其他群内伙伴深思……
  我不知道我的怀疑是不是一场误会,但事实告诉我,当我把整站重定向后攻击确实停止了,这该如何解释呢?如果我真的误会了,我真诚的在这里说声:“对不起!”

停止切磋,各自安好

  这次攻击的起始点和结束点都非常的突然,截止攻击结束,我站点CC攻击累计超过170万次(第一次累计70+万,第二次累计100万)我不知道什么样的人对我这样憎恨。我的服务器也相当脆弱,仅仅1核心2G内存,外加10Mbps带宽。小项目做惯了,自己第一次经历过这么大流量的攻击,竟然还是出自我自己服务器上,我也不知道自己的服务器防御极限究竟在哪里。无论如何权当这是一次攻击试验,希望攻击者和我都各自安好。搞成这样真没什么必要!

百万请求

模拟爬虫UA的请求

结语

  博主自认为是一个热心且好心肠的人,喜欢在一些技术群、博客群内和小伙伴们聚在一起无话不谈。喜欢分享自己知道的,也常常帮助小伙伴们解决一些力所能及的问题,不会去招惹跟自己合不来的人,根本不会节外生枝。博客也是同样,本身不是盈利的一个站点,攻击的意图又是什么呢?

“子曰:我未见好仁者,恶不仁者。好仁者,无以尚之;其为仁矣,不使不仁者加乎其身。”

最后修改:2019 年 04 月 09 日 06 : 47 PM