你没听错。确实是我这个小破站被打了。

众所周知,我的博客是个部署在 Vercel 上面的静态网站,只有评论区和 DL 是动态的。

网站火了

故事要从一月三号开始(刚刚新年没几天就给我整了波大的

两眼一抹黑

第一波攻击发生的时间是 1/3 下午 14 点左右。请求数量达到了惊人的 3M 个。

其实我一开始并不知道这件事,直到下午 5 点的时候瞄了眼 Vercel 面板才发现不对劲。怎么 100GB 流量用了 70G,1M 请求烧了 80%???

然后我就打开防火墙看看到底发生了什么——

被打了

吓得我一激灵,期末周也不管了把高数书扔了,直接开始分析到底发生了什么。

面板后台就不放了,毕竟有些东西比较敏感(其实是没给 Vercel 打钱,没保存历史记录)。我一顿分析,发现攻击者的路径是我的头像:

/img/SamHou.png

好好好,刷流量来了,找了个比较大的文件。

初步应对

我承认这点是我的失策——图片本来应该放在对象存储(图床),然后套一层 CF / Edgeone / ESA 来防护的,我却为了速度和省事直接放在了 Vercel 项目里面,和网站 html 文本放在了一起,这无疑提高了单次攻击消耗的资源价值。

所以还能咋办,删了,扔到对象存储里面。

当时的提交

还有一点,我之前对爬虫都是很宽容的,Bot 全部选择 Log 而不是 JS 质询或拦截。结果导致上面有 400K 次请求,刷流量的机器人没被拦截,烧掉了宝贵的流量。现在直接切换成拦截

一波未平,一波又起

就在我洗洗睡了之后,攻击又开始了。

晚上 11 点左右,就在我躺在床上安详地刷手机的时候,攻击又开始了。

第二波 DDoS

这次几乎全部请求被拦截或质询,攻击者攻击的内容仍然是那个图片文件,但是我删了,所以请求状态码都是 4XX,看来我的防护措施是起了一点效果的。

但是很不幸的是,没有被成功识别为 DDoS 的,但成功拦截的 Bot 在 Vercel 里面也是计费的,因此,Vercel 免费额度彻底用完了:

(悲)

咱也不知道 Vercel 什么时候会停机……

迁移

既然我们都受到这么大量的攻击了,那么 Vercel 已经不再适合作为博客托管平台了。CF 在国内访问速度太慢,排除。因此,我只能给迁移到 Edgeone Pages。虽然速度稍微慢一点,但至少访问在合理范围内不限量,还能挡一点 DDoS。

最后,我还是得说,祝所有 DDoS 的家伙早日被请喝茶,送一副银手镯。

博客