CloudFlare Business 套餐可以帮助网站抵御 CC 攻击,需要进行一些配置。操作包括设置自动程序、托管规则、防火墙规则、验证码规则等,还需要进行 SSL 证书和源站配置。可以使用屏蔽地区和速率限制等功能进行进一步保护。自定义回源可以防止扫源程序攻击。
需要Cloudflare 企业版套餐。
你的站点必须使用 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
1 2 3 |
if ($http_user_agent != "moeyydad"){ return 444; } |
这段代码加在 root 的下面
证书防护
可以防止源站证书被扫到。如果源站使用 ssl 回源,我们需要上传证书,但是我们不能使用自己的证书,可以使用自签证书。比如:
证书
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
-----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----- |
密钥
1 2 3 4 5 |
-----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 证书 在这里生成:
做完以上操作,你的网站已经是无敌的了。