跳转到内容
搜索文档

网络策略

最后更新 查看 MarkdownAgent 设置

网络策略控制用户与网络目的地之间的 TCP 和 UDP 流量。使用它们可以根据 IP 地址、端口和协议允许或阻止非 HTTP 流量,如 SSH、RDP 和数据库连接。

因为 Cloudflare One 与您的身份提供商集成,您还可以创建基于身份的网络策略。这使您能够跨用户控制对非 HTTP 资源的访问,而无需考虑用户的位置或设备。

网络策略由一个 **Action(操作)**和一个决定操作范围的逻辑表达式组成。要构建表达式,请选择 **Selector(选择器)**和 Operator(运算符),然后在 **Value(值)**字段中输入值或值范围。您可以使用 AndOr 逻辑运算符来评估多个条件。

如果表达式中的条件结合了 query 属性(例如 Source IP)和响应属性(例如 Resolved IP),则该条件将在收到响应时进行评估。

操作

与 DNS 和 HTTP 策略中的操作类似,网络策略中的操作定义了您想要应用于给定的一组元素的决策。您可以为每条策略分配一个操作。

Allow(允许)

API 值:allow

可用选择器

流量

身份

设备姿态

具有 Allow 操作的策略允许网络流量到达某些 IP 或端口。在默认阻止(default-block)配置中,Allow 策略定义了例外情况 —— 不匹配 Allow 策略的流量将被优先级较低的兜底 Block 策略所阻止。例如,以下配置允许特定用户到达给定的 IP 地址:

选择器 运算符 逻辑 操作
Destination IP(目标 IP) in(属于) 92.100.02.102 And(且) Allow(允许)
Email(电子邮件) in(属于) *@example.com

Audit SSH(审计 SSH) 已弃用

API 值:audit_ssh

可用选择器

流量

身份

设备姿态

具有 Audit SSH 操作的策略允许管理员记录 SSH 流量。Gateway 将检测端口 22 上的 SSH 流量。例如,以下配置记录发送到给定 IP 地址的 SSH 命令:

选择器 运算符 操作
Destination IP(目标 IP) in(属于) 203.0.113.83 Audit SSH(审计 SSH)

Gateway 仅审计端口 22 上的 SSH 流量。不支持非标准端口,包括使用 Destination Port 选择器指定的端口。

有关 SSH 记录日志的更多信息,请参阅配置 SSH 代理和命令日志

Block(阻止)

API 值:block

可用选择器

流量

身份

设备姿态

具有 Block 操作的策略会阻止网络流量到达某些 IP 或端口。例如,以下配置会阻止指向端口 443 的所有流量:

选择器 运算符 操作
Destination Port(目标端口) in(属于) 443 Block(阻止)

Cloudflare One 客户端阻止通知

功能可用性

客户端模式 Zero Trust 计划
  • 流量和 DNS 模式
  • 仅流量模式
Enterprise
系统 可用性 最低客户端版本
Windows 2024.1.159.0
macOS 2024.1.160.0
Linux
iOS 1.7
Android 1.4
ChromeOS 1.4

开启 Display block notification for Cloudflare One Client 以显示 Gateway 拦截事件的通知。被拦截的用户将收到来自 Cloudflare One 客户端的操作系统通知,其中包含您设置的自定义消息。如果您没有设置自定义消息,Cloudflare One 客户端将显示默认消息。自定义消息长度必须在 100 个字符或以内。Cloudflare One 客户端每分钟只会显示一条通知。

选择该通知后,Cloudflare One 客户端将引导您的用户访问您配置的 Gateway 拦截页面。或者,您也可以将用户引导至自定义 URL,例如内部支持表单。

开启发送策略上下文时,Gateway 会将匹配请求的详细信息作为查询字符串附加到重定向的 URL 中。并非每个上下文字段都会被包含。可能包含的策略上下文字段包括:

策略上下文字段

字段 定义 示例
User email(用户电子邮件) 发起查询的用户的电子邮件。 &[email protected]
Site URL 原始 HTTP 请求的完整 URL,或 DNS 查询中的域名。 &cf_site_uri=https%3A%2F%2Fmalware.testcategory.com%2F
URL category 要重定向的 URL 的域类别 &cf_request_categories=New%20Domains,Newly%20Seen%20Domains
Original HTTP referer 对于 HTTP 流量,则是 HTTP 请求的原始 HTTP referer 标头。 &cf_referer=https%3A%2F%2Fexample.com%2F
Rule ID 与请求匹配的 Gateway 策略的 ID。 &cf_rule_id=6d48997c-a1ec-4b16-b42e-d43ab4d071d1
Source IP 匹配策略的设备的源 IP 地址。 &cf_source_ip=203.0.113.5
Device ID 匹配策略的设备的 UUID。 &cf_device_id=6d48997c-a1ec-4b16-b42e-d43ab4d071d1
Application names 重定向的域所对应的应用程序名称(如果有)。 &cf_application_name=Salesforce
Filter 触发拦截的流量类型过滤器。 &cf_filter=http, &cf_filter=dns, &cf_filter=av, or &cf_filter=l4
Account ID 关联的 Zero Trust 账户的 Cloudflare 账户 ID &cf_account_id=d57c3de47a013c03ca7e237dd3e61d7d
Query ID 重定向对其生效的 DNS 查询的 ID。 &cf_query_id=f8dc6fd3-a7a5-44dd-8b77-08430bb4fac3
Connection ID 重定向对其生效的代理连接的 ID。 &cf_connection_id=f8dc6fd3-a7a5-44dd-8b77-08430bb4fac3
Request ID 重定向对其生效的 HTTP 请求的 ID。 &cf_request_id=f8dc6fd3-a7a5-44dd-8b77-08430bb4fac3

确保您的操作系统允许 Cloudflare One 客户端发送通知。如果启用了专注模式、勿扰模式或屏幕共享设置,您的设备可能不会显示通知。要在运行 DisplayLink 软件的 macOS 设备上启用客户端通知,您可能需要在镜像显示器时允许系统通知。有关更多信息,请参阅 macOS 文档

Network Override(网络覆盖)

API 值:l4_override

可用选择器

流量

身份

设备姿态

具有 Network Override 操作的策略会覆盖流向或来自特定 IPv4/IPv6 地址或端口的流量。目标 IP 可以是公网 IP,也可以是连接到您的 Zero Trust 网络的私网 IP。例如,以下配置根据用户的身份,将发送到公网 IP 的流量覆盖为私网 IP:

选择器 运算符 逻辑 操作
Destination IP(目标 IP) in(属于) 95.92.143.151 And(且) Network Override(网络覆盖)
User Email(用户电子邮件) in(属于) *@example.com And(且)
Override IP(覆盖 IP) 10.0.0.1

Gateway 仅在您的网络日志中记录成功的覆盖连接。

选择器

Gateway 会将网络流量与以下选择器(或标准)进行匹配。

Access Infrastructure Target(Access 基础设施目标)

Access 基础设施应用程序 保护的所有 目标

UI 名称 API 示例
Access Infrastructure Target(Access 基础设施目标) access.target

Access Private App(Access 私有应用)

Access 自托管私有应用程序 保护的所有目标 IP 和主机名。

UI 名称 API 示例
Self-hosted Access App with Private Address(具有私有地址的自托管 Access 应用程序) access.private_app

Application(应用程序)

您可以将 network 策略应用于不断增加的流行 Web 应用程序列表。有关详细信息,请参阅 应用程序和应用类型

UI 名称 API 示例
Application(应用程序) any(app.ids[*] in {505})

Content Categories(内容类别)

Cloudflare Radar 分类属于特定安全类别的应用程序。

UI 名称 API 示例
Content Categories(内容类别) any(net.fqdn.content_category[*] in {1})

Destination Continent(目标大洲)

请求发往的大陆。地理位置由目标 IP 地址决定。要指定大陆,请在 Value(值) 字段中输入其两位字母代码:

大陆 代码
非洲 AF
南极洲 AN
亚洲 AS
欧洲 EU
北美洲 NA
大洋洲 OC
南美洲 SA
Tor 网络 T1
UI 名称 API 示例
Destination Continent IP Geolocation(目标大陆 IP 地理位置) net.dst.geo.continent == "EU"

Destination Country(目标国家/地区)

请求发往的国家。地理位置由目标 IP 地址决定。要指定国家,请在 Value(值) 字段中输入其 ISO 3166-1 Alpha 2 代码

UI 名称 API 示例
Destination Country IP Geolocation(目标国家/地区 IP 地理位置) net.dst.geo.country == "RU"

Destination IP(目标 IP)

请求目标的 IP 地址。

UI 名称 API 示例
Destination IP(目标 IP) any(net.dst.ip[*] in {10.0.0.0/8})

Destination Port(目标端口)

请求目标的端口号。

UI 名称 API 示例
Destination Port(目标端口) net.dst.port == 2222

检测到的协议 (Detected Protocol)

基于 Cloudflare 的协议检测所推导出的网络协议。

UI 名称 API 示例
Detected Protocol(检测到的协议) net.protocol.detection == "ssh"

Device Posture(设备姿态)

通过设备状态 (Device Posture) 选择器,管理员可以使用来自最终用户设备的信号来保护对其内部和外部资源的访问。例如,安全管理员可以根据设备上是否安装了特定软件以及/或者设备或软件是否以特定方式配置,来选择限制对内部应用程序的所有访问。

有关设备状态检测的更多信息,请参阅 设备状态 (Device posture)

UI 名称 API 示例
Passed Device Posture Checks(已通过的设备状况检查) any(device_posture.checks.failed[*] in {"1308749e-fcfb-4ebc-b051-fe022b632644"}), any(device_posture.checks.passed[*] in {"1308749e-fcfb-4ebc-b051-fe022b632644"})"

Protocol(协议)

用于发送数据包的协议。

UI 名称 API 示例
Protocol(协议) net.protocol == "tcp"

Proxy Endpoint(代理端点)

您的浏览器转发 HTTP 流量的目标代理服务器

UI 名称 API 示例
Proxy Endpoint(代理端点) proxy.endpoint == "3ele0ss56t.proxy.cloudflare-gateway.com"

Security Categories(安全类别)

Cloudflare Radar 分类属于特定安全类别的应用程序。

UI 名称 API 示例
Security Categories(安全类别) any(net.fqdn.security_category[*] in {1})

SNI

服务器名称指示 (SNI) 是客户端在 TLS 握手期间(加密开始前)发送的主机名。Gateway 读取 SNI 以识别加密流量的目的地。SNI 选择器匹配确切的主机名。

默认情况下,SNI 选择器仅适用于端口 443 上的 HTTPS 流量。要检查所有端口上的流量,请开启协议检测并选择在所有端口上进行检查

UI 名称 API 示例
SNI net.sni.host == "www.example.com"

SNI Domain(SNI 域名)

Gateway 将针对其服务器名称指示 (SNI) 标头过滤流量的域名。例如,针对 example.com 的规则将匹配 example.comwww.example.commy.test.example.com

默认情况下,SNI 选择器仅适用于端口 443 上的 HTTPS 流量。要检查所有端口上的流量,请开启协议检测并选择在所有端口上进行检查

UI 名称 API 示例
SNI Domain(SNI 域名) net.sni.domains == "example.com"

Source Continent(源大洲)

发起请求的用户的源大陆。

地理位置是根据设备的公网 IP 地址(通常由用户的 ISP 分配)决定的。要指定大洲,请在字段中输入其两位字母代码:

大洲 代码
非洲 AF
南极洲 AN
亚洲 AS
欧洲 EU
北美洲 NA
大洋洲 OC
南美洲 SA
Tor 网络 T1
UI 名称 API 示例
Source Continent IP Geolocation(源大陆 IP 地理位置) net.src.geo.continent == "North America"

Source Country(源国家/地区)

发起请求的用户的源国家/地区。

地理位置是根据设备的公网 IP 地址(通常由用户的 ISP 分配)决定的。要指定国家/地区,请在字段中输入其 ISO 3166-1 Alpha-2 代码

UI 名称 API 示例
Source Country IP Geolocation(源国家/地区 IP 地理位置) net.src.geo.country == "RU"

Source Internal IP(源内部 IP)

使用此选择器将 network 策略应用于用户本地网络分配的、向 Gateway 发送请求的私有 IP 地址。

UI 名称 API 示例
Source Internal IP(源内部 IP) net.src.internal_src_ip == "192.168.86.0/27"

Source IP(源 IP)

由 Gateway 代理的设备的原始 IP 地址。

UI 名称 API 示例
Source IP(源 IP) net.src.ip[*] in {10.0.0.0/8}

Source Port(源端口)

由 Gateway 代理的设备的原始端口。

UI 名称 API 示例
Source Port(源端口) net.src.port == "2222"

用户 (Users)

使用这些选择器来匹配身份属性。

UI 名称 API 示例
User Email(用户电子邮件) identity.email == "[email protected]"
User Name(用户名) identity.name == "Test User"
User Group IDs(用户组 ID) any(identity.groups[*].id in {"group_id"})
User Group Names(用户组名称) any(identity.groups[*].name in {"group_name"})
User Group Emails(用户组电子邮件) any(identity.groups[*].email in {"[email protected]"})
SAML Attributes(SAML 属性) any(identity.saml_attributes["http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name"] in {"Test User"})

虚拟网络 (Virtual Network)

使用此选择器匹配所有通过 Cloudflare One 客户端路由到特定虚拟网络(Virtual Network)的流量。

UI 名称 API 示例
Virtual Network(虚拟网络) net.vnet_id == "957fc748-591a-e96s-a15d-1j90204a7923"

比较运算符

比较运算符是 Gateway 将流量与选择器进行匹配的方式。当您在仪表板策略生成器中选择 Selector(选择器) 时,Operator(运算符) 下拉菜单将显示该选择器的可用选项。

运算符 含义
is(等于) 等于所定义的值
is not(不等于) 不等于所定义的值
in(属于) 匹配至少一个所定义的值
not in(不属于) 不匹配任何所定义的值
in list(在列表中) 在预定义的列表值中
not in list(不在列表中) 不在预定义的列表值中
matches regex(匹配正则表达式) 正则表达式计算结果为 true
does not match regex(不匹配正则表达式) 正则表达式计算结果为 false
greater than(大于) 超过所定义的数字
greater than or equal to(大于或等于) 超过或等于所定义的数字
less than(小于) 低于所定义的数字
less than or equal to(小于或等于) 低于或等于所定义的数字

字段中,当使用等值比较运算符(例如 is)时,您可以输入单个值;当使用包含比较运算符(例如 in)时,您可以输入多个值。此外,您可以使用正则表达式来为受支持的选择器指定值范围。

正则表达式

正则表达式使用 Rust 进行评估。Rust 的实现与其他地方使用的正则表达式库略有不同。有关更多信息,请参阅我们的通配符指南。要评估您的正则表达式是否匹配,可以使用 Rustexp

如果您想匹配多个值,可以使用管道符号(|)作为 OR 运算符。您不需要在管道符号之前使用转义字符(\)。例如,当 SNI host 匹配 .*whispersystems.org.*signal.org 时,以下表达式的计算结果为 true:

选择器 运算符
SNImatches regex.*whispersystems.org|.*signal.org

除了正则表达式外,您还可以使用逻辑运算符来匹配多个值。

逻辑运算符

要在表达式中评估多个条件,请选择 And(与) 逻辑运算符。这些表达式可以使用 Or(或) 逻辑运算符进行进一步比较。

运算符 含义
And(与) 匹配表达式中的所有条件
Or(或) 匹配表达式中的任一条件

Or(或) 运算符仅适用于同一表达式组中的条件。例如,您无法将流量中的条件与 Identity or Device Posture 中的条件进行比较。

这篇文档对您有帮助吗?