前段时间网站一直被攻击,然后博主扛不住了搬去了 CloudFlare 。初期因为设置问题,攻击还是透过了CloudFlare 打到了源站。后面经过多次的设置后已经可以完全阻止攻击请求了。下面给大家分享下我的设置,如果你的网站被攻击了,可以根据自己的实际情况微调修改下。
1.设置前说明
网站程序为WordPress,不同程序可能需要微调下策略。
CloudFlare免费版默认设置是针对整个域名的,如果你有其他二级域名站点,需要注意下这个策略对你其他站点有没有影响。
在你使用CloudFlare前确保你的源站IP没有暴露,否则对方可以直接指定hosts到你的源站IP,CloudFlare就形同虚设。
如果源站IP已经暴露,先把数据备份出来。开一台新服务器创建站点。
关于CloudFlare接入的基础操作这里就不讲了,比如SSL设置之类。
下面的规则自己实际使用后一定不要暴露出来,否则攻击者会针对性的进行攻击。建议自己进行规则微调。
2.策略详情
策略设置有优先级,排名靠前的优先级大于后方策略。所以说针对搜索引擎蜘蛛的策略,一定放在第一个!
2.1 waf设置
WAF策略总览
2.1.1搜索引擎蜘蛛策略
表达式:(cf.client.bot)
主要作用:CloudFlare 对于常见搜索引擎蜘蛛IP有自己的一份数据库,符合此要求的请求将会直接访问网站数据。不会经过 CloudFlare 的 WAF 策略等。避免正常蜘蛛访问被拦截。
2.1.2登录页策略
网站我们正常运行必然有访客进行注册登录,针对我们的登录页以及常见被扫描的地址,我们可以单独设置一下人机验证。
主要作用:本站是WordPress程序,所以设置了xmlrpc.php和wp-login.php地址。其他程序根据自己实际情况设置。优先级低于蜘蛛,放到第二也是为了防止有些访客挂着代理被后续的策略阻止。
2.1.3威胁分数策略
此策略是防攻击的主力策略,这一项可以阻挡90%的攻击。
[
主要作用:威胁分数大于等于2,可以阻挡90%的恶意IP。CloudFlare 默认推荐分数5实测基本给攻击全漏了进来,设置3同样有漏IP。所以根据2023年9月目前的网络来说这里建议设置为2!
rss是因为站点有很多人通过RSS进行订阅,所以针对此类请求我们不要对他进行人机验证。
这里针对RSS策略比较简单,如果攻击者知道了你的策略可能会针对性攻击,我们实际使用时可以适当变通一下。
2.1.4细化攻击策略
上一个策略是简单的通过威胁分数判断,现在这个策略则是针对漏进来的攻击IP进行针对性的过滤。
[
主要作用:首先过滤国家不等于china,因为来自国内的攻击IP极少。我们的访客绝大多数也来自china所以直接略过国家。
/feed是我们的RSS订阅地址,我们同样略过此地址。
IP源地址是我们的源站IP,针对源站IP来的请求数据我们同样略过。
URL不包含.html是因为本次攻击地址都不是.html地址,所以略过了。我网闸对于.html地址也有缓存。大家自己设置时候这一个可以删掉。
UA字段WellKnownBot,这个是当时翻策略拦截日志发现的一个UA,好像是个正常请求。所以给他过滤了。
威胁分数大于3,这里是保证整个策略不至于过于严格,只针对威胁分数大于 3 的 IP 生效。
2.1.5地区策略
[
这里一般不需要设置,我是看攻击IP有大量来自印尼的IP,网站基本也没印尼的访客,所以来自印尼的IP全部进行CAPTCHA交互式人机验证。
2.2 DDOS策略
CloudFlare针对DDOS有自己的分析策略可供我们使用。
这里CloudFlare的DDOS实际是包含我们常说的CC攻击的,七层和四层区别。
[
[
CloudFlare会分析请求是否是DDOS,对于符合的请求我们可以选择进行验证。另外规则集敏感度也可以进行调整。
这里如果你正在被攻击,可以将敏感度设置为高。实测误比较少,如果网站长期套CloudFlare,我们可以设置为中。
2.3 其他WAF设置
[
2.4 缓存设置
缓存设置好也可以帮助我们抵挡巨量的CC攻击。有些CC是很多IP随即攻击一个地址,如果我们的安全策略没有拦截到攻击。但是我们设置了缓存,那这些请求则会在CloudFlare边缘节点直接将缓存内容返回给请求。也达到了抗攻击的效果。
缓存设置是在多个位置进行的。下面大家看截图就好。
[
创建一个静态文件的缓存规则。
[
[
[
上面的是基础缓存,对于页面的缓存我们使用下面的规则。
2.4.1 页面规则
[
[
下面这个是我针对RSS地址的缓存设置。实际可以不设置这个规则。
[
[
2.5 其他杂项
一些设置比较散乱,这里给大家列出来。
Tor洋葱路由关闭,否则攻击可能穿进源服务器。
2.6 最终防御5秒盾
目前本站遇到的攻击无需开启五秒盾。
如果你的攻击比较大,而且依靠上面规则无法抵挡的话,就开启这个吧。开启后所有请求都会进行人机验证,影响较大。