使用 Cloudflare 零信任访问您的私人资源

使用 Cloudflare 零信任访问您的私人资源

首页休闲益智滚动隧道更新时间:2024-06-26

在本文中,我将介绍如何配置 Cloudflare Zero Trust,以便在不打开任何外部防火墙端口的情况下访问您的私人网络。

我们将在 Kubernetes 中部署 Cloudflare 隧道代理,作为通过 Cloudflare 访问私有网络资源的一种手段。

在本文中,我不会介绍如何配置访问组或应用程序,以提供对特定资源的用户/角色级访问权限,但很快会有另一篇文章对此进行介绍。

什么是 Cloudflare 零信任?

Cloudflare Zero Trust 有许多概念/名称,以便通过其基础设施提供对您的私有和公共资源的访问。

隧道是 Cloudflare 零信任网络的基础。它们是部署在您的私有网络中的代理网络,负责处理通过 Cloudflare 基础设施代理到您的私有网络的流量路由。

它们以代理的形式存在,可在任意数量的操作系统或容器平台上运行(安装说明可根据您的要求在 Cloudflare Zero Trust 面板中找到)。

应用程序可在 cloudflare Zero Trust 中使用,根据账户类型、IP 来源等,通过 Cloudflare 网络为您的账户用户提供访问特定资源的权限。

应用程序将以仪表盘的形式呈现给用户(从 https://<team name>.cloudflareaccess.com提供),用户只需点击他们需要访问的应用程序,即可转发到应用程序(通过 Cloudflare 基础设施)。访问权限可根据需要临时授予并限制时间(每个应用程序均可配置)。

我们不会在这篇文章中介绍《应用》,但会在后面的文章中介绍。

网关

网关是 Cloudflare Zero Trust 提供的附加功能,可以部署到网络上,以确保 DNS 层面的浏览安全(阻止广告、特定网站、网站类别等)。

我们不会在本文中介绍网关,但会在后续文章中介绍。

先决条件

要部署 Cloudflare Zero Trust,并对您的私有资源进行网络级访问,需要满足一些先决条件:

  1. 运行 Kubernetes cluseter,将 cloudflared 代理部署到
  2. 将 Cloudflare 账户作为域名的权威 DNS 服务器
  3. 为零信任注册 Cloudflare 账户,并设置初始向导(本文将不再赘述,因为这很容易理解)。将 Cloudflare 账户作为域名的权威 DNS 服务器
设置 Cloudflare 零信任

首先,前往 Cloudflare UI 中的 "零信任 "仪表板。遗憾的是,Cloudflare Terraform 提供商在撰写本文时还不具备部署零信任设置的资源,因此我们只能 "clickops"。

创建隧道

我们首先要设置的是连接 Cloudflare 和您的私有基础设施的隧道。

隧道作为一个代理存在,在您的专用网络上运行,并将流量从 Cloudflare 路由到您的内部应用程序。

点击 "创建隧道 "后,你将看到下面的安装说明,用于设置 Cloudflare 隧道。由于我们将在 Kubernetes 上部署该代理,因此我们将选择 Docker 作为说明的基础,并使用它编写一些 Kubernetes 清单文件。

综上所述,我们需要在 Kubernetes 中创建三个资源:

  1. 包含上述 docker run 命令中的 api 令牌(截图中已删节)的密文
  2. 在群集上运行 Cloudflare 零信任代理的部署
  3. 包含资源的命名空间在群集上运行 Cloudflare 零信任代理的部署

让我们先为新资源创建命名空间。创建一个名为 namespace.yaml 的新文件,内容如下:

apiVersion: v1 kind: Namespace metadata: name: cloudflare labels: name: cloudflare

现在,我们要使用 api 令牌创建秘密。我们将使用 kubectl create secret 命令来完成这项工作,如下所示:

kubectl create secret generic api-token --from-literal="api_token="<api token>" --dry-run=client -o yaml \ | kubeseal --controller-name=sealed-secrets \ --controller-namespace=default \ --namespace cloudflare --format yaml > secret_api_token.yaml

我使用 sealed-secrets 为 Kubernetes 清单文件加密,这样它们就能安全地提交到 git。如果不使用这种方法,可以删除 api 标记后面的所有内容,用 -n cloudflare 代替,直接在 cloudflare 命名空间上创建秘密(在使用 kubectl apply -f namespace.yaml 应用上述清单之后)。

接下来,我们将创建一个部署来运行 cloudflared 映像。在目录中新建一个名为 deployment.yaml 的文件,内容如下:

apiVersion: apps/v1 kind: Deployment metadata: name: cloudflared labels: app: cloudflared namespace: cloudflare spec: replicas: 1 selector: matchLabels: app: cloudflared template: metadata: labels: app: cloudflared spec: containers: - name: cloudflared image: cloudflare/cloudflared:2023.8.2 args: [ "TUNNEL","--no-autoupdate","run" ] env: - name: TUNNEL_TOKEN valueFrom: secretKeyRef: name: api-token key: api_token

根据 Cloudflare 文档中的 cloudflared 代理,你可以使用环境变量来定义隧道令牌,因此我们可以使用它来引用我们的秘密,而无需在上述 docker 运行命令中进行硬编码。

developers.cloudflare.com

如果您应用了所有 Kubernetes 清单,现在就可以在 Cloudflare UI 中看到您的隧道正在运行!

如果代理没有签入,您应该查看日志和 cloudflare 命名空间中 pod 的描述。

添加一些路线

接下来,我们要为隧道添加一些路由。这将告诉 Cloudflare 您的隧道应负责哪些 IP 地址范围。

例如,如果您希望通过 Cloudflare Zero Trust 访问 192.168.0.10 上的内部服务,则需要在隧道中添加 192.168.0.0/24(或 192.168.0.10/32)的路由,以便 Cloudflare 知道如何将这些请求路由到您的隧道。

为此,请编辑隧道配置并选择 "专用网络 "选项卡

选择添加专用网络,然后输入 CIDR 和路由描述

现在您应该可以在隧道状态页面上看到刚刚添加的路由了

配置设备配置文件

根据 Cloudflare 文档,Cloudflare 默认情况下不会通过设备上的 WARP 客户端路由私有 IP 范围

默认情况下,WARP 客户端会将绑定到 RFC 1918 空间的流量排除在外,作为其分离隧道功能的一部分。例如,WARP 会自动排除 10.0.0.0/8,这些 IP 地址通常用于专用网络,无法从互联网到达。

因此,我们需要更新设备策略,在设备通过 WARP 连接时启用路由到专用网络。

在 Cloudflare Zero Trust 面板中,选择左侧的 "设置",然后选择中间的 "WARP 客户端"。

我们要配置默认配置文件,以允许路由到我们的私有 IP 范围,因此向下滚动到拆分隧道,然后选择包括 IP 和域

现在单击 "管理 "按钮,创建一个新的分离隧道条目,并输入网络的 CIDR 和适当的说明

保存后,我们的设备现在就可以路由到专用网络了。

配置您的设备

我们需要做的最后一件事是注册用户和设置设备。在这个例子中,我将用我的电子邮件地址在 iPhone 上注册。

从 App Store 下载 app 1.1.1.1 并启动它。

默认情况下,该应用程序仅在 DNS "WARP "模式下工作,保护设备的 DNS 查询。我们要登录新的 Cloudflare Zero Trust 配置,因此请单击汉堡包按钮(右上角的三条设置线),然后单击 "账户">"登录 Cloudflare Zero Trust"。

输入您在 "零信任 "设置向导中提供的团队名称,并在下一个窗口中使用允许域中的电子邮件地址注册。

回到应用程序主页后,你会看到 WARP 徽标已被 Zero Trust 取代。使用摇杆开关连接到 VPN,现在你就可以像在家庭网络上一样访问任何私人资源了!

结论

本文对 Cloudflare Zero Trust 的可能艺术只是浅尝辄止。

在接下来的文章中,我将介绍如何在零信任账户上配置特定应用程序,并开始设置访问组,以便根据连接到零信任网络的账户创建对资源的临时访问。

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved