Cloudflare WAF 实战:轻松防御常见 Web 攻击

   2023年7月的一个晚上,我的Uptime Kuma监控突然弹出了网页超时警报,吓得我直接从床上蹦了起来。赶紧登录宝塔面板一看,CPU使用率居然飙到了100%!当时脑子一片空白,心想这不对劲啊,赶紧去查Cloudflare的访问日志。结果不看还好,一看吓一跳——全是来自美国、南非、巴西的攻击流量!我立马意识到网站可能被攻击了,赶紧跑去宝塔把所有服务都关了,CPU占用率这才降了下来。

   这一折腾,整晚都没睡好,硬着头皮在网上查资料。熬了一夜,终于发现Cloudflare有个WAF功能,加几条规则就能防住CC攻击、SQL注入之类的,而且还是免费的!真是学到了不少。


开始

  1. 登录Cloudflare后,来到主页。找到你想开启WAF防御的域名,点进去。这里我用caotx.cn域名做演示
  2. 点击 左侧边栏 里的 安全性 选项卡
  3. 再点击选项卡里的 WAF 选项
  4. 继续点击页内的 自定义规则 按钮。
  5. 依次点击 创建规则 按钮,创建:
放行SEO爬虫

在规则名称里填入 放行SEO爬虫

把下面TXT里的内容复制好,然后点击上图第二步的 编辑表达式 按钮,然后粘贴进去

1
(cf.client.bot) or (http.user_agent contains "duckduckgo") or (http.user_agent contains "facebookexternalhit") or (http.user_agent contains "Feedfetcher-Google") or (http.user_agent contains "LinkedInBot") or (http.user_agent contains "Mediapartners-Google") or (http.user_agent contains "msnbot") or (http.user_agent contains "Slackbot") or (http.user_agent contains "TwitterBot") or (http.user_agent contains "ia_archive") or (http.user_agent contains "yahoo")

规则质询恶意流量

在规则名称里填入 规则质询恶意流量

把下TXT里的内容复制好,然后点击上图第二步的 编辑表达式 按钮,然后粘贴进去

1
(cf.threat_score ge 5 and not cf.client.bot) or (not http.request.version in {"HTTP/2" "HTTP/3"}) or (not ip.geoip.country in {"AU" "CA" "FR" "DE" "HK" "IR" "JP" "KR" "MY" "SG" "TW" "GB" "US" "CN"})

注意:这个TXT里的内容默认只允许, AU CA FR DE HK IR JP KR MY SG TW GB US CN 地区访问,如果你只想让国内用户访问,那就只保留CN就行。如果需要开放更多地区,把对应地区的缩写加进去就可以了。

  1. 放行SEO爬虫规则质询恶意流量 配置好后,点击页内的 速度限制规则 按钮
  2. 点击 创建规则 按钮,创建:
恶意流量拦截

在规则名称里填入 恶意流量 ,然后按照下面两张图的样子,把 字段运算符 对应填好就行了

往下划,都选择好后再点击 部署 按钮