保护资产的最近本保障是控制好Azure上的网络流量,Azure的资源和本地资源之间的流量,进出Azure的流量。如果网络没有相应的安全防护,那么环境就很容易受到黑客攻击,比如公网IP的扫描。正确的网络安全控制可以很好地检测、控制、组织攻击者的攻击。
网络安全评估Checklist
统一的企业级划分策略将网络、应用程序、身份标识以及其他的访问控制来规划一个统一的划分。
进行网络划分的主要原因:
Azure用什么来划分?
订阅、VNet、NSG、ASG、Azure Firewall
一般有一些网络划分模式可以遵循,每种模式都有不同种类的隔离和连接。企业根据自己的需求选择划分模式
模式一:Single VNet 单一虚拟网络模式
所有的负载都运行再一个单一的VNet里面,这种模式使用于单一区域的负载,因为VNet是不能跨区域进行工作的。
对于单一VNet的模式,有很多方式进行安全加固,比如划分子网,划分应用程序组,使用NSG ASG。还可以使用Network Virtualized Appliance 或者 Azure firewall来加固网络划分。
如图所示,子网1是用于数据库的运行,子网二是用于web应用程序的运行,你可以配置NSG来允许子网一只能和子网二进行通信,子网二可以和互联网通信。
模式二:多个VNet通过peering打通
如果资源位于不同的region,那资源就位于不同的VNet,不同的VNet通过peering进行打通,这种模式一般适用于应用程序的负载跑在不同的VNet上的情况,或者你需要你的负载跑在不同的region。这种模式的好处是在做peering的时候,需要明确规定好哪个VNet和哪个VNet进行通信。peering不具有传递性。此外,VNet内部还可以用NSG 和ASG进行划分。
模式三:多个子网,但是以hub spoke的模型
在一个region内,一个子网专门用来做hub,其他子网作为该region的spoke,hub和spoke通过peering连接。在不同region的hub VNet,流量通过hub流到另外一个region的hub,这时的hub就像一个网关一样。这种模式下,所有的安全控制就在hub上进行被指,这样就可以通过hub管理所有spoke的流量,这种管理方式有容易扩展的特点。这种模式的特点就是,当网络拓扑结构越发复杂的时候,安全管控的开销并没有太复杂,因为可以通过怎加spoke,而安全管控全部在hub里面。
推荐使用Azure firewall 来进行网络管理,因为Azure firewall可以跨VNet 跨订阅来管理3-7层的流量。这样可以统一管理入站出站规则,一致性地进行应用。比如说:
三种模式的对比:
在云上跑的负载,一般也会需要访问外部的资源,比如需要访问本地资源,其他虚拟网络的虚拟机,或者其他的Azure 资源,这些访问连接可以通过互联网,也可以通过企业的内网。
关键点
默认VNet之间是不能互通的,需要VNet之间的连接,需要明确定义通信路径,比如通过peering
VNet主要需要保护的是里面的VM,需要通过VNet来控制VM之间的通信,能否互通,能否和网络打通,能否和本地打通。可以使用ASG来控制VNet里面VM的流量,比如,可以给一组VM打标签,这组有标签的VM运行某个应用程序,可以基于这个应用程序标签,应用网络流量规则。
VNet基于业务需求分成很多子网。
一个好的Azure IP 地址策略,可以提供很好的便捷性、增长空间,也可以很好地和本地网络集成。IP地址规划可以很好地减少对公网暴露的系统,并且给企业网络提供一定的灵活性。
在VNet里面要确保安全通信,需要配置规则,允许、组织、来源、清除,需要明确地去路由,明确终点是哪里。
子网之间的流量是通过NSG来进行管理的,在NSG上定义规则,检查流量是否是来自\去到 一个IP地址(或者多个IP,或者一个子网)
另一种方法就是使用network virtual appliance(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可以启用流量分析,以获得内部和外部流量流。
一般情况下,网络按规划进行划分,但是随着业务的增加,ip地址的数量可能会不够用,如果重新进行规划,那么成本太大。其次,如果划分过多的小的子网没有太多的安全价值。
子网的划分要基于角色和功能,以及要使用的协议。这样的话,就可以把同样的资源放在一个子网里面,由一个子网的安全一起管控。
不要开放所有的规则,比如从0.0.0.0-255.255.255.255 都允许入站和出站流量。使用最少权限原则来允许通过的协议。
当在配置公网流量安全时,要考虑,应用是否需要访问公网IP地址,需要给出到什么样的访问权限来限制非授权的访问。
公网边缘流量,也称为南北流量,代表着企业内的负载和互联网的连接。网络边缘策略应该设计来削弱来自互联网的攻击,或者拦截威胁。主要有两个方案来提供安全管控和监控。
大多数得负载由多个层级组成,一个服务层服务另外一个服务从。一般分为,前段、商务流程、报告、分析、后端等等。
如何在不通得应用层之间管控流量?
使用Azure虚拟网络子网来分配不同得IP地址空间,每一层分配不同的子网网段。然后,定义每个子网之间的访问策略,从而限制不通应用层之间的访问。可以通过IP 过滤或者防火墙规则来进行限制。
你是否需要限制后端服务器的访问?
Web应用程序一般会有一个公网的入站点,这样来避免把后端的API和数据库服务器暴露给公网。这样可以只暴露一点点公网IP。比如,可以使用网关服务,比如Azure Front Door,Azure Front Door 可以将一系列IP地址转换为统一的一个端口,这样可以限制对公网的暴露。
应用负载一般都会要和其他Azure 服务进行通信,比如,可能需要去找Azure Key Vault去拿密钥。这样就需要避免通过公网进行连接。
一般访问PaaS服务的方法时使用服务终结点或者Private Link,两种方式都限制只能授权的网络才能访问PaaS 终结点,这样可以有效地组织数据入侵风险。
有了服务终结点,这样就可以建立安全的通信连接,因为不需要公网IP地址就可以访问PaaS服务。大多数的PaaS服务支持服务终结点。
另外一种方法就是使用Azure Private Link。私有终结点使用私有IP地址。
服务终结点提供服务级别的方式来访问PaaS服务,然而Private Link提供一个直接访问PaaS资源的途经,这样可以有效地避免数据渗透攻击,比如恶意管理员访问,Private Link是一个服务的服务,是根据入站和出站数据量进行收费的。Private Endpoint也是收费的。
使用NVA或者Azure Firewall来做一个方向代理,如果不能用Private Link的话,这样来限制只有授权的PaaS服务来访问,使用Azure Firewall来保护数据渗透的风险。
在混合架构,一些负载跑在本地,一些跑在云上,是否由安全控制来监控本地和云之间的连接流量。
使用Azure ExpressRoute来配置跨本地连接,这个服务是个专线服务,由第三方供应商提供,这个专有连接将本地连接上云。这样的方式,你可以减少暴露本地资产的风险。
使用Azure 堡垒机来登录你的虚拟机,而不是使用22 3389端口。你可以把虚拟机的RDP、SSH端口禁掉,使用VPN或者ER专线来进行远程管理。
攻击者会持续对公网IP和开放的端口进行持续扫描,会尝试一些低成本的攻击,比如常见的密码尝试,已知的为打补丁漏洞。需要创建一个流程和方法来方式虚拟机直接访问外网,比如可以使用审计日志、监控、强制的策略等等。
确定如何路由公网流量,如果你可以使用本地安全设备,比如说强制tunneling 或者使用基于云的网络安全设备进行连接。
对于生产环境,允许云资源。。。。
终结点就是一个地址,是web应用程序暴露给外部实体进行通信的。
如果终结点贝恶意攻击或者贝无意间攻入,这样可以导致整个应用程序都收到攻击。保护终结点的一个方法是在终结点上配置安全管控,来控制终结点的接受流量,比如定义规则集。纵深放域的一个方法就是进一步减弱风险,其中包括,如果主要的流量管控宕掉之后,补充的控制可以用来继续保护终结点。
下文会介绍Azure服务用什么样的方法来保护web 应用程序。
关键点
公共终结点可以收到来自互联网的流量,这种终结点会导致服务很容易收到外部的攻击。
服务终结点和Private Link可以用来限制PaaS 终结点的访问,只有来自授权的虚拟网络才可以进行访问,这样就可以减少数据攻击的风险,以及相关的应用程序可用性的风险。服务终结点提供服务级别的PaaS服务访问,而Private Link提供PaaS资源的直接访问,这样可以减少数据渗透风险。
是否所有的公共终结点都受到保护?
检查是否所有的终结点为公共终结点,如果是公共终结点,就需要进行保护。
WAF给web应用程序提供基本的安全防护,WAF可以用来减弱一些常见的web应用程序攻击。
Azure 应用程序网关由WAF功能,可以用来检测web流量,检测http层的攻击,可以视为负载均衡,和HTTP的完全反向代理。
比如说,应用程序跑再Application Service Environment,API都是内部的,但是需要开放给外部用户,对外暴露可以用应用程序网关,这个服务可以视为负载均衡,将请求转发给内部API管理服务。
应用程序网关通过443端口进行安全可靠地通信。
可以使用Azure Firewall来完整地保护来自互联网的恶意攻击。Azure防火墙会监控所有的入站流量,只有受允许的请求才能通过防火墙。
一般的设计方案是用来部署DMZ层,或者应用层前面的边缘网络。
DMZ层是一层专门用来放防火墙的子网。
如果你想要更高级别的安全防护,可以选择防火墙和应用程序网关来保护web和non-web应用。混合使用的方式由很多。
比如说,如果你想过滤出站流量,你只想允许能够连接到专门某个存储账户,而其他存储账户却不能有出站连接,那么可以使用FQDN来进行过滤。这种情况可以使用Firewall 也可以使用应用程序网关进行过滤。
另外一种比较流行的方法就是,如果你想要防火墙来监视你所有的流量,想要WAF来保护web 流量,应用程序需要知道客户端的源IP地址,这样需要把应用程序网关放在防火墙签名。反之,你也可以将防火墙放在WAF签名,如果你想检查所有抵达WAF的流量。
一般很难配好一个防火墙规则,可以建议使用Azure安全中心来检测是否有错误的配置风险。
对于公网服务要禁止老旧的通信协议,老旧验证方式很容易受到攻击。这些方法不支持多因子身份验证,只支持密码验证,主要的攻击手段有密码喷洒、字典式攻击或者暴力破解。
DDoS攻击是服务器受到虚假恶意流量的过载攻击,DDoS攻击时非常常见的攻击,攻击者可以完全锁死访问,将服务搞瘫痪。将所有的核心应用启用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应用再应用程序网关中。
开发人员不应直接将他们的代码直接发送给应用服务器。
企业是否使用CICD流程来发布代码?
应用程序CICD有一个流程和工具来帮助进行自动部署,门禁式部署。
关键点
在进行负载网络流分析时,首先要区分东西向流量和南北向流量。
子网之间、Azure各个组件之间,负载的各层之间,是否被托管?是否安全?
南北向流量
代表的是流出数据中心的流量,比如说,网络从应用程序发送到后端服务,这种流量种类是最受攻击的流量,因为最终会流向互联网。所以必须采用安全控制来保障流入流出数据中心的流量要安全。
比如说,一种典型的南北流量,AKS集群,集群会收到来自HTTP请求,群集也可以发出站流量去请求其他的服务,比如拉去容器镜像。
这种的话,就需要你设计WAF来确保入站流量,需要用Azure Firewall来确保出站流量。
东西流量
东西流量也值在数据中心内部流动的流量。这种流量一般是用于基础设施内部之间的通信。可以是虚拟网络、子网等等。东西流量容易被忽视,尽管这部分流量占比很大。尽管默认基础设施防火墙足够阻止外部攻击,但也需要足够的安全来管控资源之间的流量。
比如说,AKS cluster来举例子,东西流量就是群集里面的流量,比如和pods之间的通信,比如和controller的入站通信,如果负载有很多应用程序组成,那么应用程序之间的通信也属于东西流量。
通过使用K8S的网络策略,可以限制pod之间的用心,基于零信任模型,仅开放所需的特定端口。
数据渗透式一种常见的攻击方式,当外部攻击者或者内部攻击者进行非授权的数据传输,大多数的恶意访问都是由于缺乏网络控制。
是否进行了数据渗透的检测和保护管理?
如果采用纵深防御的设计来保护网络流量,可以基于很多层来进行保护,比如说基于Hub-spoke的拓扑结构。Azure提供很多层的款空设计方案。
网络控制并不足以组织数据渗透,加固身份管控、密钥保护、加密方式才行。
你是否考虑采用cloud application broker来保护此应用?
CASB可以提供集中的策略管控。CASB提供丰富的可视化管理,管控数据流动,复杂的分析方式来定位网络威胁。
翻译自:
https://docs.microsoft.com/en-us/azure/architecture/framework/security/design-network-connectivity