Azure 安全网络篇 -- DMZ 区域设计实践
应广大看官要求,今天为大家介绍如何在 Azure 上搭建 DMZ 区域。为什么讲这个话题,安全无小事,很多用户在上云的时候并没有做好安全的前期规划导致后期埋下了安全隐患。为什么专挑 DMZ 网络安全设计讲,要想富先修路,在云端跟 IDC 相同,要想富先修路,网络先行,同时 DMZ 区域是整个网络安全设计中的重点,流量属性最复杂,安全重要性最高。其次关于云原生,很多用户上云后希望更多采用云平台第一方的托管服务,过去一年多的时间 Azure 在安全产品上有很多新产品发布,也希望通过这篇文章,帮助用户了解 Azure 上有哪些牌,并将这副牌打好。在此次 DMZ 区域设计实践中,我们会涉及到 Azure 云上几个重要的安全产品,Azure VNET(虚拟网络服务),Azure DDoS(拒绝服务攻击防御服务),Azure WAF (WEB 安全防火墙服务),Azure Firewall (防火墙服务),Azure NSG(网络安全组服务),Azure Bastion(跳板机服务)。
“DMZ是英文“demilitarized zone”的缩写,中文名称为“隔离区”,也称“非军事化区”。它是为了解决安装防火墙后外部网络的访问用户不能访问内部网络服务器的问题,而设立的一个非安全系统与安全系统之间的缓冲区。该缓冲区位于企业内部网络和外部网络之间的小网络区域内。在这个小网络区域内可以放置一些必须公开的服务器设施,如企业Web服务器、FTP服务器和论坛等。另一方面,通过这样一个DMZ区域,更加有效地保护了内部网络。因为这种网络部署,比起一般的防火墙方案,对来自外网的攻击者来说又多了一道关卡。” 摘自百度百科
简单来讲 DMZ 的概念就是分而治之,如果我们把运行在云端的应用服务按照服务对象来分类的话,一类是暴露给互联网用户使用的外网应用,一类是暴露给内网用户使用的内网应用。如果我们按照相同的安全策略进行管理,外网应用处于众矢之的,一旦被攻破其会成为渗透内网的跳板。其实整个网络安全中分而治之的概念贯穿在方方面面,Zero-Trust Sercurity(零信任安全)中做了任何人,应用都可能成为安全潜在危险的假设,所以在进行网络安全涉及的时候我们应该以按需分配的原则,为用户,应用系统进行分类,以最小权限分配原则将安全策略分配到用户,应用系统上。在承载系统的 Azure VNet 中外网应用和内网应用首先通过子网划分的方式将 VNet 拆分为多个 Segment(分段),通过分段便于我们对分段内的系统使能不同的安全策略,在这里我们定义外网应用分段为 DMZ-Subnet,内网应用分段为 Others-Subnet。
当拥有分段后,按照外网应用分段(DMZ-Subnet)和内网应用分段(Others-Subnet)来定义不同的访问安全策略。在传统数据中心中 DMZ 区域通常通过防火墙来实现,通过定义不同的区域(Zone),来实现访问的隔离。在 Azure VNet 中没有区域的概念,我们可以不同的分段即 Subnet 映射为传统的区域即(Zone)的概念。在 DMZ 实践中,通过定义访问策略来实现安全隔离,一般的策略逻辑为:允许互联网访问 DMZ 区域,允许内网区域访问 DMZ 区域,不允许 DMZ 区域访问内网区域。上述逻辑的实现可以通过 Azure NSG(网络安全组服务)来实现,在 NSG 中我们可以定义访问策略规则,逻辑与传统防火墙 ACL 一致。Azure NSG 规则可以使能在 Subnet 上或虚拟主机的 Nic 上,从使用实践上对于整个分段即 Subnet 内所有虚拟主机一致的策略建议配置在 Subnet 上,对于个别主机的特殊策略配置在 Nic 上,这样简单且易于管理。
在上述的 NSG 访问策略规则规划中,我们还有很多留白的区域,如 DMZ-DMZ 即 DMZ 区域内部的互访,Others-Others 即内网区域内部的互访,以及 DMZ,Others 到 Internet 的访问。我们先来看下内网场景,多组应用系统虽然同时归属在相同分段但它们之间未必存在依赖(即不存在互访需求),按照零信任网络模型最小访问权限原则,在同分段内不同应用系统之间也需要进行访问控制策略隔离。如法炮制,分段!前面我们通过 Subnet 实现了分段,在 Subnet 内的系统我们继续分段,这里我们称之为微分段(Micro-Segment)。在传统网络实践中通常是对同 Subnet 内的主机设置基于 IP 地址的明细访问规则,这种做法可以达到安全目标但不易于维护,随着主机数量的增多,规则数量将成比例激增,后期不宜与维护管理。Azure 中的 Application Security Group 功能为微分段的实现带来了便利,用户可以将虚拟主机按照微分段创建相应的 Application Security Group,然后在 NSG 策略中直接通过 Application Security Group 来定义访问策略,访问安全策略的定义剥离了 IP 的依赖,使后期维护变得简单快捷。
通过微分段实现分段内部的安全访问控制,可以进一步加固网络安全。下面我们来看一下 DMZ 和 Others 分段访问 Internet 的安全设计。在传统数据中心内这部分我们称之为互联网边缘(Internet Edge),通过防火墙来实现 DMZ 和 Others 向互联网的访问,随着安全产品的不断发展演进,从三四层防御到应用感知的七层防御,从静态策略到动态策略,不断的来加固和提升企业网络的安全等级。在Azure 中可以通过 Azure Firewall (防火墙服务)来实现,Azure Firewall 可以提供访问日志审计,FQDN 访问控制策略,基于 IP 信誉的安全策略等功能,实现 VNet 内向 Internet 访问的安全防护。
前面我们的设计中所有的安全访问策略主要针对的都是对于与业务流量的策略,当今很多安全事件都是从控制层面发起了渗透,比如主机被破解 SSH/RDP 登录等。所以从整个安全设计上,外网区域,内网区域的隔离其实体现最小范围的将应用暴露在公网,那么不具备公网访问的主机如何进行管理?市场上有很多成熟的跳板机解决方案解决的就是远程登陆管理的问题,在 Azure 中 Bastion 服务可以提供跳板机服务,可以帮助管理员用户通过指定的入口对 VNet 内的主机进行管理。Bastion 服务作为托管的跳板机服务,将管理员用户的访问聚合到统一入口,对于 VNet 内部的主机只需要放行对于 Bastion 服务地址的登录访问即可。
前面的设计中,我们通过分段和微分段的方式实现了对虚拟主机访问的分而治之。对于 Azure 中的 PaaS 服务,实现方式略有不同,默认情况下 Azure PaaS 服务暴露的是一个公网访问的 Endpoint,用户可以在 PaaS 服务内置的 Firewall 防火墙访问策略内设置允许访问的客户端 IP 白名单,但由于暴露在公网仍然存在被别人扫描的可能性。所以建议用户采用 Azure Private Link,将 Azure PaaS 服务的访问 Endpoint 锁定到 VNet 内部只暴露内网访问节点,从而实现与虚拟主机一样的内网隔离设计。
除此之外 Web 七层安全防御以及 DDoS 防御也是受到普遍关注的安全实践,Azure WAF (Web 安全防火墙服务)和 Azure DDoS 服务(拒绝服务攻击防御服务)可以帮助用户实现防御。Azure WAF 支持在 Azure FrontDoor 服务以及 Azure Application Gateway 服务上开启,对于面向互联网 2C 应用,WAF on FrontDoor 可以借助 FrontDoor 服务的全球接入点实现全球分布式近缘防御。Azure DDoS 服务借助微软云全球丰富的网络带宽资源,结合基于机器学习的自适应流量策略模型为用户提供全球性的 DDoS 保护服务。
通过上述的介绍,DMZ 的设计就完成了,我们借助 Azure 第一方的网络安全组件以零信任网络模型为基准构建了安全可靠的网络环境。希望对大家有所帮助,安全无小事,后续有机会再为大家介绍身份安全,数据安全等话题。
架构图参考图标:
VNet:
NSG:
Application Security Group:
Bastion:
Private Link:
Firewall:
WAF:
DDoS: