Azure 最佳架构安全评估 - 网络

Azure 最佳架构安全评估 - 网络安全

保护资产的最近本保障是控制好Azure上的网络流量,Azure的资源和本地资源之间的流量,进出Azure的流量。如果网络没有相应的安全防护,那么环境就很容易受到黑客攻击,比如公网IP的扫描。正确的网络安全控制可以很好地检测、控制、组织攻击者的攻击。
网络安全评估Checklist

  • 进行网络划分,对每个划分的网络分区建立安全的通信连接。将网络划分和整个企业的划分策略相一致。
  • 涉及安全管控来确保允许和阻止的网络流量,访问请求和应用程序通信,不同网络分区之间怎么实现这些流量管控。
  • 使用Azure Front Door和 应用程序网关、防火墙 DDoS防护来保护公共终结点
  • 使用DDoS标准版来防护DDoS攻击
  • 禁止虚拟机直接可以从公网访问
  • 控制网路东西向流量(子网之间的通信),以及南北流量(应用程序基本的通信)
  • 防止数据渗透攻击**(不了解看看)**

网络划分模型

统一的企业级划分策略将网络、应用程序、身份标识以及其他的访问控制来规划一个统一的划分。
进行网络划分的主要原因:

  1. 将一个负载的相关资产按组进行管理
  2. 将资源进行隔离
  3. 基于企业的部门组织下放自治策略
    网络控制可以确保边缘之间的安全交互。网络安全可以很好地加固安全态势、包括安全漏洞,因为网络防控可以很好地检测、组织攻击者进入企业负载。
    传统的网络划分一般不能很好地和企业的核心业务和应用程序进行很好契合。所以会导致复杂的网络端口开放、复杂的防火墙exceptions。
  • 企业是如何进行网络划分的呢?
    本问会着重将一些Azure 网络的特性,Azure网络如何进行划分、如何限制各个服务的访问。
    关键点
  • 创建软件定义的网络边界,确保网络边界之间有安全的通信方式。??
  • 建立零信任网络划分策略
  • 对于老旧的应用程序,需要技术团队将划分策略与其想入考虑范围内
  • Azure VNet是用来划分私有网络地址的,默认情况下,虚拟网络之间网络是不通的。
  • NSG 网络安全组是用来确保虚拟网络内部的安全通信的
  • ASG 应用程序安全组是用来定义运行不同负载的VM之间的流量规则
  • 使用Azure 防火墙来过滤云端、互联网端、本地端的流量
  • 如果不需要跨区域运行负载,请尽量将资源放在一个VNet里面
  • 如果需要多个区域,一个区域就是一个VNet,然后通过peering将VNet
  • 对于高级的配置,可以使用Hub-Spoke的拓扑结构图,一个VNet作为hub,其他VNet作为spoke

什么是划分?

Azure用什么来划分?
订阅、VNet、NSG、ASG、Azure Firewall

  1. 订阅:最基本的资源边界,所有订阅之间的网络通信都要明确规定好
  2. VNet:订阅内部的四由网络地址空间,默认两个虚拟网络之间是没有通信的,和订阅一样,所有的VNet之间的网络通信都要明确规定好
  3. NSG:用来控制VNet内部的网络流向,也可以控制外部网络,比如互联网和其他非VNet,NSG可以细颗粒度地控制网络划分,对子网、一个虚拟机、或者一组虚拟机进行网络端口控制。
  4. ASG:和NSG一样,但是是针对于应用程序的,运行有一定应用程序tag的虚拟机可以进行通信,这些虚拟机上面都跑同一个应用程序负载。
  5. Azure Firewall:Azure云原生的防火墙,可以部署在VNet上,也可以部署在hub上,对云、互联网、本地之间进行网络之间进行流量过滤。可以创建很多规则和策略,来运行、禁止三层到七层的网络流量。Azure Firewall也可以用来过滤出产流量。

划分的模式

一般有一些网络划分模式可以遵循,每种模式都有不同种类的隔离和连接。企业根据自己的需求选择划分模式

模式一:Single VNet 单一虚拟网络模式
所有的负载都运行再一个单一的VNet里面,这种模式使用于单一区域的负载,因为VNet是不能跨区域进行工作的。
对于单一VNet的模式,有很多方式进行安全加固,比如划分子网,划分应用程序组,使用NSG ASG。还可以使用Network Virtualized Appliance 或者 Azure firewall来加固网络划分。
Azure 最佳架构安全评估 - 网络_第1张图片
如图所示,子网1是用于数据库的运行,子网二是用于web应用程序的运行,你可以配置NSG来允许子网一只能和子网二进行通信,子网二可以和互联网通信。

模式二:多个VNet通过peering打通
如果资源位于不同的region,那资源就位于不同的VNet,不同的VNet通过peering进行打通,这种模式一般适用于应用程序的负载跑在不同的VNet上的情况,或者你需要你的负载跑在不同的region。这种模式的好处是在做peering的时候,需要明确规定好哪个VNet和哪个VNet进行通信。peering不具有传递性。此外,VNet内部还可以用NSG 和ASG进行划分。

Azure 最佳架构安全评估 - 网络_第2张图片
模式三:多个子网,但是以hub spoke的模型
在一个region内,一个子网专门用来做hub,其他子网作为该region的spoke,hub和spoke通过peering连接。在不同region的hub VNet,流量通过hub流到另外一个region的hub,这时的hub就像一个网关一样。这种模式下,所有的安全控制就在hub上进行被指,这样就可以通过hub管理所有spoke的流量,这种管理方式有容易扩展的特点。这种模式的特点就是,当网络拓扑结构越发复杂的时候,安全管控的开销并没有太复杂,因为可以通过怎加spoke,而安全管控全部在hub里面。
Azure 最佳架构安全评估 - 网络_第3张图片
推荐使用Azure firewall 来进行网络管理,因为Azure firewall可以跨VNet 跨订阅来管理3-7层的流量。这样可以统一管理入站出站规则,一致性地进行应用。比如说:

  • VNet 1不能和VNet2进行通信,但是可以和VNet3进行通信
  • VNet 1 除了可以访问*.github.com
    Azure Firewall Manager preview 可以集中管理防火墙策略,并且可以让DevOps team能够自定义本地策略。

三种模式的对比:

  1. 模式1、2默认VNet内的资源都可以直接互通,但是Hub/Spoke的模式,默认spoke之间不互通的,需要三层的路由器,如Azure firewall应用在hub,来手动创建两个spoke之间的连接。
  2. 模式1、2使用NSG ASG来进行网络流量过滤,默认情况下,流量都是互通的。模式3,不同spoke之间的流量是被禁止的,只有从防火墙上专门开放端口,才能互通。
  3. 模式1、2日志:NSG ASG进行日志收集。模式3使用Azure firewall日志来记录所有接受、拒绝的流量,通过azure monitor来进行日志查看。
  4. 意外开放公网终结点:模式1、2 ,如果NSG ASG配置不正确的话,DevOps可以意外地开放一些终结点。模式3,可以有效地防止意外地开放公网终结点,因为所有的流量都是通过hub进行过滤,再到spoke,所以hub会将这些先禁止掉。

进行安全网络连接的 Azure service

在云上跑的负载,一般也会需要访问外部的资源,比如需要访问本地资源,其他虚拟网络的虚拟机,或者其他的Azure 资源,这些访问连接可以通过互联网,也可以通过企业的内网。
关键点

  • 使用网络限制和IP防火墙来保护内网资源
  • 使用NSG和Azure Firewall来保护VNet的流量
  • 使用Service Endpoint或者 Private link来访问PaaS服务
  • 使用Azure 防火墙来防止数据渗透攻击
  • 严格限制后端服务的公网IP地址,除非必须,否则不允许开放公网IP
  • 尽量使用Azure原生的安全控制,而不是第三方的
  • 基于负载的种类来定义访问策略,控制不同应用层之间的网络流量

不同网络分区之间的连接

默认VNet之间是不能互通的,需要VNet之间的连接,需要明确定义通信路径,比如通过peering

VNet主要需要保护的是里面的VM,需要通过VNet来控制VM之间的通信,能否互通,能否和网络打通,能否和本地打通。可以使用ASG来控制VNet里面VM的流量,比如,可以给一组VM打标签,这组有标签的VM运行某个应用程序,可以基于这个应用程序标签,应用网络流量规则。

VNet基于业务需求分成很多子网。

一个好的Azure IP 地址策略,可以提供很好的便捷性、增长空间,也可以很好地和本地网络集成。IP地址规划可以很好地减少对公网暴露的系统,并且给企业网络提供一定的灵活性。

如何隔离并保护VNet里面的流量?

在VNet里面要确保安全通信,需要配置规则,允许、组织、来源、清除,需要明确地去路由,明确终点是哪里。
子网之间的流量是通过NSG来进行管理的,在NSG上定义规则,检查流量是否是来自\去到 一个IP地址(或者多个IP,或者一个子网)

另一种方法就是使用network virtual appliance(NVA)来检查入站和出站流量,基于规则来进行过滤。

如何使用NVA来路由网络流量,如何定义网络边界,如何进行审计、如何进行监测?

使用User Defined Route来控制网络的下一跳,UDR可以控制Azure、本地、互联网资源之间的下一跳。路由可以应用于virtual appliance 虚拟网络网关 虚拟网络 互联网。
比如说,你想检查所有来自公共负载均衡的入站流量,一个方法就是在子网中装一台NVA来过滤流量,只有符合标准的流量才能溜过去,然后,所有通过的网络流量都会发送到后端连接的内部负载均衡器。
你也可以使用NVA来进行出站流量过滤,比如,所有的负载流量都通过UDR来进行路由到下一个子网,子网中的内部负载均衡会讲请求分发给NVA,这些NVA讲流量导出到不通的公网IP。
Azure Firewall可以作为NVA使用,Azure也支持第三方的网络设备供应商,在Azure marketplace有售。

如何检测入站和出站流量?

一般都是需要收集网络流量日志的,如果你使用NSG,使用NSG flow来分析性能和安全,NSG flow log可以启用流量分析,以获得内部和外部流量流。

VNet和子网如何处理IP地址不够用?

一般情况下,网络按规划进行划分,但是随着业务的增加,ip地址的数量可能会不够用,如果重新进行规划,那么成本太大。其次,如果划分过多的小的子网没有太多的安全价值。
子网的划分要基于角色和功能,以及要使用的协议。这样的话,就可以把同样的资源放在一个子网里面,由一个子网的安全一起管控。
不要开放所有的规则,比如从0.0.0.0-255.255.255.255 都允许入站和出站流量。使用最少权限原则来允许通过的协议。

公网边缘流量

当在配置公网流量安全时,要考虑,应用是否需要访问公网IP地址,需要给出到什么样的访问权限来限制非授权的访问。
公网边缘流量,也称为南北流量,代表着企业内的负载和互联网的连接。网络边缘策略应该设计来削弱来自互联网的攻击,或者拦截威胁。主要有两个方案来提供安全管控和监控。

  1. Azure Firewall 和WAF
    Azure 对网络有一系列的限制方案。使用多层的安全放开,比如说,使用IP过滤,防火墙规则来限制服务进行非授权访问。
  2. NVA,或者可以使用Azure Marketplace的第三方解决方案
    Azure 安全特效足够用来方案常规的攻击,很容易部署,伸缩跨站。第三方工具有可能有更高级的功能,但是一般不会和Azure架构集成得很无缝,所以部署可能会很麻烦。

如何和后端服务进行通信

大多数得负载由多个层级组成,一个服务层服务另外一个服务从。一般分为,前段、商务流程、报告、分析、后端等等。
如何在不通得应用层之间管控流量?
使用Azure虚拟网络子网来分配不同得IP地址空间,每一层分配不同的子网网段。然后,定义每个子网之间的访问策略,从而限制不通应用层之间的访问。可以通过IP 过滤或者防火墙规则来进行限制。
你是否需要限制后端服务器的访问?
Web应用程序一般会有一个公网的入站点,这样来避免把后端的API和数据库服务器暴露给公网。这样可以只暴露一点点公网IP。比如,可以使用网关服务,比如Azure Front Door,Azure Front Door 可以将一系列IP地址转换为统一的一个端口,这样可以限制对公网的暴露。

Azure PaaS 服务的连接

应用负载一般都会要和其他Azure 服务进行通信,比如,可能需要去找Azure Key Vault去拿密钥。这样就需要避免通过公网进行连接。

Azure PaaS服务需要安全访问方式?

一般访问PaaS服务的方法时使用服务终结点或者Private Link,两种方式都限制只能授权的网络才能访问PaaS 终结点,这样可以有效地组织数据入侵风险。
有了服务终结点,这样就可以建立安全的通信连接,因为不需要公网IP地址就可以访问PaaS服务。大多数的PaaS服务支持服务终结点。
另外一种方法就是使用Azure Private Link。私有终结点使用私有IP地址。
Azure 最佳架构安全评估 - 网络_第4张图片
服务终结点提供服务级别的方式来访问PaaS服务,然而Private Link提供一个直接访问PaaS资源的途经,这样可以有效地避免数据渗透攻击,比如恶意管理员访问,Private Link是一个服务的服务,是根据入站和出站数据量进行收费的。Private Endpoint也是收费的。

如何控制Azure PaaS出站流量,如果Private Link不能用的话?

使用NVA或者Azure Firewall来做一个方向代理,如果不能用Private Link的话,这样来限制只有授权的PaaS服务来访问,使用Azure Firewall来保护数据渗透的风险。

如何实现本地和云的连接?

在混合架构,一些负载跑在本地,一些跑在云上,是否由安全控制来监控本地和云之间的连接流量。

你如何实现跨本地的连接?

使用Azure ExpressRoute来配置跨本地连接,这个服务是个专线服务,由第三方供应商提供,这个专有连接将本地连接上云。这样的方式,你可以减少暴露本地资产的风险。

如何访问VM?

使用Azure 堡垒机来登录你的虚拟机,而不是使用22 3389端口。你可以把虚拟机的RDP、SSH端口禁掉,使用VPN或者ER专线来进行远程管理。

本地虚拟机或者云上的虚拟机是否能够直接和互联网通信?

攻击者会持续对公网IP和开放的端口进行持续扫描,会尝试一些低成本的攻击,比如常见的密码尝试,已知的为打补丁漏洞。需要创建一个流程和方法来方式虚拟机直接访问外网,比如可以使用审计日志、监控、强制的策略等等。

公网流量如何路由?

确定如何路由公网流量,如果你可以使用本地安全设备,比如说强制tunneling 或者使用基于云的网络安全设备进行连接。

对于生产环境,允许云资源。。。。

终结点安全最佳实践

终结点就是一个地址,是web应用程序暴露给外部实体进行通信的。
如果终结点贝恶意攻击或者贝无意间攻入,这样可以导致整个应用程序都收到攻击。保护终结点的一个方法是在终结点上配置安全管控,来控制终结点的接受流量,比如定义规则集。纵深放域的一个方法就是进一步减弱风险,其中包括,如果主要的流量管控宕掉之后,补充的控制可以用来继续保护终结点。
下文会介绍Azure服务用什么样的方法来保护web 应用程序。
关键点

  • 使用Azure Front Door ,Application Gateway, Azure Firewall,Azure DDoS防护
  • 使用WAF来保护web应用
  • 保护负载发布的方式,限制那些不需要使用的发布方式。
  • 降低DDoS攻击,使用标准防护来保护关键应用,其中业务不允许会有中断。也可以考虑CDN来进行保护。
  • 设计流程和规则来避免虚拟机直接访问公网。
  • 使用自动化、有门禁的CICD部署方式。

公共终结点

公共终结点可以收到来自互联网的流量,这种终结点会导致服务很容易收到外部的攻击。

服务终结点和Private Link可以用来限制PaaS 终结点的访问,只有来自授权的虚拟网络才可以进行访问,这样就可以减少数据攻击的风险,以及相关的应用程序可用性的风险。服务终结点提供服务级别的PaaS服务访问,而Private Link提供PaaS资源的直接访问,这样可以减少数据渗透风险。
是否所有的公共终结点都受到保护?
检查是否所有的终结点为公共终结点,如果是公共终结点,就需要进行保护。

使用WAF

WAF给web应用程序提供基本的安全防护,WAF可以用来减弱一些常见的web应用程序攻击。
Azure 应用程序网关由WAF功能,可以用来检测web流量,检测http层的攻击,可以视为负载均衡,和HTTP的完全反向代理。
比如说,应用程序跑再Application Service Environment,API都是内部的,但是需要开放给外部用户,对外暴露可以用应用程序网关,这个服务可以视为负载均衡,将请求转发给内部API管理服务。
应用程序网关通过443端口进行安全可靠地通信。

Azure Firewall

可以使用Azure Firewall来完整地保护来自互联网的恶意攻击。Azure防火墙会监控所有的入站流量,只有受允许的请求才能通过防火墙。
一般的设计方案是用来部署DMZ层,或者应用层前面的边缘网络。
DMZ层是一层专门用来放防火墙的子网。

混合模式

如果你想要更高级别的安全防护,可以选择防火墙和应用程序网关来保护web和non-web应用。混合使用的方式由很多。
比如说,如果你想过滤出站流量,你只想允许能够连接到专门某个存储账户,而其他存储账户却不能有出站连接,那么可以使用FQDN来进行过滤。这种情况可以使用Firewall 也可以使用应用程序网关进行过滤。
另外一种比较流行的方法就是,如果你想要防火墙来监视你所有的流量,想要WAF来保护web 流量,应用程序需要知道客户端的源IP地址,这样需要把应用程序网关放在防火墙签名。反之,你也可以将防火墙放在WAF签名,如果你想检查所有抵达WAF的流量。
一般很难配好一个防火墙规则,可以建议使用Azure安全中心来检测是否有错误的配置风险。

验证方法

对于公网服务要禁止老旧的通信协议,老旧验证方式很容易受到攻击。这些方法不支持多因子身份验证,只支持密码验证,主要的攻击手段有密码喷洒、字典式攻击或者暴力破解。

DDoS攻击

DDoS攻击是服务器受到虚假恶意流量的过载攻击,DDoS攻击时非常常见的攻击,攻击者可以完全锁死访问,将服务搞瘫痪。将所有的核心应用启用DDoS防护。
DDoS有两种级别

  • 免费版:Azure云平台原生自带的DDoS防护,所有的云服务都会受到保护,但是这些保护一般是再网络层,也就是第三层。(基础版)
  • 标准版:这一层防护会使用机器学习的算法来检测异常流量,再服务受害之前积极地进行防护。(包括审计、报警、遥测数据)

如何进行DDoS防护

DDoS防护虚拟网络级别,这些保护一般是再网络层,第三层。
DDoS采用动态调节,基于应用的流量模型来检测风险
100% SLA
可以很省钱,比如说,有了DDoS攻击,第一组攻击可能会导致资源scale out,比如10台VM要scale到100台,那么如果我们有了标准保护,你不需要担心由于scale out添加的额外费用,因为Azure会提供cost credit。
DDoS 防护 with caching。如果采用CDN来进行防护,CDN会经常将内容从一个后端服务器复制到其他服务器上。服务请求不需要哦直接后后端服务器直接通信,这样请求的实践就会大大地降低。
再DDoS期间,如果CDN截获了流量,防止其发送到后端服务器,那么应用程序就会面临停机时间。
DDos保护用机器学习流量baseline。

建议举措

找出容易受到DDoS攻击的负载,将DDoS应用再应用程序网关中。

建议采用DevOps

开发人员不应直接将他们的代码直接发送给应用服务器。
企业是否使用CICD流程来发布代码?
应用程序CICD有一个流程和工具来帮助进行自动部署,门禁式部署。

Azure里面的流量流安全

关键点

  • 控制网络流量子网之间是东西向,应用层是南北向
  • 应用纵深防御的方法,启用零信任策略
  • 使用云应用程序安全代理

东西向和南北向流量

在进行负载网络流分析时,首先要区分东西向流量和南北向流量。

子网之间、Azure各个组件之间,负载的各层之间,是否被托管?是否安全?

  • 南北向流量
    代表的是流出数据中心的流量,比如说,网络从应用程序发送到后端服务,这种流量种类是最受攻击的流量,因为最终会流向互联网。所以必须采用安全控制来保障流入流出数据中心的流量要安全。
    比如说,一种典型的南北流量,AKS集群,集群会收到来自HTTP请求,群集也可以发出站流量去请求其他的服务,比如拉去容器镜像。
    这种的话,就需要你设计WAF来确保入站流量,需要用Azure Firewall来确保出站流量。

  • 东西流量

  • 东西流量也值在数据中心内部流动的流量。这种流量一般是用于基础设施内部之间的通信。可以是虚拟网络、子网等等。东西流量容易被忽视,尽管这部分流量占比很大。尽管默认基础设施防火墙足够阻止外部攻击,但也需要足够的安全来管控资源之间的流量。
    比如说,AKS cluster来举例子,东西流量就是群集里面的流量,比如和pods之间的通信,比如和controller的入站通信,如果负载有很多应用程序组成,那么应用程序之间的通信也属于东西流量。
    通过使用K8S的网络策略,可以限制pod之间的用心,基于零信任模型,仅开放所需的特定端口。

数据渗透

数据渗透式一种常见的攻击方式,当外部攻击者或者内部攻击者进行非授权的数据传输,大多数的恶意访问都是由于缺乏网络控制。
是否进行了数据渗透的检测和保护管理?
如果采用纵深防御的设计来保护网络流量,可以基于很多层来进行保护,比如说基于Hub-spoke的拓扑结构。Azure提供很多层的款空设计方案。

  • 使用Azure防火墙来允许、组织3-7层的流量
  • 使用Azure 虚拟网络User defined Routes来控制网络的下一跳。
  • 使用NSG来控制资源之间的流量,比如虚拟网络、互联网、子网
  • 使用Azure Privatelink Private endpoint来保护终结点
  • 检测和保护数据传输,检测数据包的传输
  • 检测攻击、进行报警,使用Azure sentinel Azure Security Center

网络控制并不足以组织数据渗透,加固身份管控、密钥保护、加密方式才行。

你是否考虑采用cloud application broker来保护此应用?
CASB可以提供集中的策略管控。CASB提供丰富的可视化管理,管控数据流动,复杂的分析方式来定位网络威胁。

翻译自:
https://docs.microsoft.com/en-us/azure/architecture/framework/security/design-network-connectivity

你可能感兴趣的:(Azure,虚拟网络)