CloudFlare是全球领先的CDN服务提供商,其提供的免费且足量的服务是诸多站长遭受网络攻击时的“避风港”。
在很长一段时间里,笔者看到身边很多人在遭受攻击时只是简单地打开Under Attack模式,完全没有利用到自定义WAF功能。恰好前段时间在Hostloc论坛看到了相应的话题,稍作整理,这篇博客就来简单分享下笔者觉得比较实用的防火墙规则。
首先,简单介绍下今天的主角【防火墙规则】,CF向免费版用户(包括Plesk Plus版)提供了5条防火墙规则,可通过【防火墙】-【防火墙规则】进行配置。自定义防火墙规则的目的,就是圈定包含一定特征(如IP、UA、地域、提供商等)的可疑对象,并对其进行验证码质询或阻止访问。充分认识这个目标,后续的所有逻辑都将围绕它来展开。
此外,防火墙规则的触发机制是自上而下触发一次,高优先级的规则要放在上部。在规则设置中需要灵活组合匹配条件,and需要全部满足、or为满足任一条件。下文提供的匹配规则,请通过【编辑表达式】功能修改并输入。
最后在开始配置防火墙规则之前,请先前往【防火墙】-【设置】下,将【Privacy Pass支持】关闭,以避免一种绕过质询的可能(尽管如此,免费版的hCaptcha依然存在可绕过的方式,所以在较严重的情况下应适当选择阻止部分访问)。
一、白名单放行 ★目标1:放行已知Bot及白名单IP地址
放在最高优先级的目标是允许已知的正常流量通过防火墙,因为我们后续的配置比如针对机房AS会使得验证施加于GoogleBot之类的搜索引擎爬虫,此外白名单IP可以包括自己的调试IP、已知的善意rss爬虫等。
如图,Bot可以直接选用CF提供的【合法机器人爬虫】,IP白名单选用包含以下各项,选择操作为允许。
匹配规则:https://cloudhouse.top/archives/4.html
二、IDC ASN验证 ★目标2:验证来自常见数据中心的访客
第二条规则,利用的是CF对ASN的判断。这里提到的ASN为自治网络的代码,如AS4134为中国电信。以下列表中基本是数据中心服务商的代号,因为对外提供租赁它们也是常见的网络攻击来源,而非海外真实访客常用的家庭宽带ISP。
如图,配置为ASN的包含以下各项,选择操作一般为验证码【质询】或者【JS质询】,在遭受严重攻击选择【阻止】。
ASN清单:https://cloudhouse.top/archives/4.html 匹配规则:https://cloudhouse.top/archives/4.html
三、风险IP验证 ★目标3:验证收集的高风险IP地址
第三条规则,利用的是威胁分数和IP列表的判断。前者是 Cloudflare 用来确定 IP 信誉的分数,范围由好到差评为0-100;后者由蜜罐等方式抓取,可以结合自己实际表现进行增减。
由于提供的IP列表数量较大,直接配置超过了防火墙规则的字符上限,因此需要通过【管理账户】-【配置】-【列表】-【创建新列表】创建一个包含高风险IP的列表(供导入的csv在下方),再在防火墙中直接匹配此列表。
如图,配置为IP源地址、在列表中以及威胁分数大于30。这一条由于覆盖范围较大误伤概率远高于上一条,选择操作建议为【JS质询】,在遭受攻击时再选择【质询】或【阻止】。
风险IP清单:请在本文底部点击“阅读原文”前往【云屋Wiki】获取 风险IP CSV:请在本文底部点击“阅读原文”前往【云屋Wiki】获取 匹配规则:请在本文底部点击“阅读原文”前往【云屋Wiki】获取
四、主机名细则 ★目标4:对单个主机的细则配置
前面提到了通过and和or组合规则,对于一些杂项,可以通过主机名and去限定区间,这里推荐一些常用的匹配方式。
匹配规则和解释: 主机名:针对输入网站域名的配置 URL路径:针对访问链接路径中内容的匹配 国家/地区:针对访问IP来源地区的匹配 SSL/HTTPS:针对是否使用https访问的匹配
前三条内容与以上四个的组合可以很灵活地圈定范围,比如主机名 URL路径可以实现对特定目录、特定文件(比如登录页等)设置更高的验证要求。
这里也有前人总结的一些不友好的UA,对于阻止常见的扫描器等有一定的作用。这里没把它单独拿出来设置是笔者觉得这是个防君子不防小人的做法,很容易绕过。在设置时,建议通过and组合主机名、http访问方式匹配,对全局开放的个人觉得意义不如前几个大,请自行结合实际去考量。
风险UA基础规则:https://cloudhouse.top/archives/4.html 风险UA其他规则:https://cloudhouse.top/archives/4.html