迁移到 Cloudflare Zero Trust 是企业在 2026 年替换过时企业 VPN 的关键现代化步骤。传统的 VPN 网络在用户通过初始登录墙后,会向其授予对整个企业子网的广泛访问权限,因此单个被盗的员工凭据就会让攻击者能够直接转向敏感的数据库服务器。相比之下,Zero Trust 架构会评估每个应用请求的授权检查,默认阻止未经验证的流量。本指南介绍了用于构建 Zero Trust 环境的配置阶段、安全隧道设置和策略定义。

[!WARNING] VPN 安全风险警示: 传统的 VPN 设置会使您的内部网络暴露于横向移动攻击。升级到边缘验证的访问路径可确保您的数据库保持隔离,即使员工的本地笔记本电脑被入侵也是如此。

核心要点:

  • Cloudflare Zero Trust 使用边缘访问策略来评估用户身份和设备健康检查。
  • 轻量级 Cloudflare Tunnels 无需打开入站防火墙配置即可保护服务器端口。
  • 标准策略支持身份提供商集成(例如 Google Workspace 或 Okta)。
  • 设备姿态审查会在授权数据库访问之前检查设备加密和防病毒状态。

Cloudflare Zero Trust 设置的核心支柱

专业的安全架构依赖于持续验证用户和设备。正如 Cloudflare One 的文档所述,访问策略会在边缘针对每个请求进行评估 —— 就近于用户,而不是在中心化的 VPN 集中器上。该设置依赖于三个不同的安全支柱来保护数据库访问:

1. Cloudflare Access(身份验证)

Cloudflare Access 充当边缘原生的身份经纪商。因此,您必须配置三个核心规则:

  • 身份提供商同步: 将您的公司目录(例如 Okta、Microsoft Entra ID 或 Google Workspace)直接连接到边缘。
  • 访问策略: 根据电子邮件域、地理位置和多因素身份验证(MFA)状态构建粒度规则。此外,这可以过滤恶意请求。
  • 即时撤销: 在您的中央目录中停用用户配置文件会立即终止其全球范围内的边缘会话。因此,这保护了系统入口点。

2. Cloudflare Tunnel(cloudflared 连接器)

传统基础设施要求向公共互联网开放服务器端口 80 或 443,使服务暴露于端口扫描僵尸网络。

  • 出站连接: 轻量级守护进程 (cloudflared) 运行在您的源服务器上,建立仅出站到 Cloudflare 边缘的连接。
  • 无入站开放端口: 因此,您可以关闭本地防火墙上的所有入站端口,使您的服务器对公共互联网扫描不可见。

3. 设备姿态审查(WARP 客户端)

为了保护敏感数据库免受恶意软件感染,边缘必须验证设备的安全性。因此,WARP 代理执行三个姿态验证检查:

  • 防病毒验证: 在授予访问权限之前,确认用户的笔记本电脑运行着活动的终端安全软件。此外,这可以防止恶意软件执行。
  • 操作系统更新检查: 如果员工的设备运行的是缺乏关键安全更新的过时操作系统,则限制访问。因此,这减轻了固件漏洞利用风险。
  • 磁盘加密检查: 验证客户端计算机上 FileVault 或 BitLocker 加密是否处于活动状态。因此,这可以防止丢失设备造成的数据泄露。

企业部署步骤

避免干扰日常工作流程的干净过渡遵循以下实施顺序:

  1. 建立身份集成: 将您的公司电子邮件目录同步到 Cloudflare 控制面板。
  2. 部署 Cloudflare Tunnels: 在您的目标暂存和生产服务器上安装 cloudflared 连接器。
  3. 起草细粒度访问策略: 配置访问规则,将管理控制台限制为特定的开发人员电子邮件。
  4. 分发 WARP 客户端: 使用设备管理工具在所有企业笔记本电脑上安装边缘客户端,从而启用姿态检查。

技术对比:传统 VPN vs. Zero Trust

评估运行指标突出了为什么企业正在转向边缘原生的安全架构:

安全指标传统企业 VPNCloudflare Zero Trust
访问权限对整个网络子网的广泛访问。受策略限制的特定应用访问。
防火墙设置需要开放入站端口,创建攻击向量。仅出站隧道,保持服务器端口关闭。
用户体验高路由延迟;需要手动登录。单点登录(SSO)集成;边缘路由。
设备审查无自动设备姿态验证。持续检查磁盘加密和操作系统补丁。

开始前的准备工作

在配置任何内容之前,请确认以下各项已就绪。缺少准备工作是部署中途停滞最常见的原因。

  • 已启用 Zero Trust 的 Cloudflare 帐户。 免费计划最多涵盖 50 个席位,这对于试点来说非常充足。记下您的团队域(例如 your-org.cloudflareaccess.com)。
  • 已在 Cloudflare 上的域名。 您计划保护的每个公共主机名(例如 app.example.com)必须位于使用 Cloudflare 名称服务器的区域上,以便可以为您自动创建 DNS 记录。
  • 身份提供商(IdP)的管理员访问权限。 您将在 Okta、Microsoft Entra ID 或 Google Workspace 中将 Cloudflare 注册为 SAML 或 OIDC 应用程序。
  • Root 或 Sudo 权限在运行 cloudflared 连接器的每个源服务器上。
  • 一份简短的应用清单。 列出每个内部服务、其本地地址和端口,以及谁应该访问它。这份清单将成为您的策略图。

逐步配置:Cloudflare Access 和 Tunnel

仅控制面板的操作隐藏了生产中至关重要的技术细节。下面的演练使用命令行,以便您的配置可复制并可提交到版本控制。

1. 安装并验证 cloudflared

在您的源服务器上安装连接器,然后针对您的帐户对其进行验证。登录命令会打开一个浏览器窗口,您可以在其中授权该区域。

1# Debian / Ubuntu
2curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb -o cloudflared.deb
3sudo dpkg -i cloudflared.deb
4
5# Authenticate — writes a cert.pem to ~/.cloudflared/
6cloudflared tunnel login

2. 创建隧道及其凭据

创建隧道会打印一个 UUID,并将匹配的凭据文件写入 ~/.cloudflared/。保持此文件机密;它是连接器的身份凭证。

1cloudflared tunnel create enterprise-apps
2# Created tunnel enterprise-apps with id 6ff42ae2-765d-4adf-8112-31c55c1551ef

3. 在 config.yml 中定义入站规则

入站(ingress)列表将每个公共主机名映射到防火墙后面的私有服务。

 1tunnel: 6ff42ae2-765d-4adf-8112-31c55c1551ef
 2credentials-file: /root/.cloudflared/6ff42ae2-765d-4adf-8112-31c55c1551ef.json
 3
 4ingress:
 5  # Internal admin console
 6  - hostname: db-admin.example.com
 7    service: http://localhost:9000
 8  # Internal web app
 9  - hostname: app.example.com
10    service: http://localhost:8080
11  # Catch-all — required as the final rule
12  - service: http_status:404

末尾的兜底(catch-all)规则是强制性的:没有它,cloudflared 将拒绝启动。

4. 路由 DNS 并将隧道作为服务运行

1# Create a proxied CNAME for each hostname
2cloudflared tunnel route dns enterprise-apps db-admin.example.com
3cloudflared tunnel route dns enterprise-apps app.example.com
4
5# Install as a persistent system service so it survives reboots
6sudo cloudflared service install
7sudo systemctl enable --now cloudflared

您的源服务器现在没有打开任何入站端口,但两个主机名都可以通过边缘解析。

5. 创建自托管的 Access 应用和策略

隧道激活后,在每个主机名前放置一个 Access 策略。下面的 Terraform 代码限制了管理控制台仅对指定的目录组开放,并要求设备姿态健康。

 1resource "cloudflare_zero_trust_access_application" "db_admin" {
 2  zone_id          = var.zone_id
 3  name             = "Database Admin Console"
 4  domain           = "db-admin.example.com"
 5  session_duration = "30m"
 6}
 7
 8resource "cloudflare_zero_trust_access_policy" "db_admin_engineers" {
 9  application_id = cloudflare_zero_trust_access_application.db_admin.id
10  zone_id        = var.zone_id
11  name           = "Engineers with healthy devices"
12  precedence     = 1
13  decision       = "allow"
14
15  include {
16    group = [var.engineering_group_id]
17  }
18
19  require {
20    device_posture = [cloudflare_zero_trust_device_posture_rule.disk_encryption.id]
21  }
22}

include 块决定了谁可以尝试访问;require 块添加了每个人都必须满足的条件,因此在未加密笔记本电脑上的授权工程师仍会被拒绝。

6. 将设备注册到 WARP 并添加姿态规则

设备姿态检查仅在 WARP 客户端针对您的团队注册后才能工作。上面引用的规则会检查磁盘加密是否处于活动状态,然后边缘才授予访问权限。

 1resource "cloudflare_zero_trust_device_posture_rule" "disk_encryption" {
 2  account_id = var.account_id
 3  name       = "Disk encryption required"
 4  type       = "disk_encryption"
 5
 6  match {
 7    platform = "windows"
 8  }
 9
10  input {
11    require_all = true
12  }
13}

通过您的 MDM(Intune、Jamf 或 Kandji)分发 WARP,并预先填写组织名称,以便公司笔记本电脑静默注册,而不是提示每个用户。


VPN 到 Zero Trust 迁移清单

并行运行迁移可在您逐个迁移应用时保持旧 VPN 可用。这可以减少业务中断,并为您在每一步提供回滚路径。

阶段操作完成标志
1. 清单编排可通过 VPN 访问的每个应用、端口和用户组您拥有一张完整的应用与访问受众映射图
2. 试点将一个低风险的内部应用放在 Access 和隧道后面试点小组无需 VPN 即可访问它
3. 身份连接您的 IdP,强制执行 MFA,将目录组映射到策略SSO 正常工作且应用了基于组的规则
4. 姿态将 WARP 部署到试点设备;在“仅报告”模式下启用加密和 OS 检查姿态数据出现而不会阻止任何人
5. 扩展按优先级顺序迁移其余应用并收紧策略每个应用都通过边缘进行响应
6. 退役删除 VPN 路由,关闭入站防火墙端口,撤销 VPN 证书VPN 集中器可以安全关闭

常见陷阱和故障排除

  • 错误 1033(隧道错误): 主机名解析成功,但没有连接器运行,或者 DNS 记录指向了错误的隧道。检查 systemctl status cloudflared 并确认 CNAME 目标与您的隧道 UUID 匹配。
  • 连接器无法启动: 每个 ingress 列表必须以 service: http_status:404 这样的兜底规则结束。没有它,配置验证将在守护进程启动前失败。
  • 用户绕过 Access 直接访问源服务器: Access 保护的是主机名,而不是原始 IP。隧道保持入站端口关闭,因此请确保没有遗留的公共 DNS 记录或开放的端口暴露源服务器。
  • 被锁在自己的管理应用之外: 在将任何策略从“仅报告”切换为“强制执行”之前,请务必为紧急恢复帐户创建允许策略。
  • 姿态检查从未通过: 姿态检查要求 WARP 客户端在 Zero Trust 模式下运行,而不是在仅 DNS 模式下运行。确认每台设备都已注册在正确的团队名称下。

测试和分阶段部署

在阻断真实流量之前验证每项策略。

  • 使用策略测试器: Access 策略测试器模拟特定用户,并显示允许或拒绝的逻辑原因,而无需等待实时请求。
  • 从“仅报告”开始: 新策略和姿态规则可以在不强制执行的情况下记录其结果,因此您可以在任何人被锁在外面之前发现误报。
  • 阅读决策日志: Zero Trust 控制面板会记录每项 Access 决策以及应用的身份、设备和策略,这是回答“我为什么被阻止?”的最快方法。
  • 保持回滚路径畅通: 在没有访问事件的完整工作周过去之前,保持试点小组可以访问 VPN,然后按照上面的清单退役它。

与经受过验证的安全咨询公司合作

周密的部署计划可保障您公司的数字资产安全。Mecanik 通过我们的 渗透测试服务 页面提供专业的 服务器安全审计 服务和高级网络加固。我们专注于 Cloudflare Tunnels 设置、Zero Trust 访问策略和企业级 SSO 集成。欢迎立即联系我们以安排您的技术咨询。


常见问题(FAQ)

什么是 Cloudflare Zero Trust? Cloudflare Zero Trust 是一个企业安全平台,用于替代传统的企业 VPN。它对每个请求访问内部应用的用户的身份和设备健康状况进行评估,确保默认情况下不信任任何用户或设备。

Cloudflare Tunnels 如何保护私有服务器? Cloudflare Tunnels 在您的私有服务器与 Cloudflare 边缘网络之间建立安全的、仅出站的连接。因此,您可以关闭所有入站防火墙端口,使您的服务器资源对恶意端口扫描不可见。

我可以将 Zero Trust 与我当前的身份提供商集成吗? 可以,该平台与标准身份提供商(包括 Google Workspace、Okta 和 Microsoft Entra ID,即前身 Azure AD)集成。此设置允许您强制执行单点登录(SSO)并从中央控制面板管理用户权限。

Cloudflare Access 中的设备姿态检查(device posture check)是什么? 设备姿态检查是用户设备在访问应用之前必须满足的安全要求。例如,系统会检查设备是否运行着活动的防病毒软件、是否启用了磁盘加密以及是否运行着更新的操作系统版本。

Cloudflare Zero Trust 对企业的收费如何? Cloudflare 提供最多支持 50 个用户的免费层,其中包括核心的 Access 策略和 Tunnels 功能。对于更大规模的企业环境或高级设备姿态规则,定价基于每个用户每月的订阅费用。