惜染

19 分类: cloudflare

明月CloudFlare 免费版完美抵挡 CC 攻击的 WAF 规则

先决条件
1、网站必须是已经 DNS 接入 CloudFlare 至少三天以上的。
2、CNAME 和分线路接入 CloudFlare 的漏洞太多,没啥效果的!
3、需要服务器端的 Nginx 配置配合,如果服务器能仅限 CloudFlare 节点 IP 回源了,效果最完美。
4、网站必须已经完成全站 HTTPS 了。
5、必须满足以上的站点才能防御效果最完美,免费无敌防御!
规则实现的效果
1、百分百拦截各种 CC 攻击请求,服务器性能负载不受影响。
2、备案、未备案域名均可使用,没有区别。
3、精准针对攻击流量,正常真人访客不受影响(国内外访客均可灵活安排)
4、不用开启 CloudFlare 五秒盾,把用户体验的影响降到最低。
5、CC 攻击都击不穿自然就无视 DDoS 攻击了。
6、无论是已经被攻击还是没有被攻击都可以使用这个 WAF 规则。
7、配合定制优化过的缓存规则可以精准提升真人访客的浏览速度。绝对不受攻击影响!
8、明月亲身实测高达 30PB 流量,持续 38 个小时的 CC 攻击,毫无压力!

这个 WAF 规则的原理其实也非常简单,就是让 Nginx 配合 CloudFlare 实现针对所有请求强制进行 mTLS 身份验证,而这个 mTLS 身份验证是需要支持 mTLS 的浏览器才能通过验证的,这样以来那些模拟出来的 CC 攻击就无所遁形了,那怕是盗用篡改 cookie 的模拟请求都没用了(这个可以绕过 CloudFlare 的速率限制)。可以理解为 浏览器+CloudFlare+Nginx 三者之间的必须要验证 SSL 证书才能通过验证 ,缺一不可。CloudFlare 是少有的免费 CDN 就支持 mTLS 验证身份的,注意还免费哦!

所以,我们要先在 CloudFlare 里配置好 mTLS 验证的条件。首先要确保 CloudFlare 后台【 SSL/TLS 】——【 概述 】里您的 SSL/TLS 加密模式为 完全(严格)

另外还要在【 SSL/TLS 】——【 源服务器 】里创建给服务器用的 SSL 证书( 注:创建的证书只会显示一次证书和密钥,建议大家分别保存为.pem 证书文件和.key 的密钥文件,记得用纯文本编辑器哦! ),这可是 CloudFlare 给的有效期 15 年的 SSL 证书哦!然后还要勾选下面的【 经过身份验证的源服务器拉取 】用于对源服务器拉取进行身份验证。

这时候,我们就要转到服务器上给 Nginx 配置双 SSL 证书和开启客户端证书验证了,只需要在站点 Nginx 配置里增加上面创建的 CloudFlare 证书和密钥:

ssl_certificate /CloudFlare 证书绝对路径/cfcet.pem;
ssl_certificate_key /CloudFlare 证书密钥绝对路径/cfcert.key;

注:Nginx 站点配置文件之前的证书建议保留可以保证兼容性哦。
重点来了 ,继续在下面加上一个客户端证书和开启客户端证书验证:

ssl_client_certificate /CloudFlare 提供客户端验证证书绝对路径/authenticated_origin_pull_ca.pem;
ssl_verify_client on;

CloudFlare 客户端验证证书上传到服务器。
下载地址:https://developers.cloudflare.com/ssl/origin-configuration/authenticated-origin-pull/set-up/zone-level/
保存 Nginx 站点配置文件,重启一下 Nginx。
最后,回到 CloudFlare 在【安全性】——【WAF】里使用下面的“强制使用 mTLS 进行身份验证”规则模板,创建一个 mTLS 验证规则,具体如下图所示:
20240610210844263759.png
注意了,上图最下面的采取措施里建议选择“交互式质询”,实测防御效果最好,保证用户体验可以选择“托管质询”,两者的区别就是一个需要真人手动勾选来验证,另一个自动完成验证。
这个身份验证 WAF 对国内部分浏览器不友好,尤其是 QQ、微信等内置浏览器是无法通过验证的,估计跟浏览器内核不支持 mTLS 验证有关系,主流 Edge、Chrome、Firefox、Safari 无论 PC 还是手机端都是没有问题的。

最后就是保持这个 WAF 规则是开启状态即可,这时候在 CloudFlare 后台【 安全性 】——【 事件 】里可以看到所有的请求都被要求质询了,只要是 CC 攻击请求都会被触发这个质询的,因为都是机器模拟行为自然数是无法通过验证的,攻击流量也就无法到达服务器了,被 CloudFlare 完美的阻挡屏蔽掉了。CloudFlare 可是不计算攻击流量的哦,所以让对方随便打,大多久都可以,你的服务器稳如泰山。

#none

作者: 惜染

版权: 除特别声明,均采用BY-NC-SA 4.0许可协议,转载请表明出处

目录Content

评论