在传统的解决方案中,这个功能是通过防火墙(也可以是路由器)在网络层级或子网之间 设置 allow 或 deny 的策略来实现的。比如说, Web 层中的哪些应用能访问到 App 层的哪些后台 软件,进而可以调用数据库层的哪些数据。但是,当应用特别多,数据库特别庞大的时候,通过 传统方式建立安全策略往往非常耗时、难于维护,且容易发生人为配置错误—因为在安全架 构的搭建中,需要配置大量复杂的命令,实现基于网络地址、应用的端口和协议的安全防护。 在 NSX 网络虚拟化环境中,分段技术与隔离技术一样,都是 NSX 安全的核心功能。 前文提到的 NSX 分布式防火墙基于“微分段” 技术,其实质就是在这种所谓的“分段” 功能上实现颗粒度更细的安全防护的一种方式。 由于 NSX 网络虚拟化环境可以支持多层网络环境,即具有多个网段的环境(见图 6.9 的左图),或单一网段的环境(见图 6.9 的右图),其中的工作负载全部使用分布式防火墙 规则连接到单个二层子网。在这两种情况下,通过微分段技术实现了相同的目标—在逻 辑网络中为工作负载到工作负载的东西向流量提供保护。
传统的物理防火墙和访问控制列表提供一个被安全团队和合规性审计人员验证的安全 策略。但是在基于云计算的数据中心环境中,随着攻击类型越来越多,攻击频率越来越高, 手动配置和更改大量安全策略的操作非常繁琐;并且在虚拟化环境中,虚拟机会根据 DRS 或 HA 策略,通过 vMotion 技术进行漂移。 在漂移过程中,一旦安全策略基于传统五元组 IP 协议,那么在漂移完成后,安全策略往往就需要更改,因为基于虚拟机物理位置、 IP 地 址和物理网络端口的安全策略在传统部署中并不会随着虚拟机的漂移而漂移。
在 NSX 虚拟网络中,网络服务(二层、三层、防火墙服务等)都是程序化地被创建,且 可以根据工作量分布式地部署在基于 Hypervisor 的网络虚拟化环境中。这就意味着网络服务 (包括二层、三层、防火墙服务等)通过虚拟网络接口与虚拟机完全关联。 我们可以将虚拟的 工作流抽象出来,用中央的、统一的管理界面配置安全策略, 以方便修改策略;且无论虚拟机 通过 vMotion 技术漂移到数据中心内部的哪个物理位置,其所有策略都能跟随它漂移过去,在 这个时候无需更改任何策略—NSX 网络虚拟化建立的是一张不依赖于网络拓扑且与物理网 络完全解耦的虚拟网络。于是,一套与物理拓扑无关的安全策略就可以轻松搭建起来。
基于微分段技术的 NSX 分布式防火墙是实现数据中心内部安全的最佳实现方式,可以 解决当前基于边界的网络安全解决方案中存在的问题,是一种基于安全零信任架构的高效 安全解决方案。它可以在应用/租户之间实现真正的隔离,进而实现高效可靠的安全防护与 访问控制。 它的主要价值如下: 实现数据中心内部安全; 加快安全策略的部署; 高性能、 分布式优化数据中心流量; 敏捷地响应业务变化需求; 提供高级服务。
NSX 网络虚拟化平台在虚拟网络之中提供了从二层到四层的防火墙功能,且实现了微 分段。但是在一些环境中,应用需要更高级别的网络安全策略来保护。 在这种情况下,用 户可以利用 NSX 平台,在其上集成第三方安全厂商的五到七层安全服务,提供更全面更充 分的基于应用的安全解决方案。 NSX 将第三方网络安全服务集成在虚拟网络中,通过逻辑 的通道发布至 vNIC 接口,使得在 vNIC 后端的应用可以使用这些服务。这种形式的服务集 成称之为“嵌入(Insertion)、链接(Chaining)与导向(Steering)”。
参考图 6.11,在 Guest 虚拟机和逻辑网络(逻辑交换机或分布式端口组)之间,会有一项 服务部署在 vNIC 层面,这就是服务的嵌入。 Slot-ID 体现了服务于相关虚拟机的连接—Slot 2 与分布式防火墙关联,而 Slot 4 与 Palo Alto 公司的 VM 系列虚拟防火墙关联了起来,其 他 Slot 可以集成更多的第三方服务。这就是服务的链接。流量在退出虚拟机时,需要遵从 Slot-ID 的 ID 号增序(如对于 Guest 虚拟机,数据包重定向到 Slot 2,然后才是 Slot 4);抵 达虚拟机的顺序则相反,为 Slot-ID 逆序(先 Slot 4,再 Slot 2)。这就是服务的导向。
举例来说,我们利用 NSX 网络虚拟化平台将 Palo Alto 公司的 VM 系列下一代虚拟防 火墙服务集成进来,应用在数据中心内部的每一个 Hypervisor,使得数据中心所有虚拟机 都获得了 Palo Alto 公司提供的高级安全功能。这样一来,为应用工作负载定义的 5 到 7 层 的网络安全策略就可以由 Hypervisor 来处理,内嵌到虚拟网络的每一条隧道里。 Palo Alto 公司提供的安全服务可以通过这样的方式,在 ESXi 主机本地的 vNIC 层面加强工作流中对 应用、用户和上下文的访控。
而不同企业即便都使用了 NSX 网络虚拟化平台,由于在安全方面需求迥异,就需要完 全不同且独特的第三方安全产品集成到自己的网络环境。 VMware NSX 网络虚拟化平台利 用了 VMware 整个生态圈,为不同类型的企业提供不同的安全解决方案。 NSX 的一些主要 安全合作伙伴除了 Palo Alto 外,还包括 Intel(已收购 McAfee)、 CheckPoint、 Symantec、 TrendMicro 等。企业的安全团队可以针对不同应用,选择 VMware 生态圈内不同安全厂商 的解决方案。而利用“嵌入、链接与导向” 的服务模式, NSX 网络虚拟化平台还能实现基 于其他服务的逻辑服务,将本不相关的网络安全服务集成起来(如防 DDoS 攻击和防病毒), 实现链式化、差异化、异构化的高级安全。 此外, NSX 的另一个合作伙伴 Rapid7 可定期对虚拟机自动执行漏洞扫描,并能在虚拟 机不满足特定标准时,实现自动隔离策略。将这个功能与 Palo Alto 的 NGFW 结合使用后, 就可以在 Rapid7 执行漏洞扫描并发现漏洞时自动隔离易受攻击的工作负载,而隔离网段将受 到 Palo Alto NGFW 策略的保护,该策略只允许修复工具进入该隔离网段,禁止一切流量外出。
6.2.5 NSX 分布式防火墙微分段技术的实现
前文已经对 NSX 分布式防火墙做了初步介绍,它通过在 ESXi 主机的 VM Kernel 处启 用 VIB 内核模块来实现。它的部署方式与 NSX 分布式逻辑路由器类似, 而又独立存在。 部署完成之后,就可以通过 NSX Manager(NSX Controller 不参与 NSX 分布式防火墙的控 制工作)发布到各个 ESXi 主机,以保护虚拟机在二到四层中的通信流量,这种流量主要 是东西向的, 当然也可以是南北向的。
如图 6.12 所示, NSX 的分布式防火墙的规则是在流量被 VTEP 封装之前或解封装之后, 在 vNIC 端执行的。分布式防火墙策略独立于虚拟机的连接方式(无论虚拟机连接到的是 VLAN 还是 VXLAN)和位置,无需关心逻辑交换机或逻辑路由器策略,直接针对虚拟机 指定策略并提供保护。 即便虚拟机处于同一个二层网络中, NSX 分布式防火墙也可以执行安全策略,这在传 统防火墙的部署中是难以实现的,因为防火墙中的策略都是针对 IP 地址的,而二层之间的 通信流量与 IP 地址并没有关系,只和 MAC 地址有关,因此这些二层安全策略一般只能部 署在二层交换机的端口,如 PVLAN 等。
这个问题也是一个网络实现了“大二层” 后的遗 留问题。而使用 NSX 分布式防火墙,可以针对虚拟机的名字或一组虚拟机的组名实现安全 策略,无需关心其 IP 地址,且一但针对虚拟机创建了安全规则,它将一直跟随并匹配这台 需要保护的虚拟机,无论虚拟机在数据中心内部通过 vMotion 漂移到什么位置,都不用重 新设置安全策略。 要配置 NSX 分布式防火墙,需要登录到关联了 vCenter 的 NSX Manager。配置策略之 后, NSX Manager 会将安全规则推送到 ESXi 主机的内核模块(使用 TCP 的 5671 端口),之后虚拟机内核模块中的 vNIC 侧就可以启用安全规则,保护虚拟机。也可以通过 REST API直接对 NSX Manager 进行配置。
NSX 分布式防火墙在虚拟机内核模块中的 vNIC 提供了基于 Hypervisor 的防火墙 功能,而在部署之后,数据路径都需要经由分布式防火墙处理,才能相互通信。由于 防火墙的部署是分布式且与逻辑交换、路由独立的,因此数据路径是易于优化选录和 易于扩展的。一旦部署了分布式防火墙策略,防火墙进程就会对源自虚拟机和出流量 和抵达虚拟机的入流量进行检查,没有流量可以无视防火墙策略进行通信,从而实现 了安全防护。
在 NSX Manager 配置分布式防火墙策略的时候,有两个选项可以选择—Ethernet 和 General,这对应着我们之前介绍的两种策略书写方法—Ethernet 选项,是用于创建二层 安全规则,可以用来过滤源目 MAC 地址和二层协议,如 CDP(Cisco Discovery Protocol, Cisco 设备发现协议)、 ARP、 RAPP、 LLDP 等; General 选项,主要用于创建三层和四层安 全规则,它定义了传统的基于 IP 或端口(如 SSH、 HTTP 等)的安全规则,保护不同网段 的虚拟机或东西向流量。 部署了 NSX 分布式防火墙的数据中心可以带来如下价值:
支持现有网络与应用;
灵活方便的安全对象管理;
安全管控与应用一致性部署。
我们可以用一个例子,来讨论一下如何利用 NSX 基于微分段的分布式防火墙在数 据中心部署 3 层应用的安全策略,如何实现这些价值。通过在数据中心内部按需部署 NSX 分布式防火墙实现内部安全,用户可以按部门、区域划分隔离, 或按应用边界、 应用层级来划分。 NSX 微分段技术支持安全组内部成员之间的逻辑隔离、以虚机为单位 的隔离。如图 6.13 所示,在数据中心中,有很多部门(比如财务[FIN]和人力资源[HR])共 享了相同的逻辑网络。
网络的总体设计是:有 3 台逻辑交换机(分别连接 Web 层、 App 层和数据库层), 它们直接通过一台分布式逻辑路由器相连。在逻辑路由器上定义了所有网段的 IP 地址 的网关,连接所有逻辑交换机。逻辑路由器通过 NSX Edge 与外部物理网络通信。 连接 到外部物理网络的终端用户可以访问 Web 层的逻辑交换机的网段(通过逻辑路由器和 NSX Edge 之间的动态路由协议和 NAT 设置,将 Web 网段发布到了外部)。
这里,财务 和人力资源部门各有两台虚拟机作为 Web 服务器、 1 台虚拟机作为 App 服务器、 1 台虚 拟机作为数据库服务器。 在 NSX 网络虚拟化平台提供的分布式防火墙中,我们使用了微分段技术,这种设计 的特殊性在于,应用的相同层级的虚拟机被连接到同一个逻辑交换机,而并不按照它们 所属的部门进行连接。这样一来,当财务和人力资源的工作负载连接到不同的逻辑网络时, 就可以获得相同的安全级别—毕竟 NSX 分布式防火墙的优势在于,网络的拓扑中 不再是部署安全策略的障碍, NSX 分布式防火墙适用于任何拓扑,相同级别的工作流的 安全防控在网络拓扑的任何地方都能轻松进行,因为 NSX 分布式防火墙的部署是独立于 网络拓扑且与之无关的。而在传统部署中,防火墙作为旁路模式连接到核心交换机,不 仅所有工作流都需要从核心交换机、防火墙绕一圈,流量路径是不优化的,且只能一个 一个网段地进行配置,配置极其复杂和繁琐
因此在传统部署中,为了简化配置,只能 将同一部门的所有服务器全部放入同一子网,而这种部署的安全性本来就是极低且易被 攻击的—黑客只要攻破了部门内任何一台服务器或终端 PC,就可以侵入同一 VLAN 下 该部门的其他所有设备。 根据这一设计理念,可以利用 NSX 中的 Service Composer 功能, 将角色类似的一组虚 拟机划入相同的一个组织(Organization)。在 Service Composer 中有一个重要的功能,叫做 安全组(Security Group, SG)。安全组允许动态或静态地将对象加入到一个“容器” 中, 而这个容器会作为分布式防火墙策略规则的源和目的的目标。 现在通过图 6.14 看一看安全 组是如何创建, 以及虚拟机是如何加入相关安全组的。
来自财务 Organization 的 Web 服务器需要划入名为 SG-FIN-WEB 的安全组。为了搭建这个安全组,可以利用基于虚拟机名字或安全标签的信息,将实例自动分配到相 关的安全组中—虚拟机名字中含有 Fin-web 字样时,会自动分配至 SG-FIN-WEB 安 全组,而虚拟机名字中含有 HR-web 字样时,也会自动分配至 SG-HR-WEB 安全组。 如 果 用 户 想 要 手 工 分 配 安 全 组 , 也 可 以 将 Fin-web-01 和 fin-web-02 手 动 加 入 SG-FIN-WEB。
在这个设计中,总共要创建 6 个安全组: 3 个供财务部门使用, 3 个供人力资源部门使 用。将虚拟机分配至正确的容器是部署微分段的基础。一旦完成这些工作,就可以非常便 捷地部署流量策略了。 各个层级之间的网络流量侧安全策略,需要根据一些规则来执行。如图 6.15 所示, 从 Internet 到 Web 服务器,允许 HTTP 和 HTTPS 的流量,其余流量全部丢弃(南北向 流量);从 Web 层到 App 层, 放行 TCP 的 1234 端口的流量和 SSH 的流量,其余流量全 部丢弃(东西向流量);从 APP 层到数据库层,允许 MySLQ 流量,其余流量全部丢弃 (东西向流量)。
而在各个层级内部,各个相同的组织处于同一层的服务器可以相互 ping 对方。比如, Fin-web-01 可以 ping Fin-web-02,但是 Fin-web-01 不能 ping HR-web-01 和 HR-web-02。财 务部门的任何服务器与人力资源部的任何服务器应该都是没有流量交互的,这两个组织之 间的通信是完全被禁止的。这些策略如图 6.16 所示。
根据这些规则,就可以开始部署基于微分段技术的 NSX 分布式防火墙策略了。首先, 需要将分布式防火墙的默认策略由 Allow 改为 Block, 这是因为我们需要使用一个高级的安 全策略模型,在增加了其他安全策略后,最后再使用默认模型,就可以拒绝不匹配该策略 模型的所有网络流量(见表 6.2)。
至此, NSX 分布式防火墙策略定义完成,只需将策略配置并应用在 NSX 网络虚拟化 平台,就能实现企业各个部门之间细颗粒度的安全防护。 与讨论分布式路由时一样,讨论完了分布式防火墙的实现,我们分析一下分布式防火 墙的流量模型。对于传统防火墙部署,处于相同主机里的 Web 服务器与 App 服务器之间的 三层通信,需要经过 6 跳才能连接,这是因为流量进出旁路模式连接核心交换机的物理防 火墙的过程需要 2 跳连接,这样一来,就比传统经过三层交换机的 4 跳连接(之前已阐述) 多出 2 跳。而与分布式路由相同,由于分布式防火墙也是工作在 ESXi 主机的 Hypervisor 之上的,因此在 NSX 环境下,相同主机里的 Web 服务器与 App 服务器之间的三层通信也 是直连(0 跳)的,如图 6.17 所示。
对于不同主机之间的三层通信,与第 5 章的阐述类似,同样可以将需要防火墙处理的流量连接精简为 2 跳,如图 6.18 所示。
6.2.6 使用 NSX 分布式防火墙保护虚拟桌面
除了在企业各个部门之间实现安全防护, NSX 分布式防火墙的另一个绝佳应用场景是 虚拟桌面(Virtual Desktop Infrastructure, VDI)环境。 虚拟桌面近年不断被各大企业所接受,这些企业部署桌面虚拟化的目的是改进客户端计算安全性并提供更高的企业移动性。虚拟桌面解决方案集中了桌面和应用,以保护静态 数据,防止应用受到未经授权的访问,并且提供一种更有效地修补、维护和升级映像的方法。 与传统桌面相比,虚拟桌面并没有给企业内部每个用户都配置一台运行 Windows 操作 系统的 PC 机,而是通过在数据中心内部的服务器上加载基于 Windows 操作系统的虚拟机, 将桌面进行虚拟化,通过影像投影的协议,将后台服务器运行的桌面发布到用户使用的瘦 客户端或 PC 机上,而用户访问他们的虚拟桌面就像是访问传统的本地安装桌面一样。图 6.19 所示为 VMware 公司的 VDI 解决方案—Horizon View 的架构图。