我正在 Azure 中构建虚拟机网络,1 组虚拟机用于 Web 层,1 组虚拟机用于数据/SQL 层。我将创建一个 jumpbox VM,以便通过 VPN 实现 DevOps 访问。
现在我读到我应该对我的实际 VM 拥有最少的软件和连接选项,因为它应该通过跳转箱运行以尽量减少我的 VM 的攻击面并拥有一个中央接入点。
现在我想做两件事:
通过远程桌面连接到我的所有 VM,我想我可以简单地创建一个到我的 jumpbox 的 VPN RDP 连接,当登录到我的 jumpbox 时,只需使用内部 v-network IP 打开到我的其他 VM 的另一个 RDP 窗口。
通过 SQL Server Management Studio 或使用连接字符串的应用程序直接访问我的(负载平衡,带可用性设置)MSSQL 2016 实例。MSSQL 实例位于我的 sql 层 VM 上,而不是我的 jumpbox 上,我能否以某种方式将 SQL 流量从我的 jumpbox 转发到我的 sql 层 VM?我猜直接访问 sql 层 VM 违背了拥有 jumpbox 的整个想法。
注意: - 在 Windows Server 2016 上运行 MS SQL Server 2016
答案1
通过远程桌面连接到我的所有 VM,我想我可以简单地创建一个到我的 jumpbox 的 VPN RDP 连接,当登录到我的 jumpbox 时,只需使用内部 v-network IP 打开到我的其他 VM 的另一个 RDP 窗口。
是的,我们可以部署一个虚拟机作为跳转盒。
通过 SQL Server Management Studio 或使用连接字符串的应用程序直接访问我的(负载平衡,带可用性设置)MSSQL 2016 实例。MSSQL 实例位于我的 sql 层 VM 上,而不是我的 jumpbox 上,我能否以某种方式将 SQL 流量从我的 jumpbox 转发到我的 sql 层 VM?我猜直接访问 sql 层 VM 违背了拥有 jumpbox 的整个想法。
我们可以在 Jump Box 上部署 RRAS(VPN),它作为 P2S VPN 服务器工作,连接到 RRAS 服务器后,您将能够直接连接到 Azure VM。我们可以使用 Windows 客户端连接到 RRAS 服务器,也可以在 Linux 上安装 SSTP-Client,然后我们就可以使用 Linux 连接到 RRAS 服务器。
有关启用 RRAS 作为 VPN 服务器的更多信息,请参阅关联。
答案2
有很多方法可以解决这个问题,如果不知道您的业务需求,就没有直接的答案,我强烈建议您阅读本文并自行决定:https://docs.microsoft.com/en-us/azure/best-practices-network-security?toc=%2fazure%2fvirtual-network%2ftoc.json
当与 Azure 一起提供时,跳转箱并不是最安全的设计,因为您可以使用比跳转箱更便宜、更方便的免费工具。
我会不惜一切代价避免将 SQL 开放到互联网,除非您有强有力的商业案例,然后使用带有 ACL 的网络安全组来仅允许从特定 IP 地址访问它。
对于您的多层部署,我建议如下:
- 创建单个资源组来托管环境。
- 创建一个具有三个子网的 Vnet,一个用于前端,一个用于后端,一个用于 VPN。
- 创建两个网络安全组 (NSG),并将它们关联到前端子网和后端子网。
- 对于前端 NSG,仅允许 HTTP/HTTPS。
- 对于后端 NSG,禁用来自互联网的所有类型的访问,甚至 RDP 和 SQL,并且只允许来自前端子网的访问。
- 在子网级别启用 VPN,并配置到您的工作场所的站点到站点连接,或点到站点连接,并仅允许您信任的特定人员使用。
这是一个更好的部署方案,下面是它应该如何的一个很好的总结:
参考:
网络安全组:https://docs.microsoft.com/en-us/azure/virtual-network/virtual-network-manage-nsg-arm-portal
Azure 点到站点 VPN:https://docs.microsoft.com/en-us/azure/vpn-gateway/vpn-gateway-howto-point-to-site-resource-manager-portal
访问控制列表:https://docs.microsoft.com/en-us/azure/virtual-network/virtual-networks-acl-powershell