应对 DDoS 攻击的防御策略
1. 背景
本站部署在腾讯云,并使用了云盾CDN。本月到现在被 DDoS 攻击两次,造成总停服时长 12 个小时。
- 10 月 5 号,详见:《被 DDoS 攻击导致封停了六小时》
- 10 月 20 号,详见:《这个月第二次被 D 了》
2. 攻击分析
攻击者应该是很熟悉腾讯云的,使用 UDP Flood 攻击,每次只攻击两分钟,攻击带宽峰值远高于腾讯云的基础防护 2Gbps。
攻击开始后立即引起腾讯云的 ip 封堵,腾讯云的理由是:
通常发生大流量攻击时,运营商考虑网络稳定性因素会进行封堵,从而避免攻击影响到其他未被攻击的用户,保障整个云平台网络的稳定。
两分钟的攻击就可以造成 6 个小时的封堵。找腾讯云客服咨询,购买高防产品才可以自助解封,否则只能等待到期后自动解封。
3. 官方策略
咨询腾讯云客服,给出了两套策略。
3.1 购买高防产品
客服给出的第一个建议就是购买高防产品。但作为个人网站,实在是负担不起,因为价格是这样的:
DDoS 防护能力 | 三网/BGP |
---|---|
30Gbps | 19,800元/月 237,600元/年 |
60Gbps | 42,800元/月 298,000元/年 |
100Gbps | 308,000元/年 |
300Gbps | 508,000元/年 |
400Gbps | 928,000元/年 |
500Gbps | 3,680,000元/年 |
600Gbps | 4,280,000元/年 |
800Gbps | 4,982,000元/年 |
1000Gbps | 5,982,000元/年 |
以上还不包括境外流量。而我第一次被攻击达到了 34G。
3.2 购买临时服务器
客服给出的第二个建议是购买临时服务器过度。具体操作方法是:将当前服务器打包成镜像,购买按量付费的服务器使用此镜像,修改相关解析到临时服务器,等待原服务器恢复以后再切换回去。
如果是公司业务应急,购买临时服务器的方案是挺好的,价格也非常便宜。但个人网站实在懒得这么折腾。
最终我两次被攻击都是只能眼睁睁等着网站自己恢复,憋屈且无奈。
4. 进一步分析
购买高防是金钱成本太高,购买临时服务器是时间成本太高。所以我又回到最初去思考,源站 ip 为什么会泄漏。结果随便 ping 一个子域名就能查到源站 ip。这是因为我之前安全意识没有那么强——因为也没挨过打——只有主域名配置了 CDN,泛解析还是直接去源站的,ip 暴露无遗。
5. 解决方案
最终,我的解决方案就是隐藏源站 ip,做了如下操作:
- 云盾增加泛解析,CDN 接管所有访问
- 腾讯云安全组 80、443 只允许 CDN 回源访问
- 腾讯云更换公网 ip
6. 鸣谢
在此特别感谢腾讯云和云盾的技术支持同学,非常专业、耐心地给予了帮助。