Site icon 时鹏亮的Blog

关于博客被攻击的趣事

话说,从7月18日8点开始,收到百度CDN的通知,说博客受到了热心黑帽同学发来的CC攻击😂。作为一个普通博客,还真是让人受宠若惊。虽说百度云CDN整体用起来马马虎虎,但被攻击有短信通知,依然还是要感谢百度云加速的😂。

鉴于要正常上班,虽然觉得有趣,但是也没啥时间好好收拾,随手翻了下日志,发现是利用搜索会查询数据库,伪造随机字母来发出批量搜索请求,从而给MySQL施压,达到给整个服务器施压的目的(是的,我这互联网乞丐的博客当然是单机的啦)。


最初的攻击

本文简要描述,部分细节和系统架构不做赘述。攻击的原理基本上是下图这样,攻击请求从右侧顺势而下,逐步造成问题,从左侧依次影响整个服务器:


应对攻击的第一方案

讲道理,没被攻击过的嘛,所以碰到问题后,最初切入姿势比较歪,直接给博客的index.php里加入判定搜索的直接重定向,MySQL压力是下来了,压力变成了下面这样:


应对攻击的第二方案

呐,留意到了吧,虽然MySQL压力下来了,但是请求依然到了后端,后端服务能承载的压力是有限的,超载依然存在,虽然博客恢复了,但时不时还是会因为超载而不响应,用户看到的就是空白。

那么能不能把压力继续前置呢?比如挪到Web服务上?查了下Stack Overflow,恩,调整下配置,把压力前置,判定是搜索干脆不发给后端程序,流程图变成了下面这样:


攻击持续

问题呢,到这里就解决了大部分了。到此为止,攻击除了会占满带宽外,并不会造成服务器CPU过载。至此,正常用户就已经可以访问页面了。

但是搜索功能依然无法使用,因为服务器无法区分搜索是用户的还是攻击者发出的,所以截止文章发布前,博客搜索功能依然处于不可用状态。昨晚21点攻击停止片刻后,攻击调整为随机tag和搜索并行~

看了下百度云加速后台,昨天一天218万访问量,打了14.74G的网络流量,使用IP 近7000个。😂

7月19日中午发现,攻击继续了~好吧~但是,没啥影响了0 0博客目前除了搜索以外其他都是可以正常工作的。


特别鸣谢和留言

非常感谢热心的黑帽同学让我见识了一次攻击,希望你能把技术用到正道上,黑帽终归不如白帽来的踏实,无论你是刚入行的脚本小子还是想靠黑帽赚钱,这条路终非正途,随着国内安全问题越来越被重视,还是希望走偏的你,能找机会洗白走上正路,过上你想要的生活,不为生活所迫用技术做这些无聊的事情。

毕竟,可以安安心心的每夜睡个安稳觉的,大多是善良的人~

事件以及问题的解决本身还是很有趣的。感谢部分访客同学邮件告诉我博客无法访问的事情,写这篇文章只是希望大家把这事儿当成个丰富知识的趣闻看看便可。

工作比较忙,后面如果有空,并且攻击的同学锲而不舍的一直保持攻击的话,可能要考虑一个优雅的姿势过滤掉脚本伪造的搜索,并让博客的搜索恢复正常,且行且看先。

这样一个世界,我们会看到黑暗,会被伤害,我们也曾黑暗,也曾伤害他人。但为什么要坚持传递善意?只为安歇之时一晚内心的安宁罢了。愿有光有暗,诸君顺意。


事后的思考

针对本次个攻击后续变换手法随机Tag来说,这个查询本身压力并不高。如果说调优判定逻辑的话,可以枚举出全部有效Tag,直接将非法Tag也像搜索一样过滤掉即可。

本次攻击,直接造成了近两日下载收益损失大概十几元的样子,可以算是“巨款”了,总体来说给我和访客还是带来了不少麻烦的。但作为有趣的你来我往的攻防来说,很明显防御侧能做的事情还有不少。生活总是这样的有趣~

鉴于攻击的同学玩儿不出什么新花样了,虽然攻击持续着,但是,事情已经从有趣变成了无聊。


后续

7月20日,仅下午17:00-20:30 标签攻击累计220W次请求,但未能对博客造成任何影响。自20:39起,攻击停止~

作为后续调整,博客服务器自写了自动过滤逻辑,可以自动将攻击请求重定向到127.0.0.1。至此为止,个人认为,攻击者应该已经掀不起什么大风大浪了~

7月22日 7点24分开始,攻击再次发起,哈哈哈哈哈,好无聊啊~


如您从本文得到了有价值的信息或帮助,请考虑扫描文末二维码捐赠和鼓励。

尊重他人劳动成果。转载请务必附上原文链接,我将感激不尽。


与《关于博客被攻击的趣事》相关的博文:

Exit mobile version