前言
- 使用 Zero Trust 策略保护自托管、SaaS 和专用应用程序。只有与您的策略匹配的用户有权访问配置的应用程序。
- cloudflare的Access 在 Zero Trust 策略的支持下保护内部和 SaaS 应用程序。使用 Access,可以控制哪些用户和群组可以在没有 VPN 或者不对您的站点代码进行任何更改的情况下访问您的资源。
开启Zero Trust
- 进入cloudflare控制台后,点击左边的Access跳转到Zero Trust,如果你是第一次使用会让你新建一个域名,填一个自己喜欢的就可以了。

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

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

- 因为我这个里是下载的二进制文件,所以可以使用第二种方式直接安装服务,注意要保管好你的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和端口。

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

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

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

添加验证策略
- 点击Applications创建一个应用,点击Self-host的


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

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

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

参考