本文承接:
是时候展示什么叫真正的技术了
前一篇说过了,自7月18日8点开始博客就受到了热情的攻击。7月20日增加了相关屏蔽逻辑后,博客不再被攻击所影响。
目前,每日随机会持续一段时间的攻击,然而,连一秒的停机都已经无法造成。
下面说说大概实现的思路,以供感兴趣的同学了解:
-
在被攻击后,冷静思考后,决定策略。首先,要区分攻击流量,避免攻击流量打到抗压性最弱的MySQL数据库上。
于是,nginx粗略的写了个判定,将不合规的搜索重定向到127.0.0.1。第一个策略,非常粗犷,大部分没身份的访客都无法正常使用搜索。
-
攻击方策略扩充,从搜索,增加到了随机tag,然而这玩意儿造成的压力远远低于搜索,并未对博客造成什么实质影响。
突然觉得,对方好弱……但是呢,也不能放过任何攻击啊,于是,在流量入口,部署了自写的脚本,自动区分攻击流量并屏蔽IP。
-
瞬间……攻击被弱化的不像样子……脚本不错,然后手滑,在源站服务器跑了一下,把流量入口的IP给屏蔽了= =GG,博客出现了人工智障的短暂无法访问。
更狠的是,流量入口的服务器iptables使用不当,搞的没有任何办法连上任何端口- -而腾讯云没有VNC,我把人远程管控的服务早删的干干净净……不得已,只能重装服务器从零部署一套新环境。流量入口的服务器恢复后,脚本跑的很稳,但屏蔽IP感觉不够劲儿,索性调整成直接屏蔽IP子网段。
-
至此,攻击完全无力化。回过头,源站服务器的nginx的判定也太弱了,有没有更好的姿势恢复搜索给普通访客呢?还有正规标签的访问。
这个时候就展示出了前瞻性,源站服务器我的nginx支持lua,费了点时间研究了下,上了初版的lua过滤脚本,这回,大部分访客都能正常搜索和访问标签了。而不合法的攻击流量也会被重定向出去。
-
lua后来又优化了几个版本,主要是依然会有极少部分的误判造成正常的搜索和标签访问被重定向走,搜索的优化还参考了浩哥的建议,丢给搜索引擎。
-
再后来,就是和空气斗智斗勇了……流量入口的屏蔽规则也略显粗犷了一些,优化~流量入口和源站服务器通信也做了不少优化,具体技术细节就不提了。
-
本次攻击,直接造成百度CDN屏蔽了我的域名,不联系客服不给使用,那就~
迁Cloudflare好了,我也不开启CDN和防攻击,还是大大方方的把流量入口IP放出来,攻击的同学你要有新花样,有本事你就打好了。
一波操作之后,对攻击和防御的理解加深了不少,算是份有趣的经验和经历吧。防御策略和脚本基本定型,应该不会再费时间额外关注了。
如您从本文得到了有价值的信息或帮助,请考虑扫描文末二维码捐赠和鼓励。
如本文对您有用,捐赠和留言 将是对我最好的支持~(捐赠可转为站内积分)
如愿意,请向朋友推荐本站,谢谢。
尊重他人劳动成果。转载请务必附上原文链接,我将感激不尽。