被DDos后的及时补救与一些思考

发布 : 2018-11-06 分类 : 网站搭建与运营 浏览 :

最近3天,我的小站godbmw.com经历了2次DDoS。第一次因为没有限制QPS,短短几分钟内CDN被盗刷了300G流量。第二次完善了相关保护措施后,CDN依然被D了90G的流量。经过2天的迁移和补救,终于使得网站服务恢复正常。用此篇记录下整个奋战过程。希望对广大站长有帮助。

1. 来自歪果仁的恶意

1.1 遭遇DDoS

我的CDN部署在腾讯云,10月2日接收到短信提醒:CDN流量已用完。登陆控制台后发现,被盗刷了360G,宽带峰值也到达了难以想象的680Mbps。这对于一个个人网站来说,几乎是不可能的流量。

抱着怀疑的态度,我查看了区域商分布,果然,海外的请求占了总请求的98.24%。其中300多G的流量都来自海外,现在可以确定是歪果仁盗刷了我的CDN流量。

没有办法,被迫联系工单,但因为我自己的一些防御没做好,所以这次的补偿不了了之。无奈,只能出钱补上了被盗刷的流量,以保证服务正常使用。并且在工单的交流中,增设了QPS等安全措施。

毫无疑问,限制QPS会影响用户的正常使用,造成延迟。但保险起见,我还是设置了QPS,只希望不要再被攻击。

1.2 再次遭遇

但好景不长,仅安稳度过了一天,又一波来自海外的DDoS让我不得不临时关闭CDN和COS服务。下图中第一个峰值是上一次DDoS,第二个峰值是这次的DDoS。

这次的攻击更高级,颇有一种“道高一尺,魔高一丈”的味道。因为之前应增设了QPS等限制,但这样完全限制不了IP代理池等攻击手段,黑客这次也选择了体积较大的单文件进行攻击。

我惯例去找了工单,因为上次腾讯云的工程师专门call过来:只要增设了相关安全限制,下次确认是盗刷立即给予补偿。然而这次工单依然是打太极,各种文档、规则扔给我,闭口不谈补偿问题,并且说是我的QPS设置太高了:)。

问题是:QPS设置成5,项目还用不用了?如果用户处于同一个局域网下(校内网、Wifi等场景),那在同一秒中只有一个用户可以正常使用?

最后,工程师还是call过来,经过了1小时的聊天,可以补偿,但是要等一段时间才能批下来这90G的流量包。然而我的流量已经超了,我还是要自己补以保证第二天正常使用。好吧,也算是一个解决方案。

1.3 无路可走

经历了2次DDoS,我设置了“宽带封顶配置“。根据平日的使用量,我估计“3Mbps”,并且在超值的时候,返回404,关停服务。

当日晚,就接收到了CDN到达宽带封顶的短信,自动关停了CDN服务:项目也无法正常使用了。

这次,彻底是绝望了,只能先关闭CDN服务,寻求别的解决方法。

2. 坎坷的补救措施

在补救的时候,首先排除了工单的意见:回源到原站或者COS(对象存储服务)。前者会直接造成服务器瘫痪,DDoS是结结实实打在服务器上;后者COS也是流量或者宽带后收费,本质上和CDN没区别。

所以,关闭当前的CDN加速域名,并且清空了COS中的文件。然后针对个人网站和项目应用做了不同的处理。

2.1 公司项目:更改CDN域名

观察被盗刷的资源,全部都是个人网站的静态资源。而公司项目只有合作的商户在使用,并且在robots.txt中禁止了爬虫,所以用利用另一个账号开启了一个新的COS并且开启了对应的CDN加速域名。

至于为什么个人网站和公司项目要放在一起,只是因为方便上传和管理,现在看来省事一步,后患无穷。

2.2 个人网站:Git平台

借助免费的Git平台,可以存放图片、代码等数据,并且可以在外部访问到。考虑到国内用户居多,所以我将友链界面的图片和文章中的图片存放到了Coding.net的公有仓库中。

例如下面这种图片的地址就是:https://qcloud.coding.net/u/godbmw/p/blog/git/raw/master/markdown-static/网站搭建与运营/第一次遭遇云服务器完全崩溃/1.png

当当我把代码放在Coding或者github上时,虽然可以请求到代码的内容,但是Response Header中的Content-Type字段的值是: text/plain; ...。对于CSS样式文件,浏览器无法自动解析。因此,打包后的js、css等项目文件不能放在Git平台。

2.3 免费CDN:CloudFlare

这是全球最大的免费的CDN,并且国内也可以访问。ping值稳定在100ms左右,具体可以去查看相关测试文章。除此之外,cloudflare可以抗下DDoS、CC等攻击,听说百度抗不下来海外的DDoS的时候,也是DNS解析到cloudflare进行处理。

cloudflare的操作很简单,首次注册按照它的指导到域名注册上修改DNS解析即可。如果是国外的域名注册商,几分钟就可以同步。国内的并没有尝试。如果成功了,CONSOLE页面就会显示“Active”。

感谢来自V友们的提示:请在CloudFlare的控制台的DNS面板中,点亮小云朵(开启HTTP Proxy),否则是无法使用他们的CDN的,IP还是暴露的

除此之外,还有一下措施:

  1. 控制台提高安全等级:默认是Essentially Off,可以根据情况提升
  2. 设置防火墙规则:国内ip直接访问,国外ip需要通过Javascript验证
  3. 限制访问频次

到此,个人网站就可以正常访问了。

3. 一些思考

在这之前一直在使用腾讯云,希望云平台可以采纳预付费(现在是后付费)限制宽带的做法。

而腾讯云的官方文档也有提及DDos等攻击造成流量激增的免除措施,如下图所示:

不知道大家发现了没有,宽带必须到达10Gbps以上才可以免除。然而这次经历的才只有680Mbps,如果到10Gbps,那后果真是不敢想象,怕是要赔掉裤子。和工单讨论的时候,工单就给了我这张图片,如果用户被盗刷达到了9Gbps呢?也是他们说的不符合要求,还是需要用户自己买单。损失肯定难以衡量。希望日后平台可以改进相关规定。

刚做网站的时候关心名头(傻傻觉得越大公司越靠谱),现在才发现云平台的安全稳定、补救措施、收费标准才是关键。

最后,如果是个人项目,强烈推荐使用国外的“cloudflare”,免费、不限流量、抗攻击,就像国外的JetBrians(教育版免费),都是有情怀的公司,致敬!!!

本文作者 : 董沅鑫
原文链接 : https://godbmw.com/passages/2018-11-06-ddos-recover-and-think/
版权声明 : 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!

知识 & 情怀 | 二者兼得

微信扫一扫, 向我投食

微信扫一扫, 向我投食

支付宝扫一扫, 向我投食

支付宝扫一扫, 向我投食

留下足迹