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

最近3天,我的小站 godbmw.com经历了2次DDoS。第一次因为没有限制QPS,短短几分钟内CDN被盗刷了300G流量。第二次完善了相关保护措施后,CDN依然被D了90G的流量。经过2天的迁移和补救,终于使得网站服务恢复正常。用此篇记录下整个奋战过程。希望对广大站长有帮助。
  1. 图片无法正常加载的朋友请移步:被DDos后的及时补救与一些思考:原文地址
  2. 欢迎来小站看更多干货 + 免费教程:godbmw.com
  3. 由于最近经常被DDoS,所以不是很稳定,请见谅?

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”。

剩下要做的就是把打包好的项目文件上传到服务器,IP隐藏、缓存、CDN等cloudflare都会帮你做好。不暴露服务器ip地址,自然就是安全的!!!

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

3. 一些思考

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值