Cloudflare 提供围绕应用程序性能、安全、可靠性、开发以及 Zero Trust 的全套服务。Cloudflare 的全球网络距离大约 95% 的互联网连接人口只有约 50 毫秒的延迟,其服务运行在每个数据中心内的每台服务器上。Cloudflare 的全球规模也带来了强大的威胁情报源,这些情报源会不断反馈到 Cloudflare 安全产品中,从而进一步增强机器学习模型和服务。

其他差异化优势还包括以下事实:与一些仅提供 API 安全、Zero Trust 服务或特定性能/安全服务的厂商不同,Cloudflare 不是一个单点产品。由于运营和管理上的复杂性、无法利用跨产品创新/集成所导致的低效率,以及无法在所有服务中利用网络/资源规模等原因,客户已开始摆脱单点产品方法。

此外,客户不希望被锁定在特定的云提供商中,但许多性能和安全厂商通过将服务重点放在自有的云并对其进行优化来将客户锁定在他们的平台上,从而使得在运营上难以采用多云策略。
Cloudflare 与工作负载运行在何处或使用何种云提供商无关。无论工作负载运行在特定的云中还是在本地,客户都能获得相同、一致的统一仪表板和运营简单性。与许多厂商不同,利用跨产品创新和集成并不取决于客户在工作负载中使用特定的云。
本文档演示了无论工作负载运行在何处,使用 Cloudflare 的集合服务是多么容易。在本文档的示例中,应用程序工作负载将使用 Cloudflare DNS、CDN、WAF 和 Access,同时还将使用 Cloudflare Tunnel 安全地连接到 Cloudflare 网络。厂商很少能以操作简单且一致的方式提供这种综合水平的安全能力。
有关特定服务的更多细节和参考架构,请参阅我们的参考架构文档。
像 Cloudflare 这样基于云的安全和性能提供商工作方式类似于反向代理。反向代理是位于 Web 服务器前面并将客户端请求转发到这些 Web 服务器的服务器。反向代理通常被实施来帮助提高安全性、性能和可靠性。
没有反向代理的正常流量流向会是客户端发送 DNS 查找请求,接收源站 IP 地址,并直接与源站服务器 ↗进行通信。
引入反向代理后,客户端仍向其解析程序发送 DNS 查找请求,这是 DNS 查找的第一站。在某些情况下,提供反向代理的厂商也提供 DNS 服务;这显示在下方的图 3 中。然而,现在客户端与反向代理进行通信,反向代理再与源站服务器进行通信。这种所有流量都流经反向代理的流量流向,允许轻松地为应用程序实施额外的应用程序安全、性能和可靠性服务。

在这个例子中,我们有一个运行在主要云提供商之一上的网站,我们想要使用 Cloudflare DNS、CDN、WAF 和 Access。出于演示目的,我们想要从这些服务开始;客户可以根据需要扩展这些服务以包括其他 Cloudflare 服务。Cloudflare 提供了将所有服务与云提供商解耦的好处,如果我们以后想要更换云提供商,或者保护运行在其他云中的其他应用程序,仪表板和操作都将保持一致。
客户可以轻松且安全地将其 Web 应用程序连接到 Cloudflare 网络,并利用应用程序性能和安全服务。有几种适用于不同使用案例的连接选项。
在最基本的情况下,Cloudflare 代理将通过互联网将请求流量路由到源站。在这种设置中,客户端和源站都是通过其各自的 ISP 直接连接到互联网的端点。在代理通过互联网将请求路由到客户的源站之前,请求通过互联网从客户端路由到 Cloudflare 代理(通过 DNS 配置)。
下图描述了请求流经 Cloudflare 网络时到源站的默认连接。当到源站的请求解析为 Cloudflare 托管的 IP 时,该请求将由 Cloudflare 网络处理,并通过公共互联网转发到源站服务器。

源站直接连接到互联网,流量根据 Cloudflare DNS 解析的 IP 地址路由到源站。DNS A 记录将域名与源站服务器的 IP 地址(或通常是源站所处的负载均衡器)关联起来。
在该模型中,当 Cloudflare DNS 收到对 A 记录的查询时,会返回一个 Cloudflare anycast IP 地址,因此所有流量都会路由到 Cloudflare。然而,除非采取额外的预防措施,如果有人知道源站的 IP 地址,源站还是有可能在绕过 Cloudflare 的情况下被直接访问。
此外,在此模型中,客户必须为源站或 Web 服务器开通防火墙规则,以便可以通过相应的 http/https 端口对其进行访问。但是,客户可以选择利用专用 CDN 出口 IP,该功能分配了 Cloudflare 将用来连接回您的源站的客户特定 IP。我们建议仅允许来自这些网络的流量,以避免被直接访问。
除了在源站端防火墙处进行 IP 阻止外,我们还强烈建议通过 “完全(严格)”SSL 设置或 mTLS 验证对流量进行额外的验证,以确保所有流量都源于通过客户配置区域的请求。
Cloudflare 还支持自带 IP(BYOIP)。配置 BYOIP 后,Cloudflare 全球网络将播发客户自有的 IP 前缀,并且这些前缀可以与相应的 Cloudflare 第 7 层服务配合使用。这允许客户通过 Cloudflare 代理流量,并在 DNS 解析中仍然返回客户 IP 地址。在客户 IP 前缀已经被列入允许列表,且不希望更新防火墙规则或存在管理障碍的情况下,这会非常有益。
通过互联网连接源站时的推荐做法是建立一个通过互联网的私有隧道/连接,以提供额外的安全性。
传统的 VPN 设置由于将流量回传到集中的 VPN 网关位置(然后再连接回源站)而并不是最理想的;这会对端到端吞吐量和延迟产生负面影响。Cloudflare 提供了 Cloudflare Tunnel 软件,它可以在您的源站与 Cloudflare 网络之间提供加密隧道。而且,由于 Cloudflare 在其全球网络中利用了 anycast,源站将像客户端一样,连接到最近的 Cloudflare 数据中心,从而优化端到端的延迟和吞吐量。
当您运行隧道时,您基础设施中的轻量级守护程序 cloudflared 会在源站服务器与 Cloudflare 网络之间建立四个仅限出站的连接。这四个连接连接到分布在至少两个不同数据中心中的四台不同服务器,从而提供强大的弹性。可以安装多个 cloudflared 实例,以增加源站服务器与 Cloudflare 网络之间的弹性。
cloudflared 在您的源站 Web 服务器与 Cloudflare 最近的数据中心之间创建一个加密隧道,而无需打开任何公共入站端口。这使得实施非常简单快速,因为不需要对防火墙进行任何安全更改。该解决方案还降低了防火墙配置错误的风险,否则可能会使您的公司容易受到攻击。
通过防火墙锁定所有源站服务器端口和协议,防火墙和安全态势得到强化。一旦部署了 Cloudflare Tunnel 并应用了相应的安全措施,HTTP/S 端口上的所有请求都会被丢弃,包括容量 DDoS 攻击。数据泄露企图(如在传输中窥探数据或暴力破解登录攻击)将被完全阻止。

上图描述了通过 Cloudflare Tunnel 的连接模型。此选项为您提供了一种在没有公开可路由 IP 地址的情况下,将您的资源安全连接到 Cloudflare 的方法。Cloudflare Tunnel 可以将 HTTP Web 服务器、SSH 服务器、远程桌面和其他协议安全地连接到 Cloudflare。
大多数厂商也提供直接连接到其网络的选项。与使用公共互联网相比,直接物理连接提供了安全性、可靠性和性能优势。这些直接连接是在对等互联设施、互联网交换中心(IX)(互联网服务提供商 (ISP) 和互联网网络可在其中相互互联)中或通过厂商合作伙伴完成的。

上图描述了通过 Cloudflare Network Interconnect (CNI) ↗ 的源站连接,该连接允许您将网络基础设施直接与 Cloudflare 连接,并且仅通过这些直接链路进行通信。CNI 允许客户将分支机构和总部位置直接与 Cloudflare 互联。客户可以通过以下三种方式之一与 Cloudflare 互联:通过在 Cloudflare 对等互联设施 ↗上可用的私有网络互联 (PNI)、在 Cloudflare 参与的许多全球交换中心中的任意一个 ↗通过 IX,或者通过 Cloudflare 的互联平台合作伙伴 ↗之一。
Cloudflare 的全球网络允许轻松连接到网络,无论您的基础设施和员工身在何处。
无论使用哪种连接模型,都会首先完成 DNS 解析,并向 Cloudflare 提供要路由到何处的信息。Cloudflare 可以支持将区域配置为权威 DNS 提供商、辅助 DNS 提供商或非 Cloudflare DNS (CNAME) 设置。要应用 Cloudflare 性能和安全服务,必须将流量路由到 Cloudflare 网络。
虽然有多种方式可以引入应用程序以使用 Cloudflare 服务,本着快速响应的原则,常见的方法是使用 Cloudflare DNS 作为主要的权威 DNS。这对客户的额外好处是,Cloudflare 一直被评为全球最快的可用权威 DNS 提供商 ↗。
在这个例子中,我们将使用 Cloudflare Tunnel 安全地将我们的源站服务器连接到 Cloudflare。您可以在仪表板中配置 DNS 并输入要上载的网站。您将收到一对 Cloudflare 名称服务器,并在您的域名注册商处进行配置。一旦完成,Cloudflare 就会成为主要的权威 DNS 提供商。
如果将 Cloudflare 配置为仅在互联网上进行路由,则 DNS 配置看起来将如下所示,其中 A 记录指向源站服务器或相应负载均衡器的 IP 地址。由于 Cloudflare 充当反向代理,状态显示为“Proxied”(已代理)。正如所见,Cloudflare 仍然充当反向代理,因此可以使用 CDN、WAF 和 Access 等所有 Cloudflare 服务。

我们还可以使用通过互联网的 Cloudflare Tunnel 来提供更高的安全性,并防止需要向源站开放任何入站防火墙规则。通过这种方式,在 DNS 配置中,我们将使用指向部署的隧道的 CNAME 记录,而不是 A 记录。在此,我们部署一个从源站到 Cloudflare 网络的隧道,DNS 将自动进行配置。将创建指向隧道的 CNAME 记录;这强制将流向源站的所有流量都通过 Cloudflare Tunnel 进行路由。
要创建和管理隧道,您需要在源站服务器上安装并验证 cloudflared。cloudflared 是将您的服务器连接到 Cloudflare 全球网络的核心。
创建隧道有两种选择:通过仪表板或通过命令行。推荐从仪表板开始,因为它将允许您从任何机器管理该隧道。
远程管理的隧道仅需要隧道令牌(token)即可运行。任何有权访问令牌的人都将能够运行该隧道。您可以从仪表板或通过 API 获取隧道的令牌,如下所示。仪表板中提供的命令将安装并配置 cloudflared 以使用验证令牌作为服务运行。
在 Cloudflare 仪表板中,导航至 Zero Trust > Networks > Connectors。选择“Create a tunnel”按钮,为隧道命名,然后保存。

接下来,您将看到一个屏幕,您可以在其中选择源站服务器的操作系统 (OS)。然后,系统将为您提供一个 CLI 命令,您可以在源站上运行该命令,该命令将自动下载并安装 Cloudflare Tunnel 软件。

下面,已经运行 CLI 命令来下载和安装 Cloudflare Tunnel 软件。

连接器将现在自动显示为已连接。

在仪表板中,您现在可以继续进行下一步,即创建隧道并将其映射到源站上的服务,如下所示。在此情况下,所有 HTTPS 流量都将通过隧道发送到源站服务器。

您现在可以在仪表板中看到隧道已经创建并且运行状况良好。

此外,如果我们查看 DNS 配置,我们可以看到自动创建了一条指向该隧道 ID 的 DNS 记录。当您创建隧道时,Cloudflare 会生成一个包含所创建隧道的 UUID 的 cfargotunnel.com 子域。与公共路由 IP 地址不同,该子域将仅为同一 Cloudflare 账户中的 DNS 记录代理流量。另一个用户无法在另一个账户或系统中创建 DNS 记录来通过此隧道代理流量。

我们现在有了安全的应用程序访问。用户只能通过连接到 Cloudflare 网络的隧道访问该应用程序。此外,由于 Tunnel 使用到 Cloudflare 的出站连接,并且将允许出站连接返回的任何流量,因此不需要入站防火墙规则,从而减少了开销并提供了更多运营简单性。
如果您要通过 CLI 部署隧道,在安装隧道后,您还需要在源站服务器上验证 cloudflared。cloudflared 是将服务器连接到 Cloudflare 全球网络的纽带。此身份验证可以使用 cloudflared tunnel login 命令完成,如下所示。

您将被要求选择要将隧道添加到的区域,如下所示。

接下来,您将授权该区域的隧道。

最后,您应该收到证书已安装的确认,允许您的源站在相应区域创建隧道。

本文档前面描述的当前设置如下所示,其中源站服务器通过 Tunnel 连接到 Cloudflare 网络。现在,我们可以开始使用 Cloudflare 服务了。

目前只能通过 Cloudflare Tunnel 访问源站。因为使用的是公共主机名,所以对源站的访问是公开的。该应用程序在 Cloudflare 之后受到保护,并免受 DDoS 和其他类型的攻击。为了提高安全性,可以使用 Cloudflare Access 在经隧道的应用程序前面放置一层身份验证和访问控制。Access 在处理发往源站的请求之前强制执行身份验证步骤。策略中可以使用许多其他身份、设备和网络属性,允许客户定义除身份验证之外的访问。例如,客户可以定义请求源自的网络,并确保用户设备运行最新的操作系统。
下面,您可以看到已为 cftestsite3.com 创建了一个应用程序。

查看下方的策略配置,您可以看到它要求用户必须属于“Secure Employees”(安全员工)Access 组。

如果我们更深入地查看“Secure Employees”Access 组,可以看到下方的成员来自公司名为“Employees”的 Okta 身份提供商 (IdP) 组。此外,该 Access 组强制执行多因素身份验证 (MFA)。

查看 **Image and Video Gallery(图像和视频库)**应用程序,在 **Authentication(身份验证)**下,客户还可以手动选择用户可用于连接此应用程序的身份提供商。

我们现在通过 Tunnel 拥有了到源站的安全应用程序访问,并且通过 Access 拥有了该应用程序的身份验证和访问策略。当用户尝试访问网站时,系统会向其显示一个 Cloudflare Access 页面,要求用户使用配置的 IdP 进行验证;该页面可以根据客户的喜好进行自定义,如下所示。

在当前的设置中,源站服务器通过 Cloudflare Tunnel 安全地连接到 Cloudflare 网络,并通过 Cloudflare Access 在策略强制执行身份验证和其他安全要求。
由于已设置 Cloudflare 充当网站的反向代理,流量正被引导通过 Cloudflare,因此可以轻松地利用所有 Cloudflare 服务,包括 CDN、安全分析(Security Analytics)、WAF、API Shield、Bot Management、客户端安全等。
当客户端为相应的网站(在此情况下为“cftestsite3.com”)发出 DNS 查找请求时,Cloudflare 会返回一个 anycast IP 地址,因此所有流量都会被引导到最近的数据中心,在此处应用所有服务,然后请求通过 Cloudflare Tunnel 转发到源站服务器。
Cloudflare CDN 利用了 Cloudflare 的全球 anycast 边缘网络。除了使用 anycast 提升网络性能和弹性外,Cloudflare CDN 还利用 Argo 分层缓存(Argo Tiered Cache)在为客户节省成本的同时交付优化后的结果。客户还可以启用 Argo 智能路由(Argo Smart Routing),以寻找路由请求到源站服务器的最快网络路径。如下所示,Cloudflare CDN 现在在全球范围内缓存内容,并可以应用细粒度的 CDN 策略来影响默认行为。

有不同的缓存拓扑和配置可用。在下方,您可以看到配置了一条缓存规则(Cache Rule)来缓存针对该域的请求并覆盖源站 TTL。

通过在仪表板中单击“Caching > Cache Reserve”下的“Enable storage sync”(启用存储同步)按钮,也启用了 Cloudflare Cache Reserve。Cache Reserve 利用了 Cloudflare 的持久对象存储 R2,以消除来自其他公共云提供商的出站(egress)成本。它通过允许客户单击按钮就能持久缓存数据,从而提高了缓存命中率。

此外,如下所示,Cloudflare 安全分析(Security Analytics)汇集了 Cloudflare 的所有检测功能,并为去往相应网站的所有流量提供了全局视图和重要见解。随着流量通过 Cloudflare 网络路由,Cloudflare 拥有对威胁和见解的可见性,这些内容将在仪表板、日志和报告中呈现给客户。

Cloudflare WAF 规则可以被应用以执行内联流量策略。下方部署了一条防火墙策略,用以记录所有 bot 评分(bot score)< 30 且 WAF 攻击评分(WAF attack score)< 50 的流量。低于 30 的 bot 评分表示所有被归类为自动化或可能是自动化的流量,而低于 50 的 WAF 攻击评分表示所有被归类为恶意或可能是恶意的流量。

Cloudflare WAF 允许使用包括标头信息在内的许多不同请求标准的细粒度策略。客户可以采取多种操作,包括记录日志(logging)、阻止(blocking)和质询(challenge)。

客户可以使用 WAF 实施并使用自定义规则、速率限制规则以及托管规则。下面提供了对每种规则的简要描述。
- WAF 自定义规则(WAF Custom Rules):能够基于不同的请求属性和标头信息创建自定义规则,以阻止任何威胁
- WAF 速率限制规则(WAF Rate Limiting Rules):防止滥用、DDoS、暴力破解企图,并提供以 API 为中心的控制。
- WAF 托管规则(WAF Managed Rules)
- Cloudflare 托管规则集:提供先进的零日漏洞保护
- Cloudflare OWASP 核心规则集:阻止常见的 Web 应用程序漏洞,其中一些属于 OWASP 前 10 大漏洞
- Cloudflare 泄露凭据检查:检查针对常见内容管理系统 (CMS) 应用程序的暴露凭据数据库
相同的方法也适用于所有其他 Cloudflare 应用程序性能和安全产品(API Shield、Bot Management 等):一旦配置为通过 Cloudflare 网络路由流量,客户就可以开始使用 Cloudflare 服务。图 31 显示了 Cloudflare 的机器人分析(Bot Analytics),该分析根据 bot 评分对流量进行分类,并显示 bot 评分分布和其他机器人分析。所有请求数据都以内联方式捕获,基于已定义策略的所有执行也都是以内联方式完成的。

Cloudflare 提供全面的应用程序性能和安全服务。通过经由 Cloudflare 网络路由到其源站服务器的流量,客户可以轻松上载并开始使用所有性能和安全服务。此外,Cloudflare 还提供了多种连接选项,包括用于将源站服务器安全连接到 Cloudflare 网络的 Cloudflare Tunnel。