Cloudflare从入门到精通 5. 使用WAF保护你的网站
📜 前言
WAF(Web Application Firewall)全称应用防火墙,顾名思义可以帮我们过滤掉恶意的网络流量,只要域名托管在 Cloudflare 上就可以使用 Cloudflare WAF 强大的定制规则来保护我们的应用,无需在网站后端自己部署一个网关来处理各种流量,本文会介绍 Cloudflare WAF 的核心概念和组件,同时教大家配置一些简单的规则防护你的网站。
WAF 是 Cloudflare 的拳头产品,其中的概念和用法非常多,且免费计划和各类付费计划能使用的功能也各不相同,下文会先介绍免费计划里能用到的功能,也会提付费计划里能用到的各种概念和功能,方便大家对 WAF 有个一个整体的认识。为了避免歧义,博主会用英文来直接描述各种概念,避免翻译造成的歧义。
🆓 免费计划可用功能
首先我们找到 WAF 的操作界面: Dashboard –> 域名空间 –> Security –> WAF 。可以到一共由 Custom rules, Rate limiting rules, Managed rules, Tools 四部分组成,下面一一介绍。
Custom rules
免费计划允许用户创建 5 条自定义规则来处理流量。点击 「Create rule」可以进入规则设置界面。规则遵循以下机制:Field value 达到什么条件,就采取什么 Action。 Cloudflare 提供了操作面板配置你想要的规则,也允许用户直接编写规则表达式来配置规则,一般情况下我们用面板直接配置就行。
Field 可以选择的项非常多,例如 URI 路径、AS Num、国家、客户端类型等等选项,基本能满足你 90%的需求。
action 主要有 5 种:
- Managed Challenge:这个 Cloudflare 官方推荐的一种的验证方式。我们上网时肯定会遇到类系的验证方式,在九宫格图片中让我们点选满足条件的方块,类似下图:
这种验证方式非常麻烦,稍不留神就会点错,交互体验不好。Cloudflare 提供了一种动态校验请求的验证方式,用户不再需要点选 captcha 图,相信大家上网时都看过下面的图。
- Block: 拒绝请求,不再执行后续的规则。所以你有多条规则要运行的时候,如果有规则采取 block 操作要注意规则放置的位置
- JS Challenge: JS Challenge 要求用户在浏览器中运行 Cloudflare 提供的 JavaScript 脚本,以确认其身份,适合需要额外安全性的情况。用户必须等待浏览器处理完 JS 脚本才能进行下一步操作,处理时间一般在 5 秒以内
- Skip: 跳过 WAF 一些功能或者特定的防护产品。例如可以让命中规则的请求跳过剩下的规则。
- Interactive Challenge: 采取交互式的验证方式,这种方式 Cloudflare 不推荐,推荐使用 Managed Challenge
最后选择该规则放置的位置,位置会影响一些使用了 Block,Skip 的规则。最后点 Deploy 该规则就立马生效了。
Rate limiting rules
该功能对命中匹配表达的请求进行访问速率限制,免费计划只有 1 条可以使用,且可选项也比较有限,例如 Field 目前只有 Password Leaked、URI Path、Verified Bot、Verified Bot Category 选项。特征也只能选择 ip,速率也只能选择每 10 秒多少个请求,action 只能选择 block。
Managed rules
Managed rules 允许你部署预配置的规则集,避免常见的网络攻击,点进这个 Tab 发现要升级成 pro 会员才能进一步设置。但是根据官方提示我们知道,即便免费计划的用户也能享用 Free Managed Ruleset 的基础防护,至于这个 Ruleset 是什么,以后的文章会详细介绍,这里不展开说明。
Tools
如果前面的 Custom rules 和 Rate limiting rule 还不能满足你的需求,Cloudflare 还提供了一些防护工具,免费计划能用的是 Ip Access Rules 和 User Agent Blocking
Ip Access Rules
该功能允许你对 IP、IP 范围、国家、ASN 的请求进行特定的操作,相当于 Custom Rules 的一个特例,所以 Cloudflare 也建议你用 Custom Rules 来设置规则,而不是使用该工具。但是对于免费用户来说 5 条自定义规则少得可怜,如果你 Custom Rules 里涉及到对 IP、IP 范围、国家、ASN 的请求进行特定的操作,不妨使用该工具。需要注意以下几点:
- 每个帐号可以设置 50000 条 Ip Access Rules,对于绝大多数人来说完全用不完
- 免费用户不能用该工具 block 指定国家的请求,只能在 Custom rules 里设置
- Ip Access Rules 设置为 Allow 的流量,不会出现在 Security Events 看板里
- 根据上图右侧流量处理顺序,Ip Access Rules 先于 Custom rules 执行,所以 Custom rules 里无法使用 skip 跳过
User Agent Blocking
免费计划可以定义 10 条规则来限制不同客户端的各种行为,同样这个工具相当于 Custom Rules 的一个特例,所以 Cloudflare 也建议你用 Custom Rules 来设置规则,除非你不想占用 5 条宝贵的 Custom Rules
Security Events
Security Events 提供一个看板可以查看命中规则的请求一些基本信息,免费计划最多只能查看某一天内的所有命中规则的请求日志。这个功能很有意思,我用它来查看有哪些网站来爬过我的网站,即便我的博客没有多少访问量,Google, Bing, Feedly, Ahrefs 都来爬过我的网站,还有一些我完全不认识的网站也会来爬我的网站,然而我给百度提交那么多次网站,百度的爬虫从来没来过 : )
💰 付费计划独有功能
Managed Rules
付费用户除了可以使用 Free Managed Ruleset 还可以使用 Cloudflare 多年维护更新的规则集,给你的网站再上一层防护。例如:
- Cloudflare Managed Ruleset: Cloudflare 安全团队维护的规则集合,会有频繁的更新
- Cloudflare OWASP Core Ruleset: Cloudflare 对 Open Web Application Security Project 的实现
WAF Attack score
这个功能其实是 Custom rules 里的一些选项的统称,只有高级付费用户(Business 和 Enterprise)才有这些选项,按 Cloudflare 官方的说法,WAF Attack score 是 Managed Rules 的补充,细分下来有 WAF SQLi Attack Score、WAF XSS Attack Score、WAF RCE Attack Score,因为绝大多数人也用不上就不展开讲了
Uploaded content scanning
这个功能只有 Enterprise(企业级)计划的用户才能使用,简单提一句就是帮你检查用户上传的文件是否有病毒。
Security Analytics
这个功能只有 Business 和 Enterprise 计划的用户才能使用。相比 Security Event 会有更丰富的图标供你分析你的网站
🆚 概念区分
Cloudflare WAF 的概念和功能非常多,有必要跟解释一些概念的差异
WAF 入口区分
Cloudflare 现在版本的 WAF 入口有两个,分别是:
- 入口 1: Dashboard –> WAF。可以看到是付费用户才能使用的功能,而且必须是企业级用户才能使用。主要功能是允许你设置一些账户级别的 Custom rulesets(规则集),从而让账户下每个域名都能共享这些规则,而无需在每个域名下面一一设置
- 入口 2: Dashboard –> 域名空间 –> Security –> WAF。这是我们绝大部分用户使用 WAF 的入口,上文已经有详细的介绍。
Threat Score
在 Custom rule 的设置里能看到有一个选项叫 Threat Score
,Cloudflare 通过这个指标来衡量请求的 IP 信誉度,根据 Cloudflare 官方的说法该分数是根据 Project Honeypot 、外部公共 IP 信息以及 WAF 托管规则和 DDoS 的内部威胁情报计算的。分数从 0 到 100 分,越接近 0 分说明该 ip 风险越低,得分超过 10 分代表该 ip 可能来自垃圾邮件或者爬虫机器人,超过 40 分代表一些恶意行为,所以使用这个属性的时候,可以将 40 作为关键阈值
Know Bots
在 Custom rule 的设置里还有一个选项叫 Known Bots
指 Cloudflare Radar 发现的一些已知机器人,其中包括好的机器人也包括坏的机器人。结合 Threat score 我们可以制定一条规则:所有 Threat score
低于 40 的Known Bots
我们都放行
Verified Bot Category
在 Custom rule 的设置里还有一个选项叫 Verified Bots Category
指 Cloudflare 验证过的一些好的机器人的分类,例如搜索引擎的爬虫机器人,监控和分析相关的机器人等等,可以到Cloudflare Radar 查找是否有你想要的机器人,配置 Custom rule 的时候可以考虑使用这个属性。例如我们希望让所有搜索引擎的爬虫都能爬到我们网站的内容,那个 Verified Bots Category 这一项就可以选择 Search Engine Crawler
规则执行顺序
前面我们提了很多规则,他们的执行顺序如下:
Custom rulesets(企业级用户才有的功能,作用于全部域名)–> Custom rules(每个域名自己的规则)–> Rate limiting rules –> Managed Rules
💡 彩蛋
如果我们需要对一批 ip 进行特定的处理,在 Custom rule 里设置规则时就需要一条一条添加 ip,非常麻烦,很多人不知道 Cloudflare 还有 List 功能,免费计划里这个功能可以让你设置一个 ip 集合,让你不用再手动添加大量的 ip。
入口:帐号首页 –> Manage Account –> Configurations –> Lists
点击 Create list,免费计划只能添加跟 ip 相关的 list,付费计划可以创建其他类型的 List
我们回到 WAF –> Custom rules。这里我们设置一条规则:屏蔽在 list_test 里的 ip 。Field 选择 IP Source Address
, Operator 选择 is in
,这里发现 value 无法下拉选择,我们只能通过修改表达式的方式实现。注意填写正确的 list 变量名,如果给 list 命名为 list_test 则变量为$list_test。设置成功后我们点击部署即可。
部署完我们查看规则详情,发现正确引用了自定义的 list,点击 Manage lists 又会跳转到 List 的设置界面
📝 总结
WAF 提供的很多功能都需要高级付费用户才能使用(business 及以上),免费计划里的功能对于一般网站也够用了,可见 Cloudflare WAF 主要服务于企业级用户赚钱。不同计划能用的功能我总结成下面的表格供大家参考
Free ( $0/month) | Pro ($20/month) | Business ($200/month) | Enterprise (Custom) | |
---|---|---|---|---|
Custom Rules | 最多设置 5 条 | 最多设置 20 条 | 最多设置 100 条 | 最多设置 1000 条 |
Rate limiting rules | 只能设置 1 条 | 2 条 | 5 条 | 5 条以上 |
Managed Rules | Free Managed Ruleset | ✅ | ✅ | ✅ |
Security Event | ✅ | ✅ | ✅ | ✅ |
Security Analytics | ❌ | ✅ | ✅ | ✅ |
WAF Attack Scores | ❌ | ❌ | 只有 Attack Score Class | ✅ |
Bot Score | ❌ | ❌ | ❌ | ✅ |
Uploaded content scanning | ❌ | ❌ | ❌ | ✅ |
- 标题: Cloudflare从入门到精通 5. 使用WAF保护你的网站
- 作者: DeBill
- 创建于 : 2024-09-30 12:00:00
- 更新于 : 2025-01-09 23:09:41
- 链接: https://debill.me//cloudflare-series/cloudlfare-waf-5/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。