【问题标题】:Is it possible to restrict ingress and egress traffic between front end and back end Azure IaaS VMs strictly at the network level?是否可以在网络级别严格限制前端和后端 Azure IaaS VM 之间的入口和出口流量?
【发布时间】:2026-01-22 08:10:01
【问题描述】:

我想使用 IaaS VMs 在 Azure 上创建一个超偏执的中心辐射式 DMZ 设置。

我有一个面向公共 Internet 的前端服务器(即 IIS 网络服务器),我想严格锁定它。但是,前端需要访问一些后端服务器(即数据库、域控制器等)。我想确保:

  1. 只有前端服务器可以与后端服务器通信,并且只能在商定的端口上进行通信。
  2. 后端服务器无法从/向公共互联网接收发送流量。
  3. 后端服务器无法相互通信。
  4. 这些规则在 VM 操作系统层之外强制执行,以提供深度防御。

这似乎是一个合理的方案,但我似乎无法在 Azure 上实现它。我能做的最接近的是:

  • 创建 IaaS VM 前端并适当限制其端点
  • 创建一个带有“FrontEnd”和“BackEnd”子网的Azure Virtual Network,将每台机器放在适当的子网上。
  • 阻止 RDP 访问后端虚拟机。如果我想 RDP 到后端机器,我必须通过前端 VM 来完成。
  • 在每台计算机上设置 Windows 防火墙规则,以实施这些中心辐射型规则。

这没问题,但它不像我想要的那样被锁定。我真的很想进行深度防御,这样我就不必依赖每台机器上的 Windows/Linux 防火墙设置。例如,假设后端服务器必须使用管理员凭据运行应用程序(假设没有替代方案)。我想要一个额外的保护层,这样后端服务器上的错误(或恶意查询)就不能:

  • 重新配置后端的防火墙以减少限制。
  • 与前端机器(包括公共互联网)以外的任何人交谈。

据我所知,这在使用虚拟网络的 Azure 上是不可能的,因为:

  • Azure 虚拟网络似乎没有公开 ACL 或任何其他高级筛选支持。
  • Azure IaaS VM 仅支持单个 NIC,因此前端不能同时在前端和后端子网上进行多宿主。

我错过了什么吗?似乎我可以使用多个虚拟网络一起破解某些东西,并将它们作为一堆 /30 子网一起使用 VPN,但这看起来很糟糕。如果我无法在 Azure 上解决这个问题,似乎我唯一合理的选择是尝试使用Virtual Private Cloud (VPC)AWS 上设置类似的东西。任何帮助/指导将不胜感激。

【问题讨论】:

  • 致投票结束的人:也许这个问题最适合服务器故障,但 Windows Azure 团队要求我们在 Stack Overflow 上发布带有“azure”标签的问题(并因此赞助该标签这里),所以我觉得这是不求助于 MSDN 论坛的最佳折衷方案。
  • Azure 团队的建议不会覆盖关于 SO 的主题和主题。这是一个格式正确的问题,但是除非您可以将其整理成我们可以在此处回答的内容...嗯,也许您想以编程方式对其进行配置? *咳嗽*
  • @Charles 是的,我想以编程方式完成所有这些配置。我希望能够定期从后端添加/删除机器。
  • 如果大家一致认为,考虑到我的所有限制,这将最好在 Server Fault 上运行,我可以迁移它(但似乎 Windows Azure 团队看起来并不多)。我只是不想求助于 MSDN 论坛,因为 SE 引擎要好得多。
  • 如果手动执行,Azure 的几乎所有配置都是无用的。这种配置根本无法扩展。这不仅是基础设施问题,也是开发人员问题。学习基础设施部分可能是过程中的一个步骤,但最终结果应该是我们开发人员必须创建和维护的代码。因此,我认为这确实适合 SO。

标签: security networking azure dmz


【解决方案1】:

截至 2015 年 11 月,现在可以交付您所要求的内容,尽管是在 IaaS v2 中。

类似防火墙的规则,仅限于地址范围、端口和协议,可以通过网络安全组 (NSG) 交付。这在 Microsoft 的网站上有很好的记录:What is a Network Security Group (NSG)?

您现在还可以创建具有多个 NIC(同样是 IaaS v2)的 VM,但请注意,您可能需要增加 VM 大小才能添加多个 NIC。同样,这里有一篇合理的文章详细解释它:Create a VM with multiple NICs

【讨论】:

    【解决方案2】:

    我收到了来自 Azure 团队的私人答复,该答复有效地表示这目前是不可能的。这是一项要求的功能,但没有设定实施时间表。

    【讨论】:

    • 你知道现在是不是这样吗?我从 Microsoft 看到 Azure 示例,他们在其中创建“前”和“后”子网,但如果您不能在它们之间设置防火墙,这似乎毫无意义。
    • 是的,情况仍然如此。本周我碰巧明确询问了一位 Azure 人员。他们能想出的最佳解决方案是建立另一个 IaaS 虚拟机并将其用作网关,但如果您拥有管理员凭据而不将其用作网关,那么这仍然可能会被破坏。
    • 对于 2015 年阅读本文的任何人 - 我相信现在使用网络安全组可以实现这一点。
    • 你可以在这里查看:blog.kloud.com.au/2014/11/07/…
    最近更新 更多