使用cloudflare零信任暴露内网服务

  • 5 分钟阅读

前言

  • 使用 Zero Trust 策略保护自托管、SaaS 和专用应用程序。只有与您的策略匹配的用户有权访问配置的应用程序。
  • cloudflare的Access 在 Zero Trust 策略的支持下保护内部和 SaaS 应用程序。使用 Access,可以控制哪些用户和群组可以在没有 VPN 或者不对您的站点代码进行任何更改的情况下访问您的资源。

开启Zero Trust

  • 进入cloudflare控制台后,点击左边的Access跳转到Zero Trust,如果你是第一次使用会让你新建一个域名,填一个自己喜欢的就可以了。

Untitled

  • 输入tunnels名称后保存tunnels进入下一步

Untitled

安装Agent

  • 建议到GitHub的下载页面下载二进制文件安装,如果你是使用包管理器安装的就没有自动更新功能,需要你自己通过包管理器更新,我这里使用GitHub的二进制文件直接运行。

Untitled

  • 因为我这个里是下载的二进制文件,所以可以使用第二种方式直接安装服务,注意要保管好你的TOKEN,别被别人连上你的隧道。
root@photon-machine [ ~ ]# sudo cloudflared service install 你的TOKEN
  • 上线后会在Connectors显示你当前节点的信息,绿色后进行下一步。
  • 将cloudflared安装为服务,这样开机就可以自动启动了。
root@photon-machine [ ~ ]# cloudflared service install
root@photon-machine [ ~ ]# systemctl enable cloudflared
root@photon-machine [ ~ ]# systemctl start cloudflared
root@photon-machine [ ~ ]# systemctl status cloudflared                                                                                  
● cloudflared.service - cloudflared                                                                                                      
     Loaded: loaded (/etc/systemd/system/cloudflared.service; 
enabled; preset: enabled)
     Active: active (running) since Wed 2023-07-12 13:02:40 UTC; 1h 13min ago
   Main PID: 38221 (cloudflared)
      Tasks: 7 (limit: 2377)
     Memory: 26.8M
        CPU: 7.012s
     CGroup: /system.slice/cloudflared.service

映射服务到域名

  • 选择你的主域名后,绑定一个子域名,下面服务选择映射类型,这里我以esxi服务器为例子,因为esxi服务器的web服务是https协议的,所以要选https类型,再点击高级设置的TLS,将No TLS Verify设置为开启,忽略证书验证,URL填写esxi服务器的IP和端口。

Untitled

  • 现在你就在浏览器可以打开刚刚绑定的子域名,可以看到是esxi的web服务。

Untitled

设置访问策略

添加登录方式

  • 将内网的服务这样暴露在公网,肯定是不安全的,现在我们要设置只能让特定的用户访问。
  • 先去设置页面点击AuthenticationLogin methods添加一个登录方式,

Untitled

  • 这里选择一个最简单的One-time PIN,一次性PIN码,就是发一串6位数字到你的邮箱,在登录界面你要先输入正确的邮箱地址,还要接收到正确的PIN码才可以访问。

Untitled

添加验证策略

  • 点击Applications创建一个应用,点击Self-host的

Untitled

Untitled

  • 填写应用的名称,和会和失效的时间,应用的子域名,最后的登录方式默认是可以使用全部访问,但是我们刚刚只创建了一个登录方式,也就是一次性PIN。

Untitled

  • 给策略起一个名字,行为是**Allow**,会话过期和应用的一样。
  • 添加两个条件到策略,使用登录方式(要往下拉滚动条才能看到)选择Login Methods,勾选一次性PIN码。再点击+ Add require添加一个必要条件,就是登录的邮箱是[email protected]才也许访问esxi服务器。

Untitled

防护效果

  • 打开esxi服务器的域名,发现需要零信任验证,这时只需输入你的邮箱和收到的PIN码就可以安全访问你的内网服务了。

Untitled

参考