在信息时代,远程桌面对于工作和生活变得至关重要。想象一下,你可以坐在家里,通过互联网连接到办公室的计算机,就像你亲自在那里一样。但这也伴随着安全风险,因为不正确的配置可能会导致未经授权的人访问你的计算机。今天,我将向你介绍一种方法,通过Cloudflare Zero Trust,你可以在不开放本地服务器的入站端口的情况下,安全地提供远程桌面服务。
步骤1:在GCP上设置RDP服务器
首先,我们需要在Google Cloud Platform(GCP)虚拟机上设置一个RDP服务器。虽然我以GCP为例,但你可以在支持RDP连接的任何机器上进行设置。
- 在你的Google Cloud控制台中,创建一个新项目。
- 转到Compute Engine > VM实例。
- 选择“创建实例”。
- 为你的VM实例命名,例如"windows-rdp-server"。
- 配置你的VM实例:
- 滚动到“Boot Disk”并选择“更改”。
- 选择操作系统为Windows Server。
- 选择一个带有桌面体验的版本,例如Windows Server 2016 Datacenter。
- 一旦你的VM实例运行起来,点击RDP旁边的下拉菜单,选择“查看gcloud命令以重置密码”。
- 选择在Cloud Shell中运行。
- 在Cloud Shell终端中运行命令。你将被要求确认密码重置。
- 复制自动生成的密码和用户名到一个安全的地方。
步骤2:安装Microsoft远程桌面
你可以使用任何RDP客户端来访问和配置RDP服务器。为了通过Microsoft远程桌面访问服务器,请按照以下步骤进行:
- 下载并安装Microsoft远程桌面。
- 下载后,打开Microsoft远程桌面并选择“添加PC”。
- 在“PC名称”中,输入你的RDP服务器的公共IP地址。在GCP中,这是VM实例的外部IP。
- 对于“用户帐户”,选择“添加用户帐户”并输入你之前生成的密码和用户名。
- 选择“添加”。PC将显示在Microsoft远程桌面中。
- 为了测试基本连接,双击新添加的PC。
- 当询问是否继续时,选择“继续”。
- 现在,你可以远程访问和配置你的RDP服务器。
默认情况下,Internet Explorer将被安装并配置为增强安全模式。如果浏览器运行缓慢或无法加载,你可以关闭增强安全性,并安装诸如Google Chrome之类的替代浏览器。
步骤3:通过Cloudflare隧道连接RDP服务器
你可以使用Cloudflare隧道来创建从服务器到Cloudflare边缘的安全、仅出站的连接。这需要在服务器上运行cloudflared守护程序。用户可以通过在其设备上安装Cloudflare WARP客户端并加入你的Zero Trust组织来访问该服务。远程设备可以像在你的私有网络上一样连接。默认情况下,所有加入你组织的设备都可以访问该服务,除非你构建策略来允许或阻止特定用户。
步骤1:连接服务器到Cloudflare
- 通过按照我们的仪表板设置指南为你的服务器创建一个Cloudflare隧道。你可以跳过连接应用程序的步骤,直接转到连接网络。
- 在隧道的“私有网络”选项卡中,输入服务器的私有IP地址(或包括服务器IP的范围)。在GCP中,服务器IP是VM实例的内部IP。
(可选)3. 设置Zero Trust策略以微调对服务器的访问。
步骤2:设置客户端
为了让设备连接到你的Zero Trust组织,你需要:
- 在设备上以WARP模式部署WARP客户端。仅当你想要显示自定义阻止页面或过滤HTTPS流量时才需要Cloudflare证书。
- 创建设备注册规则以确定哪些设备可以加入你的Zero Trust组织。
步骤3:路由私有网络IP通过WARP
默认情况下,WARP客户端会排除前往RFC 1918空间的流量,作为其Split Tunnel功能的一部分。例如,WARP自动排除10.0.0.0/8,这些IP地址通常用于私有网络,无法从互联网访问。为了让WARP将流量发送到你的私有网络,你需要在Split Tunnel配置中包括你为Cloudflare隧道指定的IP/CIDR。
要配置私有网络访问的Split Tunnel,请按照以下步骤:
- 首先,检查你的Split Tunnel模式是否设置为排除或包括模式。
- 如果你使用的是包括模
式,请将你的网络IP/CIDR范围添加到列表中。
- 如果你使用的是排除模式:
- 从列表中删除你的网络IP/CIDR范围。例如,如果你的网络使用默认的AWS范围172.31.0.0/16,删除172.16.0.0/12。
- 重新添加不被你的私有网络显式使用的IP/CIDR范围。以AWS为例,你会添加新的条目,如172.16.0.0/13、172.24.0.0/14、172.28.0.0/15和172.30.0.0/16。这确保只有前往172.31.0.0/16的流量会通过WARP。
通过缩小包括在WARP中的私有IP范围,你可以降低用户访问本地资源的风险。
步骤4:以用户身份连接
一旦WARP客户端配置好,你可以使用你的RDP客户端连接到服务器的私有IP地址(而不是最初使用的公共IP地址)。
要在Microsoft远程桌面中连接:
- 打开Microsoft远程桌面并选择“添加PC”。
- 对于“PC名称”,输入你的RDP服务器的私有IP地址。在GCP中,这是VM实例的内部IP。
- 对于“用户帐户”,输入你的RDP服务器用户名和密码。
- 双击新添加的PC以测试Zero Trust连接。
- 当询问是否继续时,选择“继续”。
现在,你已经拥有了对RDP服务器的安全远程访问。
通过Cloudflare隧道访问RDP服务器
Cloudflare隧道还可以将应用程序路由到公共主机名,允许用户在不使用WARP客户端的情况下连接到应用程序。这种方法需要在服务器机器和客户机器上都安装cloudflared,并在Cloudflare上激活区域。流量通过这个连接代理,并用户使用Cloudflare Access凭证登录服务器。
公共主机名方法可以与通过WARP进行路由一起实施,以便有多种连接服务器的方式。你可以重复使用同一个隧道用于私有网络和公共主机名路由。
步骤1:连接服务器到Cloudflare
- 通过按照我们的仪表板设置指南为你的服务器创建一个Cloudflare隧道。
- 在“公共主机名”选项卡中,选择下拉菜单中的域名,并指定任何子域名(例如,rdp.example.com)。
- 对于“服务”,选择RDP,并输入服务器的RDP监听端口(例如,localhost:3389)。通常是端口3389。
- 选择“保存主机名”。
(建议)5. 添加一个自托管应用程序到Cloudflare Access,以管理对服务器的访问。
步骤2:以用户身份连接
在客户端机器上安装cloudflared。
运行以下命令以打开RDP监听端口:
cloudflared access rdp --hostname rdp.example.com --url rdp://localhost:3389
这个过程需要配置为保持活动和自动启动。如果进程被终止,用户将无法连接。
如果客户机器运行Windows,端口3389可能已经被本地占用。选择一个未被使用的3389端口的替代端口。
在cloudflared access运行时,使用RDP客户端(如Microsoft远程桌面)连接:
- 打开Microsoft远程桌面并选择“添加PC”。
- 对于“PC名称”,输入localhost:3389。
- 对于“用户帐户”,输入你的RDP服务器用户名和密码。
- 双击新添加的PC以进行连接。
- 当客户端启动时,浏览器窗口将打开并提示用户进行身份验证。
结语
通过Cloudflare Zero Trust,我们实现了安全的远程桌面访问,而无需在本地服务器上开放入站端口。这为远程办公提供了更高的安全性,同时保持了便利性。希望这篇文章对你有所帮助,让你的远程工作更加安全和便捷。如果你还有任何问题或疑虑,请随时在评论中分享。