Secure Web Gateway 允许您检查 HTTP 流量并控制用户可以访问哪些网站。DNS 过滤只能阻止或允许整个域名(例如,所有的 dropbox.com)。HTTP 过滤则更深一步 —— 它检查完整的 URL 和请求内容,因此您可以阻止像 dropbox.com/shared-folder 这样的特定页面,扫描上传的文件中是否含有敏感数据,或者根据用户在网站上的实际行为强制执行可接受使用策略。
HTTP 过滤需要三个组件协同工作:Cloudflare One Client 将设备流量路由通过 Cloudflare;根证书允许 Gateway 解密 HTTPS 流量以检查 URL 和内容;而 Gateway 代理使 Gateway 能够拦截并评估 HTTP 请求。如果没有该证书,Gateway 只能看到域名,而无法看到完整的 URL 或请求体。
要过滤来自设备的 HTTP 请求:
- 在您的设备上安装 Cloudflare 根证书。
- 在您的设备上安装 Cloudflare One Client。
- 在 Cloudflare One Client 设置中,登录到您组织的 Cloudflare One 实例。
- 为 TCP 启用 Gateway 代理。还可以选择启用 UDP 代理以检查端口 443 上的 QUIC 流量 —— 这涵盖了某些浏览器默认使用的较新协议 HTTP/3。
- 要检查 HTTPS 流量,请启用 TLS 解密。TLS 解密允许 Gateway 读取加密的请求。如果没有它,Gateway 看到用户访问了
example.com,但无法看到具体的页面或他们上传的内容。 - (可选)要扫描上传和下载的文件是否存在恶意软件,请启用反病毒扫描。
要验证您的设备是否已连接到 Cloudflare One 且流量正在流经 Gateway:
- 在 Cloudflare 仪表板 ↗中,转到 Zero Trust > Traffic policies(流量策略) > Traffic settings(流量设置)。
- 在记录流量活动下,为所有 HTTP 日志启用活动日志记录。
- 在您的设备上,打开浏览器并访问任何网站。
- 在 Cloudflare 仪表板 ↗中,转到 Zero Trust > Insights(洞察) > Logs(日志) > HTTP。
- 确保显示来自您设备的 HTTPrequests。
在下一步中创建您的第一条 HTTP 策略后,您可以通过访问您的策略应该阻止的 URL 并确认该请求被拒绝来对其进行测试。
HTTP 策略定义要匹配哪些请求(例如,上传到文件共享网站)以及要采取的操作(例如,阻止)。
要创建新的 HTTP 策略:
-
在 Cloudflare 仪表板 ↗中,转到 Zero Trust > Traffic policies(流量策略) > Firewall policies(防火墙策略)。
-
在 HTTP 选项卡中,选择 Add a policy(添加策略)。
-
为策略命名。
-
在 Traffic(流量) 下,构建一个逻辑表达式,定义您要允许或阻止的流量。
-
选择当流量匹配该逻辑表达式时要采取的 Action(操作)。例如,如果您配置了 TLS 解密,某些使用 嵌入式证书 的应用程序可能不支持 HTTP 检测(例如某些 Google 产品)。您可以创建一条策略来为这些应用程序绕过检测:
选择器 运算符 值 操作 应用程序 (Application) in 不检测 (Do Not Inspect) 不检测 (Do Not Inspect) Cloudflare 还建议根据 Cloudflare 的威胁情报,添加一条策略以阻止 已知威胁(例如命令与控制 (Command & Control)、僵尸网络 (Botnet) 和恶意软件 (Malware)):
选择器 运算符 值 操作 安全类别 (Security Categories) in 所有安全风险 (All security risks) 阻止 (Block) -
选择 Create policy(创建策略)。
-
创建具有以下权限的 API 令牌:
类型 项目 权限 Account Zero Trust Edit
2.(可选)配置您的 API 环境变量以包含您的 账户 ID 和 API 令牌。
3. 向 创建 Zero Trust Gateway 规则 端点发送 POST 请求。例如,如果您配置了 TLS 解密,某些使用 嵌入式证书 的应用程序可能不支持 HTTP 检测(例如某些 Google 产品)。您可以创建一条策略来为这些应用程序绕过检测:
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/gateway/rules" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"name": "Do not inspect applications",
"description": "Bypass TLS decryption for unsupported applications",
"precedence": 0,
"enabled": true,
"action": "off",
"filters": [
"http"
],
"traffic": "any(app.type.ids[*] in {16})",
"identity": "",
"device_posture": ""
}'{
"success": true,
"errors": [],
"messages": []
}API 将返回该策略的摘要以及您的请求结果。
Cloudflare 还建议根据 Cloudflare 的威胁情报,添加一条策略以阻止 已知威胁(例如命令与控制 (Command & Control)、僵尸网络 (Botnet) 和恶意软件 (Malware)):
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/gateway/rules" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"name": "Block known risks",
"description": "Block all default Cloudflare HTTP security categories",
"precedence": 0,
"enabled": true,
"action": "block",
"filters": [
"http"
],
"traffic": "any(http.request.uri.security_category[*] in {68 178 80 83 176 175 117 131 134 151 153})",
"identity": "",
"device_posture": ""
}'有关详细信息,请参阅 HTTP 策略。
请参阅我们的常用 HTTP 策略列表,以了解您可能想要创建的其他策略。常见的添加包括按类型阻止文件下载,在远程浏览器中隔离有风险的网站,以及为在 TLS 解密下发生故障的应用程序添加 Do Not Inspect(不检测) 规则(例如使用证书固定来强制执行其自身证书的应用程序)。不检测规则告诉 Gateway 跳过对特定目的地的解密,以便这些应用程序能够继续工作。