使用 CloudFlare Business 无视CC攻击

需求

Cloudflare 企业版套餐（200 美元的，或者更高），PRO 版本可以参考这篇文章：https://moeyy.cn/posts/d4fb87f4694a.html

你的站点必须使用 HTTPS

开始（在 CloudFlare 上操作）.

自动程序

首先，需要登录 Cloudflare 控制面板，选择域名 --> 防火墙 --> 自动程序，点击 配置超级自动程序攻击模式
如图所示，可以按照我的图片进行设置

托管规则

然后打开选择 防火墙 --> 托管规则，把选项全部勾上，敏感度高，操作为质询。

网站以及 SSL 证书配置

大致分享一下我的规则。

建议您的站点设置 SSL 证书并开启 http2 协议：

并且开启强制 https，也可以限制最低 TLS 版本为1.1（目前浏览器最低都是 1.2） 参考图片：

页面规则

可以参考一下我的

防火墙规则

阻止规则：

Tor 是洋葱路由，可以屏蔽。威胁分数大于等于 5 进行阻止。威胁分数正常访客压根不会触发，不要害怕误封。

验证码规则：

第一段的意思是禁止 https 的访问有 http1 的 HTTP 版本，因为正常访客访问 https 都是 HTTP2，只有代理 CC 会是 HTTP1，前提是你网站开启了 https，不开启 https 这个规则没作用。

用户代理这个我就不说了，防止一些奇奇怪怪的 ua。

威胁分数大于 1 的话自动弹出验证码，正常浏览器，干净的 IP 不会触发。

最后一个是防止伪造 ip 的。

除了设置规则，你还需要设置一些其他的东西。

比如 HTTP DDOS, 全部拉满：

到这里，在 Cloudflare 上设置的规则已经完成了。接下来是设置源站的

Nginx 配置

我们可以设置一个单独的 UA 回源，并且只允许那个 ua 回源。

先在 Cloudflare 上操作：

创建一个 HTTP 请求头修改，内容为 User-Agent：XXX （XXX 可以替换成其他）：

比如我的是moeyydad，你可以替换成别的，别人猜不到就行。

然后我们在 nginx 配置文件内添加一个 if

Copy
if ($http_user_agent != "moeyydad"){
return 444;
}

这段代码加在 root 的下面

证书防护

可以防止源站证书被扫到。如果源站使用 ssl 回源，我们需要上传证书，但是我们不能使用自己的证书，可以使用自签证书。比如：

证书

Copy
-----BEGIN CERTIFICATE-----
MIIDITCCAsagAwIBAgIUTcEWLzynkLCFCoAC1iDH2vG3EkYwCgYIKoZIzj0EAwIw
gY8xCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T
YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBDbG91ZEZsYXJlLCBJbmMuMTgwNgYDVQQL
Ey9DbG91ZEZsYXJlIE9yaWdpbiBTU0wgRUNDIENlcnRpZmljYXRlIEF1dGhvcml0
eTAeFw0xOTAxMTMxNDMxMDBaFw0zNDAxMDkxNDMxMDBaMGIxGTAXBgNVBAoTEENs
b3VkRmxhcmUsIEluYy4xHTAbBgNVBAsTFENsb3VkRmxhcmUgT3JpZ2luIENBMSYw
JAYDVQQDEx1DbG91ZEZsYXJlIE9yaWdpbiBDZXJ0aWZpY2F0ZTBZMBMGByqGSM49
AgEGCCqGSM49AwEHA0IABAg/hZ9lDHj/f+0jDRAN23TkNEqIi46mCGnwZVD3glxL
l+a1mpfXLHSEFTipnSyQgmvkPYzQGaEIFD0q6W/ZgMujggEqMIIBJjAOBgNVHQ8B
Af8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMAwGA1UdEwEB
/wQCMAAwHQYDVR0OBBYEFCEZF6Eyem01XPbgwr6DXLZV1qsQMB8GA1UdIwQYMBaA
FIUwXTsqcNTt1ZJnB/3rObQaDjinMEQGCCsGAQUFBwEBBDgwNjA0BggrBgEFBQcw
AYYoaHR0cDovL29jc3AuY2xvdWRmbGFyZS5jb20vb3JpZ2luX2VjY19jYTAjBgNV
HREEHDAaggwqLmRuc3BvZC5jb22CCmRuc3BvZC5jb20wPAYDVR0fBDUwMzAxoC+g
LYYraHR0cDovL2NybC5jbG91ZGZsYXJlLmNvbS9vcmlnaW5fZWNjX2NhLmNybDAK
BggqhkjOPQQDAgNJADBGAiEAnrequCk/QZOOrcPH6C3Hgcy4SPNUy5rQtku/aYkj
qQoCIQCN6IyYNiXuwG+8jUgJrveiirBjiz2jXZSTEfVAyibjTg==
-----END CERTIFICATE-----

密钥

Copy
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgK0HE3hTJQDg6p/fj
nS92eSuRKZEZ5F4grT6tWFKNYVmhRANCAAQIP4WfZQx4/3/tIw0QDdt05DRKiIuO
pghp8GVQ94JcS5fmtZqX1yx0hBU4qZ0skIJr5D2M0BmhCBQ9Kulv2YDL
-----END PRIVATE KEY-----

如何测试你的源 ip 不会被泄露呢？

你可以先在 hosts 文件把添加你的源 ip 和域名，然后打开浏览器访问，如果无法访问就是成功的，因为受到 ua 限制。

其次，检查证书确保不是你域名的证书。还要检查默认证书，https://ip/ 进行访问，看看证书是不是你域名的，如果不是则大功告成。

其他配置

屏蔽地区

如果你的访客只是中国地区的，你可以设置只允许中国访问：

使用速率限制

可以根据你网站的 api 或者其他进行速率限制。

自定义 Host 回源

这个跟自定义 UA 回源类似，目前一些扫源程序的原理是带一个 host 头访问全球的 ip 进行测试和验证。

比如我设置一个回源域名为moeyydad.xyz回源，然后把源站域名moeyy.cn替换为moeyydad.xyz，这样就不会找到我们的源站。配合自定义 UA 回源，源站配置CF 的自签 SSL 证书，自定义 Host 回源，攻击者则无法找到我们的源站。

CF 的自签 SSL 证书 在这里生成：

做完以上操作，你的网站已经是无敌的了。