Secure Web Gateway 允许您在网络层应用策略,以控制用户可以访问哪些网站和非 HTTP 应用程序。当您需要控制非网页浏览流量时,这非常有用 —— 例如,在您的组织内阻止远程桌面连接或限制文件传输工具。
网络策略检查单个 TCP 和 UDP 数据包(携带所有互联网流量的底层数据单元),这意味着您可以过滤 DNS 和 HTTP 策略无法触及的流量。DNS 策略只能看到域名查找,HTTP 策略只能看到 Web 请求 —— 而网络策略更为深入,能够捕获像 SSH(远程终端访问)、RDP(远程桌面)以及运行在非标准端口上的自定义应用程序等协议。
要过滤来自设备(如笔记本电脑或手机)的网络流量:
- 在您的设备上安装 Cloudflare One Client。
- 在 Cloudflare One Client 设置中,登录到您组织的 Cloudflare One 实例。
- (可选)如果想在用户被阻止时显示自定义阻止页面,请在您的设备上安装 Cloudflare 根证书。如果没有证书,被阻止的用户将看到通用的浏览器连接错误,而不是信息丰富的提示页面。
- 为 TCP 启用 Gateway 代理。Gateway 代理是将设备流量路由通过 Cloudflare 以使网络策略可以检查它的组件 —— 如果不启用它,您的策略将不会生效。或者,还可以选择启用 UDP 代理以检查端口 443 上的 QUIC 流量(HTTP/3 连接使用的一种较新协议)。
要过滤来自私有网络(未向公共互联网开放的公司内部网络)的流量,请参阅 Cloudflare Tunnel 指南。
验证连接性可确保在您针对设备流量构建策略之前,设备的流量确实正流经 Cloudflare。
要验证您的设备已连接到 Cloudflare One:
- 在 Cloudflare 仪表板 ↗中,转到 Zero Trust > Traffic policies(流量策略) > Traffic settings(流量设置)。
- 在 Log traffic activity(记录流量活动) 下,启用所有网络日志的活动日志记录。这会指示 Cloudflare 记录网络层流量,以便您确认设备是否出现在日志中。
- 在您的 Cloudflare One Client 设备上,打开浏览器并访问任意网站。这会生成应该出现在日志中的流量。
- 确定设备的源 IP(即 Cloudflare 看到的您连接的公网地址):
- 打开 Cloudflare One Client。
- 转到 Profile(配置文件)。
- 记录 Client Interface IP(客户端接口 IP)。这与将在网络日志中显示为源 IP 的地址相同。
- 打开 Cloudflare One Client。
- 转到 Settings(设置,齿轮图标) > Preferences(偏好设置) > General(常规)。
- 记录 Public IP(公网 IP)。这与将在网络日志中显示为源 IP 的地址相同。
- 在 Cloudflare 仪表板 ↗中,转到 Zero Trust > Insights(洞察) > Logs(日志) > Network logs(网络日志)。在构建网络策略之前,请确保能看到来自您设备分配的源 IP 的网络日志。
如果几分钟后没有日志出现,请检查两点:第一,验证 Gateway 代理是否已打开;第二,通过检查 Cloudflare One Client 连接状态,确认该设备已注册到您的 Zero Trust 组织中。
网络策略包含两个部分:选择对哪些流量采取行动的匹配器(例如,发往端口 22(SSH 的默认端口)的所有数据包)以及决定对其执行什么操作的操作(例如,阻止连接)。
要创建新的网络策略:
-
在 Cloudflare 仪表板 ↗中,转到 Zero Trust > Traffic policies(流量策略) > Firewall policies(防火墙策略)。
-
在 Network(网络) 选项卡中,选择 Add a network policy(添加网络策略)。
-
为策略命名。
-
在 Traffic(流量) 下,构建一个逻辑表达式,定义您要允许或阻止的流量。
-
选择当流量匹配该逻辑表达式时要采取的 Action(操作)。例如,您可以使用 设备序列号 列表,以确保用户只有在从公司设备使用 Cloudflare One 客户端连接时才能访问应用程序:
选择器 运算符 值 逻辑 操作 SNI 域名 (SNI Domain) is internalapp.com且 (And) 阻止 (Block) 通过设备状态检测 (Passed Device Posture Checks) not in 设备序列号 (Device serial numbers) -
选择 Create policy(创建策略)。
-
创建具有以下权限的 API 令牌:
类型 项目 权限 Account Zero Trust Edit
2.(可选)配置您的 API 环境变量以包含您的 账户 ID 和 API 令牌。
3. 向 创建 Zero Trust Gateway 规则 端点发送 POST 请求。例如,您可以使用 设备序列号 列表,以确保用户只有在从公司设备使用 Cloudflare One 客户端连接时才能访问应用程序:
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/gateway/rules" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"name": "Enforce device posture",
"description": "Ensure only devices in Zero Trust organization can connect to application",
"precedence": 0,
"enabled": true,
"action": "block",
"filters": [
"l4"
],
"traffic": "any(net.sni.domains[*] == \"internalapp.com\")",
"identity": "",
"device_posture": "not(any(device_posture.checks.passed[*] in {\"LIST_UUID\"}))"
}'{
"success": true,
"errors": [],
"messages": []
}API 将返回该策略的摘要以及您的请求结果。
有关详细信息,请参阅 网络策略。
请参阅我们的常用网络策略列表,以了解您可能想要创建的策略。常见的添加包括阻止发往特定 IP 范围的流量,限制访问非标准端口(除了众所周知的端口如用于 HTTP 的 80 和用于 HTTPS 的 443 之外的端口),以及使用协议检测基于流量模式(而不仅仅是端口号)来识别 BitTorrent 等应用程序。