规则综合解读
这段 Cloudflare 防火墙规则主要通过多个条件来过滤和阻止特定的访问请求。以下是对这些规则的综合解读和分析其用意:
- 地理位置过滤:
- 条件:
not ip.geoip.country in {"CN" "HK" "JP" "KR" "SG" "TW" "US" "CA"} - 作用:阻止来自指定国家(中国、香港、日本、韩国、新加坡、台湾、美国、加拿大)之外的访问请求。
- 条件:
- 机器人和爬虫过滤:
- 条件:
not cf.verified_bot_category in {...}和not cf.client.bot - 作用:阻止未验证的机器人和爬虫,允许特定类别的机器人(如搜索引擎爬虫、SEO、监控和分析等)。
- 条件:
- 路径过滤:
- 条件:
http.request.uri.path in {"support" "xmlrpc" "vpn" "zip" "rar" "search" "7z" "gz" "xz" "bak"} and not http.request.uri.path in {"css" "js" "ico" "jpg" "png" "ttf" "woff2" "avif" "jpeg" "heif"} - 作用:阻止特定路径(如支持、xmlrpc、vpn、压缩文件等)的访问,但允许静态资源(如css、js、图片等)请求。
- 条件:
- 请求方法过滤:
- 条件:
not http.request.method in {"GET" "POST" "HEAD"} - 作用:阻止除GET、POST和HEAD以外的其他HTTP请求方法。
- 条件:
- ASN(自治系统编号)过滤:
- 条件:
ip.geoip.asnum in {...} and not cf.client.bot and not cf.verified_bot_category in {...} - 作用:阻止来自特定ASN的请求,除非是验证过的机器人。
- 条件:
- User-Agent过滤:
- 条件:
http.user_agent contains "?"、http.user_agent contains "lib"、http.user_agent contains "Opera"、http.user_agent contains "MSIE" - 作用:阻止包含特定User-Agent的请求(如包含问号、lib、Opera、MSIE等)。
- 条件:
- 威胁评分过滤:
- 条件:
cf.threat_score gt 5 and not ip.src in {8.8.8.8} - 作用:阻止威胁评分大于5的请求,除非请求来源IP是8.8.8.8。
- 条件:
- 高风险IP过滤:
- 条件:
ip.src in $risk_ips - 作用:阻止来自高风险IP地址的请求。
- 条件:
地理位置过滤
阻止来自指定国家/地区之外的访问请求。
- 允许的国家/地区:
- 中国(CN)
- 香港(HK)
- 日本(JP)
- 韩国(KR)
- 新加坡(SG)
- 台湾(TW)
- 美国(US)
- 加拿大(CA)
机器人和爬虫过滤
阻止未验证的机器人和爬虫,仅允许特定类别的机器人访问。
- 允许的机器人类别:
- 搜索引擎爬虫
- 搜索引擎优化(SEO)
- 监控与分析
- 广告与营销
- 页面预览
- 学术研究
- 安全性
- 无障碍访问
- Webhooks
- Feed 提取器
- AI 爬虫
- 聚合器
- 其他
路径过滤
阻止特定路径的访问请求,同时允许静态资源请求。
- 阻止的路径:
- /support
- /xmlrpc
- /vpn
- /zip
- /rar
- /search
- /7z
- /gz
- /xz
- /bak
- 允许的静态资源路径:
- /css
- /js
- /ico
- /jpg
- /png
- /ttf
- /woff2
- /avif
- /jpeg
- /heif
请求方法过滤
仅允许 GET、POST 和 HEAD 请求方法,阻止其他所有请求方法。
ASN 过滤
阻止来自特定自治系统编号(ASN)的请求,除非是验证过的机器人。
User-Agent 过滤
阻止包含特定 User-Agent 字符串的请求。
- 阻止的 User-Agent 示例:
- 包含 "?"
- 包含 "lib"
- 包含 "Opera"
- 包含 "MSIE"
威胁评分过滤
阻止威胁评分大于 5 的请求,8.8.8.8 除外。
高风险 IP 过滤
阻止来自高风险 IP 地址的请求。
注意事项
- 规则的组合使用需要根据具体的应用场景进行调整。
- 确保在部署规则前进行充分的测试,以避免误阻合法请求。
- 定期审查和更新规则,以适应新的安全威胁和业务需求。
条件组合及逻辑效果分析
组合一
代码:
(not ip.geoip.country in {"CN", "HK", "JP", "KR", "SG", "TW", "US", "CA"}
and not cf.verified_bot_category in {...}
and not cf.client.bot)
效果:
- 拒绝来自上述国家和地区以外的访问请求。中国(CN)、香港(HK)、日本(JP)、韩国(KR)、新加坡(SG)、台湾(TW)、美国(US)、加拿大(CA)。
- 过滤掉未经验证的机器人和非机器人的请求。例如搜索引擎爬虫、搜索引擎优化、监控与分析、广告与营销、页面预览、学术研究、安全性、可访问性、Webhook、Feed提取器、AI爬虫、聚合器等。
- 主要目的是阻止来自不常见来源的非验证流量。
组合二
代码:
(http.request.uri.path in {"support", "xmlrpc", "vpn", "zip", "rar", "search", "7z", "gz", "xz", "bak"}
and not http.request.uri.path in {"css", "js", "ico", "jpg", "png", "ttf", "woff2", "avif", "jpeg", "heif"})
效果:
- 过滤请求路径中包含特定敏感关键词的请求。
- 排除静态资源(如图片、CSS、JS等)的请求。
- 主要目的是阻止访问常见的恶意文件或工具。
组合三
代码:
(not http.request.method in {"GET", "POST", "HEAD"})
效果:
- 过滤掉所有使用非标准HTTP方法的请求。
- 主要目的是防止通过不常见方法进行的攻击。
组合四
代码:
(ip.geoip.asnum in {12816, 12786, 18450, ...}
and not cf.client.bot
and not cf.verified_bot_category in {...})
效果:
- 过滤来自特定AS号(Autonomous System Number)的请求。
- 排除经过验证的机器人和非机器人。
- 主要目的是阻止来自已知恶意或可疑AS号的流量。
组合五至组合十
- 组合五: 过滤User-Agent字符串中包含"?"的请求。主要目的是阻止使用不常见或可疑User-Agent的流量。
(http.user_agent contains "?")
- 组合六: 过滤User-Agent字符串中包含"lib"的请求。主要目的是阻止使用库文件或自动化工具的流量。
(http.user_agent contains "lib")
- 组合七: 过滤User-Agent字符串中包含"Opera"的请求。主要目的是阻止使用Opera浏览器的流量(可能因为此浏览器被滥用)。
(http.user_agent contains "Opera")
- 组合八: 过滤User-Agent字符串中包含"MSIE"的请求。主要目的是阻止使用Internet Explorer的流量(可能因为此浏览器的安全漏洞)。
(http.user_agent contains "MSIE")
- 组合九: 过滤威胁评分大于5的请求,但允许来自8.8.8.8的请求。主要目的是阻止高威胁评分的流量。
(cf.threat_score gt 5
and not ip.src in {8.8.8.8})
- 组合十: 过滤来自高风险IP地址的请求。主要目的是阻止已知高风险IP的流量。
(ip.src in $risk_ips)
你需要有一个cf的iplist在账号中,名字和变量一致
来源:https://github.com/BlueSkyXN/Comprehensive-Network-Defense/tree/master/CF