Appearance
前不久,网站监控系统发出了报警。后端检测到大量无效请求,并确认这是一次 DDoS 攻击。最终,在 Cloudflare 的加持下,成功挡住,🐮🍺。
攻击情况
这次攻击持续了大约一个小时,累积了接近 2000 万的请求,数据量达到近 100GB。其中,数以万计的来源 IP 主要来自海外,尤其是东南亚地区。
攻击主要采用了 CC 攻击策略,即大量请求特定页面,同时附带随机的查询参数以绕过缓存。由于我们一开始并未启动防护措施,几乎所有的请求都直接到达了服务器,导致 CPU 负载过高,进而使得服务器无法处理新的请求。
一开始没反应过来,就直接在服务器写脚本过滤请求,然后发现毫无卵用 😄
继续分析请求详情,此时还在想,糟了,不会是 IP 泄漏了吧,难不成要升配置,还是说要高价上高防 🤔️
因为之前换过 IP 导致很多用户因为 dns 缓存暂时无法访问,也为了避免 CF 的防护导致正常用户受影响,所以第一反应还是硬扛。
思考了几秒钟,想到,老子不是刚刚花了很多时间精力把网站上了 Cloudflare 吗,能受这委屈?
第一步,打开 CF 看看日志,升级了 Pro,成为尊贵的付费用户 😂,可以看到更多详情。
第二步,打开了 Under Attack Mode 按钮,此时用户访问应该会人机验证页面。
观察了几分钟,情况依旧,人机验证是出现了,攻击的请求还是到了服务器,这是被绕过了啊 🤔️
第三步,临时禁止了非中国地区的 IP,确实是挡住了,不过同时也导致部分正常用户无法访问,总之先让服务器缓一缓再说。
第四步,配置更精细的 WAF 规则过去攻击请求。可信 IP 加入白名单、符合攻击请求规则的 Block、可疑的打开 JS Challenge。
第五步,打开了更加严格的机器人检测。后来发现这一步容易误杀,其实可以不用。
至此,服务器的 cpu 就直接降下来了,一切回复正常,CF 扛下了所有 😂
然后攻击者发现攻击无效了,就转去攻击另一个域名。呵,年轻。直接像上面一样配置好 WAF 立刻就挡住了。事实证明,服务器 IP 保护得很好,没有泄漏。
后来发现还是有一些误杀,于是又研究了一下,发现 Page Rules 可以更精细控制一些规则,还没来得及验证(坐等下一次攻击) 😂
总的来说,这次我们经历的只是一次 CC 攻击。幸运的是,从一开始我们就把服务器隐藏得很好,否则情况可能会更加复杂。
预防措施
从一开始就知道会有同行来攻击的,所以也算是做了一些准备。
首先,最重要的是隐藏服务器:
- 域名使用 CF 管理,DNS 解析使用 Proxied 模式
- 443 端口只针对 CF 的 IP 列表开放(或者更激进的可以使用 cf tunnel)
- 22 端口只针对白名单开放、禁止密码登录
- 服务器 nginx 对于未知域名返回无效证书
- 尽可能将服务器拆分为多个服务器
- 可以在重要的服务器前面再加一层代理服务器转发
然后就是监控网站的在线状态,使用的是 @haoel 的 easeprobe 🕯️
再之后利用云平台提供的监控信息,定制控制台、发送提醒。目的就是尽可能早的发现异常,早发现早处理,把影响降到最低。
事实证明实时监控是有必要的,这次就是在服务宕机之前就发现了异常,可惜对 CF 不熟练,耽误了时间。
给 Cloudflare 点个赞
算下来这次攻击大概几万个请求/秒,对 CF 来说应该算个屁 ☁️ 毕竟年初 Cloudflare 缓解了破纪录的 7100 万个请求/秒的 DDoS 攻击。对于我们这些普通人来说,可算是帮了大忙了,几乎白嫖的情况下就挡住了攻击。对比云服务平台高仿,动辄成千上万的花费不说,还不一定能防得住。应该给 CF 发给锦旗 🤣
问了一下 ChatGPT 这个问题,这是回答:
Cloudflare 提供免费服务的原因是多方面的:
吸引更多的用户和流量:通过免费提供基础服务,Cloudflare 可以吸引大量的用户和网站流量。这使他们可以收集到丰富的网络数据,促进他们改进并优化他们的服务。
转化为付费客户:尽管 Cloudflare 提供大量的免费服务,但他们同时也提供一系列增值服务,这些服务需要付费才能使用。许多开始使用免费服务的用户可能会发现他们需要更高级的功能,从而选择升级到付费服务。
改善互联网的总体安全:作为一个致力于建设更好互联网的公司,Cloudflare 提供免费的 DDoS 保护、SSL 证书等服务可以帮助提高整个网络的安全性。这种"公益"行为也有助于提升其品牌形象,并赢得用户的信任。
数据网络效应:随着越来越多的用户加入 Cloudflare,他们的服务将变得越来越有效。例如,对 DDoS 攻击的防御就可以利用他们广泛的用户网络来分散攻击流量,从而提高防御效果。
所以,虽然 Cloudflare 提供了大量的免费服务,但他们仍然可以通过吸引付费客户、提高服务质量和收集数据等方式从中获益。