Cloudflare从入门到精通 5. 使用WAF保护你的网站

Cloudflare从入门到精通 5. 使用WAF保护你的网站

DeBill Lv2

📜 前言

WAF(Web Application Firewall)全称应用防火墙,顾名思义可以帮我们过滤掉恶意的网络流量,只要域名托管在 Cloudflare 上就可以使用 Cloudflare WAF 强大的定制规则来保护我们的应用,无需在网站后端自己部署一个网关来处理各种流量,本文会介绍 Cloudflare WAF 的核心概念和组件,同时教大家配置一些简单的规则防护你的网站。

WAF 是 Cloudflare 的拳头产品,其中的概念和用法非常多,且免费计划和各类付费计划能使用的功能也各不相同,下文会先介绍免费计划里能用到的功能,也会提付费计划里能用到的各种概念和功能,方便大家对 WAF 有个一个整体的认识。为了避免歧义,博主会用英文来直接描述各种概念,避免翻译造成的歧义。

🆓 免费计划可用功能

首先我们找到 WAF 的操作界面: Dashboard –> 域名空间 –> Security –> WAF 。可以到一共由 Custom rules, Rate limiting rules, Managed rules, Tools 四部分组成,下面一一介绍。

waf-entrance-2

Custom rules

免费计划允许用户创建 5 条自定义规则来处理流量。点击 「Create rule」可以进入规则设置界面。规则遵循以下机制:Field value 达到什么条件,就采取什么 Action。 Cloudflare 提供了操作面板配置你想要的规则,也允许用户直接编写规则表达式来配置规则,一般情况下我们用面板直接配置就行。

custom-rule-1

Field 可以选择的项非常多,例如 URI 路径、AS Num、国家、客户端类型等等选项,基本能满足你 90%的需求。

custom-rule-2

action 主要有 5 种:

  • Managed Challenge:这个 Cloudflare 官方推荐的一种的验证方式。我们上网时肯定会遇到类系的验证方式,在九宫格图片中让我们点选满足条件的方块,类似下图:

google-captcha

这种验证方式非常麻烦,稍不留神就会点错,交互体验不好。Cloudflare 提供了一种动态校验请求的验证方式,用户不再需要点选 captcha 图,相信大家上网时都看过下面的图。

Cloudflare-captcha

  • Block: 拒绝请求,不再执行后续的规则。所以你有多条规则要运行的时候,如果有规则采取 block 操作要注意规则放置的位置
  • JS Challenge: JS Challenge 要求用户在浏览器中运行 Cloudflare 提供的 JavaScript 脚本,以确认其身份,适合需要额外安全性的情况。用户必须等待浏览器处理完 JS 脚本才能进行下一步操作,处理时间一般在 5 秒以内
  • Skip: 跳过 WAF 一些功能或者特定的防护产品。例如可以让命中规则的请求跳过剩下的规则。

custom-rule-skip

  • Interactive Challenge: 采取交互式的验证方式,这种方式 Cloudflare 不推荐,推荐使用 Managed Challenge

custom-rule-3

最后选择该规则放置的位置,位置会影响一些使用了 Block,Skip 的规则。最后点 Deploy 该规则就立马生效了。

Rate limiting rules

该功能对命中匹配表达的请求进行访问速率限制,免费计划只有 1 条可以使用,且可选项也比较有限,例如 Field 目前只有 Password Leaked、URI Path、Verified Bot、Verified Bot Category 选项。特征也只能选择 ip,速率也只能选择每 10 秒多少个请求,action 只能选择 block。

rate-limiting

Managed rules

Managed rules 允许你部署预配置的规则集,避免常见的网络攻击,点进这个 Tab 发现要升级成 pro 会员才能进一步设置。但是根据官方提示我们知道,即便免费计划的用户也能享用 Free Managed Ruleset 的基础防护,至于这个 Ruleset 是什么,以后的文章会详细介绍,这里不展开说明。

managed-rules

Tools

如果前面的 Custom rules 和 Rate limiting rule 还不能满足你的需求,Cloudflare 还提供了一些防护工具,免费计划能用的是 Ip Access Rules 和 User Agent Blocking

Ip Access Rules

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 都来爬过我的网站,还有一些我完全不认识的网站也会来爬我的网站,然而我给百度提交那么多次网站,百度的爬虫从来没来过 : )

events

💰 付费计划独有功能

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(规则集),从而让账户下每个域名都能共享这些规则,而无需在每个域名下面一一设置

waf-entrance-1

  • 入口 2: Dashboard –> 域名空间 –> Security –> WAF。这是我们绝大部分用户使用 WAF 的入口,上文已经有详细的介绍。

waf-entrance-2

Threat Score

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我们都放行

knowns-bots

Verified Bot Category

verified-bot1

在 Custom rule 的设置里还有一个选项叫 Verified Bots Category指 Cloudflare 验证过的一些好的机器人的分类,例如搜索引擎的爬虫机器人,监控和分析相关的机器人等等,可以到Cloudflare Radar 查找是否有你想要的机器人,配置 Custom rule 的时候可以考虑使用这个属性。例如我们希望让所有搜索引擎的爬虫都能爬到我们网站的内容,那个 Verified Bots Category 这一项就可以选择 Search Engine Crawler

verified-bot2

规则执行顺序

前面我们提了很多规则,他们的执行顺序如下:

Custom rulesets(企业级用户才有的功能,作用于全部域名)–> Custom rules(每个域名自己的规则)–> Rate limiting rules –> Managed Rules

💡 彩蛋

如果我们需要对一批 ip 进行特定的处理,在 Custom rule 里设置规则时就需要一条一条添加 ip,非常麻烦,很多人不知道 Cloudflare 还有 List 功能,免费计划里这个功能可以让你设置一个 ip 集合,让你不用再手动添加大量的 ip。

入口:帐号首页 –> Manage Account –> Configurations –> Lists

lists

点击 Create list,免费计划只能添加跟 ip 相关的 list,付费计划可以创建其他类型的 List

lists-create

我们回到 WAF –> Custom rules。这里我们设置一条规则:屏蔽在 list_test 里的 ip 。Field 选择 IP Source Address, Operator 选择 is in,这里发现 value 无法下拉选择,我们只能通过修改表达式的方式实现。注意填写正确的 list 变量名,如果给 list 命名为 list_test 则变量为$list_test。设置成功后我们点击部署即可。

list-expression

部署完我们查看规则详情,发现正确引用了自定义的 list,点击 Manage lists 又会跳转到 List 的设置界面

list-detail

📝 总结

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 RulesFree 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 进行许可。
评论