杜郎俊赏 - dujun.io

应对 DDoS 攻击的防御策略

1. 背景

本站部署在腾讯云,并使用了云盾CDN。本月到现在被 DDoS 攻击两次,造成总停服时长 12 个小时。

2. 攻击分析

攻击者应该是很熟悉腾讯云的,使用 UDP Flood 攻击,每次只攻击两分钟,攻击带宽峰值远高于腾讯云的基础防护 2Gbps。

攻击开始后立即引起腾讯云的 ip 封堵,腾讯云的理由是:

通常发生大流量攻击时,运营商考虑网络稳定性因素会进行封堵,从而避免攻击影响到其他未被攻击的用户,保障整个云平台网络的稳定。

两分钟的攻击就可以造成 6 个小时的封堵。找腾讯云客服咨询,购买高防产品才可以自助解封,否则只能等待到期后自动解封。

3. 官方策略

咨询腾讯云客服,给出了两套策略。

3.1 购买高防产品

客服给出的第一个建议就是购买高防产品。但作为个人网站,实在是负担不起,因为价格是这样的:

DDoS 防护能力三网/BGP
30Gbps19,800元/月 237,600元/年
60Gbps42,800元/月 298,000元/年
100Gbps308,000元/年
300Gbps508,000元/年
400Gbps928,000元/年
500Gbps3,680,000元/年
600Gbps4,280,000元/年
800Gbps4,982,000元/年
1000Gbps5,982,000元/年

以上还不包括境外流量。而我第一次被攻击达到了 34G。

3.2 购买临时服务器

客服给出的第二个建议是购买临时服务器过度。具体操作方法是:将当前服务器打包成镜像,购买按量付费的服务器使用此镜像,修改相关解析到临时服务器,等待原服务器恢复以后再切换回去。

如果是公司业务应急,购买临时服务器的方案是挺好的,价格也非常便宜。但个人网站实在懒得这么折腾。

最终我两次被攻击都是只能眼睁睁等着网站自己恢复,憋屈且无奈。

4. 进一步分析

购买高防是金钱成本太高,购买临时服务器是时间成本太高。所以我又回到最初去思考,源站 ip 为什么会泄漏。结果随便 ping 一个子域名就能查到源站 ip。这是因为我之前安全意识没有那么强——因为也没挨过打——只有主域名配置了 CDN,泛解析还是直接去源站的,ip 暴露无遗。

5. 解决方案

最终,我的解决方案就是隐藏源站 ip,做了如下操作:

  • 云盾增加泛解析,CDN 接管所有访问
  • 腾讯云安全组 80、443 只允许 CDN 回源访问
  • 腾讯云更换公网 ip

6. 鸣谢

在此特别感谢腾讯云和云盾的技术支持同学,非常专业、耐心地给予了帮助。

日期:2022-10-21