怎样使用 CloudFlare CDN 防攻击

2024年2月2日 | 分类: 【技术】

原文:https://www.cheshirex.com/7927.html

前段时间网站一直被攻击,然后博主扛不住了搬去了 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登录页策略

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

表达式:(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%的攻击。

表达式:(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进行针对性的过滤。

表达式:(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地区策略

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

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

2.2 DDOS策略

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

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

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

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

2.3 其他WAF设置

2.4 缓存设置

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

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

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

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

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

2.5 其他杂项

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

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

2.6 最终防御5秒盾

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

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