正文

新版 CloudFlare CDN 防攻击设置

前段时间网站一直被攻击,然后博主扛不住了搬去了 CloudFlare 。初期因为设置问题,攻击还是透过了CloudFlare 打到了源站。后面经过多次的设置后已经可以完全阻止攻击请求了。下面给大家分享下我的设置,如果你的网站被攻击了,可以根据自己的实际情况微调修改下。

1.设置前说明

网站程序为WordPress,不同程序可能需要微调下策略。

CloudFlare免费版默认设置是针对整个域名的,如果你有其他二级域名站点,需要注意下这个策略对你其他站点有没有影响。

在你使用CloudFlare前确保你的源站IP没有暴露,否则对方可以直接指定hosts到你的源站IP,CloudFlare就形同虚设。

如果源站IP已经暴露,先把数据备份出来。开一台新服务器创建站点。

关于CloudFlare接入的基础操作这里就不讲了,比如SSL设置之类。

 

下面的规则自己实际使用后一定不要暴露出来,否则攻击者会针对性的进行攻击。建议自己进行规则微调。

2.策略详情

策略设置有优先级,排名靠前的优先级大于后方策略。所以说针对搜索引擎蜘蛛的策略,一定放在第一个!

2.1 waf设置

新版 CloudFlare CDN 防攻击设置新版 CloudFlare CDN 防攻击设置

WAF策略总览

新版 CloudFlare CDN 防攻击设置新版 CloudFlare CDN 防攻击设置

 

2.1.1搜索引擎蜘蛛策略

新版 CloudFlare CDN 防攻击设置新版 CloudFlare CDN 防攻击设置

表达式:(cf.client.bot)

主要作用:CloudFlare 对于常见搜索引擎蜘蛛IP有自己的一份数据库,符合此要求的请求将会直接访问网站数据。不会经过 CloudFlare 的 WAF 策略等。避免正常蜘蛛访问被拦截。

2.1.2登录页策略

新版 CloudFlare CDN 防攻击设置新版 CloudFlare CDN 防攻击设置

网站我们正常运行必然有访客进行注册登录,针对我们的登录页以及常见被扫描的地址,我们可以单独设置一下人机验证。

表达式:(http.request.full_uri contains "xmlrpc.php") or (http.request.full_uri contains "wp-login.php")

主要作用:本站是WordPress程序,所以设置了xmlrpc.php和wp-login.php地址。其他程序根据自己实际情况设置。优先级低于蜘蛛,放到第二也是为了防止有些访客挂着代理被后续的策略阻止。

2.1.3威胁分数策略

此策略是防攻击的主力策略,这一项可以阻挡90%的攻击。

新版 CloudFlare CDN 防攻击设置新版 CloudFlare CDN 防攻击设置

表达式:(cf.threat_score ge 2 and not http.user_agent contains "rss" and not cf.client.bot)

主要作用:威胁分数大于等于2,可以阻挡90%的恶意IP。CloudFlare 默认推荐分数5实测基本给攻击全漏了进来,设置3同样有漏IP。所以根据2023年9月目前的网络来说这里建议设置为2!

rss是因为站点有很多人通过RSS进行订阅,所以针对此类请求我们不要对他进行人机验证。

这里针对RSS策略比较简单,如果攻击者知道了你的策略可能会针对性攻击,我们实际使用时可以适当变通一下。

2.1.4细化攻击策略

上一个策略是简单的通过威胁分数判断,现在这个策略则是针对漏进来的攻击IP进行针对性的过滤。

新版 CloudFlare CDN 防攻击设置新版 CloudFlare CDN 防攻击设置

表达式:(ip.geoip.country ne "CN" and not cf.client.bot and not http.request.full_uri contains "/feed" and ip.src ne 源站IP and not http.request.full_uri contains ".html" and not http.user_agent contains "WellKnownBot" and cf.threat_score gt 3)

主要作用:首先过滤国家不等于china,因为来自国内的攻击IP极少。我们的访客绝大多数也来自china所以直接略过国家。

/feed是我们的RSS订阅地址,我们同样略过此地址。

IP源地址是我们的源站IP,针对源站IP来的请求数据我们同样略过。

URL不包含.html是因为本次攻击地址都不是.html地址,所以略过了。我网闸对于.html地址也有缓存。大家自己设置时候这一个可以删掉

UA字段WellKnownBot,这个是当时翻策略拦截日志发现的一个UA,好像是个正常请求。所以给他过滤了。

威胁分数大于3,这里是保证整个策略不至于过于严格,只针对威胁分数大于 3 的 IP 生效。

2.1.5地区策略

新版 CloudFlare CDN 防攻击设置新版 CloudFlare CDN 防攻击设置

表达式:(ip.geoip.country eq "ID")

这里一般不需要设置,我是看攻击IP有大量来自印尼的IP,网站基本也没印尼的访客,所以来自印尼的IP全部进行CAPTCHA交互式人机验证。

2.2 DDOS策略

CloudFlare针对DDOS有自己的分析策略可供我们使用。

这里CloudFlare的DDOS实际是包含我们常说的CC攻击的,七层和四层区别。

新版 CloudFlare CDN 防攻击设置新版 CloudFlare CDN 防攻击设置

新版 CloudFlare CDN 防攻击设置新版 CloudFlare CDN 防攻击设置

CloudFlare会分析请求是否是DDOS,对于符合的请求我们可以选择进行验证。另外规则集敏感度也可以进行调整。

这里如果你正在被攻击,可以将敏感度设置为高。实测误比较少,如果网站长期套CloudFlare,我们可以设置为中。

2.3 其他WAF设置

新版 CloudFlare CDN 防攻击设置新版 CloudFlare CDN 防攻击设置

2.4 缓存设置

缓存设置好也可以帮助我们抵挡巨量的CC攻击。有些CC是很多IP随即攻击一个地址,如果我们的安全策略没有拦截到攻击。但是我们设置了缓存,那这些请求则会在CloudFlare边缘节点直接将缓存内容返回给请求。也达到了抗攻击的效果。

缓存设置是在多个位置进行的。下面大家看截图就好。

新版 CloudFlare CDN 防攻击设置新版 CloudFlare CDN 防攻击设置

创建一个静态文件的缓存规则。

新版 CloudFlare CDN 防攻击设置新版 CloudFlare CDN 防攻击设置

新版 CloudFlare CDN 防攻击设置新版 CloudFlare CDN 防攻击设置

新版 CloudFlare CDN 防攻击设置新版 CloudFlare CDN 防攻击设置

上面的是基础缓存,对于页面的缓存我们使用下面的规则。

新版 CloudFlare CDN 防攻击设置新版 CloudFlare CDN 防攻击设置

新版 CloudFlare CDN 防攻击设置新版 CloudFlare CDN 防攻击设置

下面这个是我针对RSS地址的缓存设置。实际可以不设置这个规则。

新版 CloudFlare CDN 防攻击设置新版 CloudFlare CDN 防攻击设置

新版 CloudFlare CDN 防攻击设置新版 CloudFlare CDN 防攻击设置

2.5 其他杂项

一些设置比较散乱,这里给大家列出来。

Tor洋葱路由关闭,否则攻击可能穿进源服务器。

新版 CloudFlare CDN 防攻击设置新版 CloudFlare CDN 防攻击设置

2.6 最终防御5秒盾

目前本站遇到的攻击无需开启五秒盾。

如果你的攻击比较大,而且依靠上面规则无法抵挡的话,就开启这个吧。开启后所有请求都会进行人机验证,影响较大。

新版 CloudFlare CDN 防攻击设置新版 CloudFlare CDN 防攻击设置