Cloudflare安全规则实用指南:从路径拦截到IP限制的10个经典范例

前言:在Cloudflare的安全防护体系中,自定义规则是抵御特定威胁的“精准武器”。除了基础的路径拦截,日常运维中还有许多高频场景需要针对性配置。本文将通过10个实用范例,带你掌握Cloudflare规则的灵活用法,覆盖路径防护、IP管控、请求频率限制、UA过滤、地域封锁等核心需求,构建更全面的安全防护网。

一、基础范例:无视大小写拦截特定URL路径

(适用场景:阻止注册页、测试接口等敏感路径的访问)

需求

拦截 https://your-domain.com/user/register 及其所有大小写变种(如 /User/Register/USER/REGISTER),但允许同域名其他路径正常访问。

规则表达式

(http.host eq "your-domain.com" and lower(http.request.uri.path) eq "/user/register")

逻辑解析

  • lower(http.request.uri.path):将请求的URI路径转为小写(如 /User/Register/user/register);
  • 与目标路径 /user/register 精准匹配,无论原始路径大小写如何,均能触发拦截。

动作设置

选择“阻止(Block)”,拦截所有命中该规则的请求。

二、拦截敏感文件访问(如配置文件、备份文件)

(适用场景:防止 .env.sql 等敏感文件被恶意爬取)

需求

禁止访问网站根目录下的配置文件(如 .envconfig.ini)、数据库备份文件(如 backup.sql),无论这些文件是否实际存在(提前阻断探测行为)。

规则表达式

(http.host eq "your-domain.com" and (http.request.uri.path ends_with ".env" or http.request.uri.path ends_with ".ini" or http.request.uri.path ends_with ".sql"))

逻辑解析

  • ends_with 函数:匹配“以特定后缀结尾”的路径(如 /admin/.env/backup/2023.sql 均会被命中);
  • 通过 or 连接多个条件,一次性覆盖多种敏感文件类型。

动作设置

选择“阻止(Block)”,并建议在“高级选项”中勾选“返回403状态码”,避免暴露文件是否存在的信息。

三、限制特定IP段访问后台管理路径

(适用场景:仅允许公司内网IP访问 /admin 等管理后台)

需求

仅允许 192.168.1.0/24(内网段)访问 https://your-domain.com/admin 路径,其他IP访问时直接拦截。

规则表达式

(http.host eq "your-domain.com" and http.request.uri.path starts_with "/admin" and not ip.src in {192.168.1.0/24})

逻辑解析

  • starts_with "/admin":匹配所有以 /admin 开头的路径(如 /admin/login/admin/user);
  • ip.src in {192.168.1.0/24}:判断请求IP是否在内网段内;
  • not 取反:仅当IP不在允许段且访问 /admin 路径时,规则触发。

动作设置

选择“阻止(Block)”,非内网IP访问管理后台时会被直接拦截。

四、阻止恶意User-Agent的请求

(适用场景:拦截爬虫、扫描工具等恶意客户端的访问)

需求

禁止包含“sqlmap”“nmap”“masscan”等关键词的User-Agent访问网站(这些通常是黑客扫描工具的标识)。

规则表达式

(http.host eq "your-domain.com" and (lower(http.user_agent) contains "sqlmap" or lower(http.user_agent) contains "nmap" or lower(http.user_agent) contains "masscan"))

逻辑解析

  • http.user_agent:获取请求头中的客户端标识(如浏览器、爬虫的名称);
  • lower() 函数:统一转为小写,避免因大小写差异漏判(如“SqlMap”“SQLMAP”均会被匹配);
  • contains:判断User-Agent中是否包含指定关键词。

动作设置

选择“阻止(Block)”,或“挑战(Challenge)”(要求验证验证码),根据防护严格程度选择。

五、限制API接口的请求频率(防滥用)

(适用场景:防止 /api 接口被恶意调用导致服务器过载)

需求

https://your-domain.com/api 路径设置频率限制:单个IP每分钟最多请求60次,超过则临时拦截。

规则表达式

(http.host eq "your-domain.com" and http.request.uri.path starts_with "/api" and ratelimit(ip.src, 1m) > 60)

逻辑解析

  • ratelimit(ip.src, 1m) > 60:统计单个IP(ip.src)在1分钟(1m)内的请求次数,超过60次则触发规则;
  • 结合 starts_with "/api",仅对API路径生效,不影响网站其他页面。

动作设置

选择“临时拦截(Block for 10 minutes)”,或“速率限制(Rate Limit)”(Cloudflare会自动返回429状态码)。

六、禁止非浏览器 UA 批量抓取

(适用场景:防止无浏览器标识的脚本爬虫批量爬取数据,减少内容盗用或服务器资源消耗)

需求

当请求的User-Agent(客户端标识)不包含常见浏览器关键字(如Mozilla、Chrome)时,触发验证机制,筛选合法用户与脚本爬虫。

规则表达式

(http.host eq "your-domain.com" and not http.request.headers["user-agent"] matches "(Mozilla|Chrome|Safari|Edg)")

逻辑解析

  • http.request.headers["user-agent"]:精准提取请求头中的UA字段;
  • matches "(Mozilla|Chrome|Safari|Edg)":通过正则匹配UA是否包含常见浏览器核心标识(几乎所有主流浏览器UA均以“Mozilla”开头,Chrome、Safari等为具体浏览器名称);
  • not 取反:仅当UA不包含上述关键字时,规则触发(排除合法浏览器,锁定脚本爬虫)。

动作设置

选择“Managed Challenge”(托管挑战):

  • 对疑似爬虫的请求弹出验证码或JS验证,合法用户完成验证后可正常访问;
  • 相比直接“Block”,大幅降低误杀风险(避免拦截特殊浏览器或合法工具)。

七、封锁特定国家或地区

(适用场景:屏蔽业务不覆盖、恶意流量高发的国家/地区,如境外攻击源、无目标用户的地区)

需求

根据业务需求,直接阻断来自中国(CN)、俄罗斯(RU)等特定国家/地区的所有访问(可根据实际风险调整国家列表)。

规则表达式

(http.host eq "your-domain.com" and (ip.geoip.country eq "CN" or ip.geoip.country eq "RU"))

逻辑解析

  • ip.geoip.country:Cloudflare内置的地理定位字段,返回请求IP对应的两位大写国家代码(如中国为CN、美国为US、日本为JP,完整代码可参考Cloudflare官方文档);
  • eq "CN" or eq "RU":通过逻辑“或”匹配多个目标国家,可根据需求增减(如新增“KP”“IR”等);
  • 需确保域名已开启Cloudflare地理定位功能(默认开启,无需额外配置)。

动作设置

  • 严格防护:选择“Block”,直接返回403状态码,拒绝该地区所有请求;
  • 宽松防护:可改为“Challenge”,允许该地区的合法用户通过验证访问(适合业务可能覆盖部分用户的场景)。

八、阻止空 Referer 的 POST 请求

(适用场景:防范CSRF(跨站请求伪造)攻击,POST请求通常用于提交敏感数据(如表单、支付),空Referer是CSRF的典型特征之一)

需求

仅拦截“POST方法+Referer为空”的请求,不影响GET方法(GET请求可能存在合法空Referer场景,如直接输入URL访问)。

规则表达式

(http.host eq "your-domain.com" and http.request.method eq "POST" and not http.request.headers["referer"] exists)

逻辑解析

  • http.request.method eq "POST":锁定提交数据的请求方法,GET/DELETE等方法不触发;
  • not http.request.headers["referer"] exists:判断请求头中是否缺少“Referer”字段(空Referer包含“Referer字段不存在”或“字段值为空”两种情况,此表达式可覆盖两者);
  • 合法POST请求通常会携带Referer(标识请求来源页面),空Referer大概率为恶意伪造请求。

动作设置

选择“Block”:直接阻断空Referer的POST请求,避免恶意提交数据,降低CSRF攻击风险。

九、限制 URL 路径深度(防目录遍历)

(适用场景:防止“目录遍历攻击”,即黑客通过构造 ../../../etc/passwd 等路径,试图读取服务器系统文件或敏感目录)

需求

当请求的URL路径层级≥6时触发拦截,避免路径过深导致的遍历风险(正常业务路径层级通常较少,如 /user/profile 层级为3)。

规则表达式

(http.host eq "your-domain.com" and length(split(lower(http.request.uri.path), "/")) ge 6)

逻辑解析

  • split(lower(http.request.uri.path), "/"):将路径按“/”分割为数组(如 /a/b/c/d/e/f 分割后为 ["", "a", "b", "c", "d", "e", "f"]),lower() 函数统一小写,避免路径大小写干扰;
  • length(...) ge 6:计算分割后的数组长度,≥6即触发规则(上述例子数组长度为7,满足条件);
  • 路径层级的计算:数组长度-1(因路径开头的“/”会导致第一个元素为空),如数组长度6对应实际层级5,可根据业务调整“ge 6”中的数值(如业务路径最深为4层,可设为“ge 5”)。

动作设置

选择“Block”:直接拦截过深路径的请求,从源头阻止目录遍历攻击。

十、限速登录接口(基于路径+方法)

(适用场景:防止登录接口被“暴力破解”,即黑客通过批量尝试账号密码的方式非法登录)

需求

/api/login 路径的POST请求(登录接口通常为POST提交账号密码)设置严格速率限制:单个IP每分钟最多尝试10次,超过则临时拦截。

规则配置

1. 规则表达式(定位登录接口)
(http.host eq "your-domain.com" and http.request.uri.path eq "/api/login" and http.request.method eq "POST")
2. 速率限制设置(需在Cloudflare“WAF → Rate limiting rules”中单独创建)
限制维度数值说明
统计对象单个IP(ip.src)防止单IP高频尝试
时间窗口1分钟(1m)短窗口快速响应暴力破解
最大请求数10次可根据业务调整(如5次/1分钟,更严格)

逻辑解析

  • 精准定位:通过“路径(/api/login)+方法(POST)”双重条件,仅对登录接口生效,不影响其他API;
  • 速率限制:相比普通自定义规则的ratelimit函数,Cloudflare“Rate limiting rules”支持更灵活的配置(如阶梯限速、自定义响应码),更适合登录这类高敏感接口。

动作设置

选择“Block”:超过10次/分钟的IP将被临时拦截(默认返回429状态码),可在规则中设置拦截时长(如10分钟),限制黑客持续尝试。
在这里插入图片描述

十一、规则配置的通用注意事项

  1. 代理状态检查:确保域名的DNS解析为“橙色云”(通过Cloudflare代理),否则规则无法生效;
  2. 执行顺序:拦截类规则需放在“允许类规则”之前(可在Cloudflare控制台拖动调整),避免允许规则优先触发导致拦截失效;
  3. 测试验证:通过 curl -v 目标URL 模拟请求(如指定空Referer、修改UA),或使用Cloudflare“规则测试器”(Rules Tester)验证规则是否精准命中;
  4. 日志跟踪:在“分析和日志 > Log Explorer”中搜索规则名称,查看拦截记录,确认是否存在误杀(如合法用户被拦截需调整规则条件);
  5. 业务适配:所有规则需结合业务场景调整(如路径深度、速率限制数值),避免因规则过严影响正常用户访问。

总结

Cloudflare自定义规则的核心是“精准匹配 + 灵活动作”:通过路径、IP、UA、地理定位、请求方法等维度组合条件,再搭配Block/Challenge/Rate Limit等动作,可覆盖从基础拦截到高级防护的全场景需求。

本文的10个范例涵盖了“爬虫防护、地域封锁、CSRF防御、暴力破解防护、目录遍历防护”等高频场景,实际配置时可进一步组合条件(如“IP地域+路径+速率限制”),构建更严密的安全防护体系。同时,需定期查看规则日志,根据攻击趋势调整条件,确保防护效果与用户体验的平衡。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/95320.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/95320.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构(时空复杂度)

目录 一、算法复杂度 二、时间复杂度 1.不同时间度代码举例 三、空间复杂度 一、算法复杂度 算法复杂度(评估算法优劣一个重要指标)分为时间复杂度和空间复杂度。 时间复杂度是指执行算法所需要的计算工作量,而空间复杂度是指执行这个…

ESXI8多网卡链路聚合

1. 背景 测试服务器只有千兆网卡,增加上行带宽,使用两块网卡做链路聚合。 2. 环境 VM ESXI 8.0 华为交换机 S5735S 3. 交换机配置 负载均衡方式采用了src-dst-ipTrunk模式采用了手工负载分担(测试了静态LACP,未成功)4.…

从“人工驱动”到“AI协同”:良策金宝AI如何助力设计院数智化跃迁?

在“双碳”目标驱动下,电力工程项目的数量与复杂度持续攀升。设计院面临“项目多、周期短、人力紧”的三重压力,传统的“人工驱动”模式已难以为继。良策金宝AI,正是这场变革的核心引擎。它以AI驱动数智化服务,为工程设计企业提供…

vue3 vite 自适应方案

两种方案: 1 使用 postcss-pxtorem插件 npm install postcss-pxtorem autoprefixer --save-dev # 或 yarn add postcss-pxtorem autoprefixer -D 2、postcss-px-to-viewport npm install postcss-px-to-viewport --save-dev 或 yarn add postcss-px-to-viewport -D …

华为研发投资与管理实践(IPD)读书笔记

在全球科技产业竞争日趋激烈的背景下,企业研发管理早已告别 “依赖个体经验、靠运气突破” 的粗放时代,如何将研发创新从 “偶然成功” 转化为 “可复制、可持续的必然成果”,成为所有追求长期竞争力的企业必须破解的命题。华为,作…

【LeetCode_283】移动零

刷爆LeetCode系列LeetCode第283题:github地址前言题目描述题目与思路分析代码实现算法代码优化LeetCode第283题: github地址 有梦想的电信狗 前言 本文用C实现 LeetCode 第283题 题目描述 题目链接:https://leetcode.cn/problems/move-z…

一文弄懂C/C++不定参数底层原理

目录 一、C语言的可变参数:基于栈帧的手动读取 (1)C函数调用的栈帧结构 (2)C 可变参数的 4 个核心宏:如何 “手动读栈” (3)实战代码:用 C 可变参数实现求和函数 &a…

【Android】【设计模式】抽象工厂模式改造弹窗组件必知必会

写一个 Android 版本的抽象工厂弹窗 Manager 管理器,使用 DialogFragment 实现,这样能更贴近真实的开发场景。结构设计 抽象产品:BaseDialogFragment(继承 DialogFragment)具体产品:LoginDialogFragment, …

Win64OpenSSL-3_5_2.exe【安装步骤】

官网下载 注意:科学上网,可以加速下载速度! Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions 下载后得到:Win64OpenSSL-3_5_2.exe 双击安装 修改安装路径: 默认就选择第一个。 重要提醒​…

华为云云原生架构赋能:大腾智能加速业务创新步伐

巨大的涡轮、细小的螺丝,一台航天飞机发动机的三维模型呈现在屏幕上,远程同事同步协作,一台复杂设备在工程师高效的协同中不断完善。深圳市大腾信息技术有限公司,正是这场工业变革的推动者之一。大腾智能以“云原生工业”的融合为…

基于https+域名的Frp内网穿透教程(Linux+Nginx反向代理)

系列文章目录 基于http公网ip的Frp内网穿透教程(win server) 基于http域名的Frp内网穿透教程(win serverIIS反向代理) 基于http公网ip的Frp内网穿透教程(Linux) 基于https域名的Frp内网穿透教程(LinuxNginx反向代理) 目录 系列文章目录 前言 一、Frp是什么? 1. …

裸机程序(1)

一、裸机裸机是一个在计算机硬件与软件开发领域高频出现的概念,核心定义是 “未安装操作系统(OS),仅包含硬件本身(或仅运行最底层硬件驱动 / 控制程序)的设备”。在电脑中,裸机会映射代码到cpu&…

95%企业AI失败?揭秘LangGraph+OceanBase融合数据层如何破局!​

本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。不知道你们有没有遇到过,在我们一些实际落地的AI项目中,虽然前期“Demo 很惊艳,但上线后却无人问津”。你们有没有想…

树莓集团产教融合:数字学院践行职业教育“实体化运营”要求

在职业教育改革不断深化的背景下,“实体化运营” 成为推动职业教育高质量发展的重要方向。树莓集团积极响应这一要求,以产教融合为核心,打造数字学院,切实践行职业教育 “实体化运营”,为培养高素质数字领域专业人才探…

ELK 统一日志分析系统部署与实践指南(上)

#作者:张桐瑞 文章目录1 ELK 技术栈概述1.1ELK 核心组件详解1.2 ELK 工作流程2 ELK部署2.1 环境描述2.1.7 配置es集群下篇:《ELK 统一日志分析系统部署与实践指南(下)》 链接: [https://blog.csdn.net/qq_40477248/article/detail…

上位机知识篇---poweshellcmd

要理解 PowerShell 和 CMD 的区别,我们可以先打个通俗的比方:CMD 像老式功能机,只能干打电话、发短信这些 “基础活”;而 PowerShell 像智能手机,不仅能做基础操作,还能装 APP、玩复杂功能,甚至…

利用 Python 绘制环形热力图

暑假伊始,Coldrain 参加了学校举办的数模集训,集训的过程中,遇到了需要展示 59 个特征与 15 个指标之间的相关性的情况,在常用的图表不大合适的情况下,学到了一些厉害的图表,但是似乎千篇一律都是用 R 语言…

【序列晋升】27 Spring Cloud Sleuth给分布式系统装上透视镜

Spring Cloud Sleuth作为微服务架构中的核心监控组件,通过轻量级的无侵入式跟踪机制,解决了分布式系统中请求路径复杂、问题定位困难的痛点。它自动为每个服务请求创建唯一的Trace ID,并为每个服务间调用生成Span ID,形成完整的调…

Linux(2)|入门的开始:Linux基本指令(2)

一、基本指令介绍 回顾上篇博客Linux(1)|入门的开始:Linux基本指令-CSDN博客,我们已经学习了mkdir目录的创建,touch普通文件的创建,光有创建肯定是不行的,接下来就介绍我们的删除指令 1、rmdir指令&&rm指令 …

sv中forever如何结束

在 SystemVerilog 中,forever 循环本身无法自我结束。它的设计初衷就是创建一个永不终止的循环。 因此,要结束一个 forever 循环,必须从外部强制中断它。主要有以下两种方法:1. 使用 disable 语句(最常用和推荐的方法&…