8.1 云安全
云安全听起来貌似一个全新的概念,但实际并非如此。好消息是如果对现有的安全基础设施以和安全技术进行一些细微调整并增加某些功能,它们将能够重新适用于云IaaS。重构从根本而言仍属服务器虚拟化(更多细节请参见2.3节)范畴,现有的防火墙、网络入侵预防、web应用防火墙、终端安全等在云安全中仍然能发挥作用,这些安全设备和机制能够像保护物理服务器一样为虚拟服务器提供保护。简括而言,本节将从服务器虚拟化视角出发探讨实现云IaaS服务所需的各类安全保护。
服务器虚拟化后,许多服务的位置将发生变化,特别是,一些以前驻留在隔离区的应用现在会转移到虚拟机上(Virtual Machine,VM),相应地,多个VM也会驻留在同一个物理服务器上。传统DMZ模式中,每一个接入端口都连接了一个物理服务器,来自任何其他服务器或两个服务器间,包括像防火墙或负载平衡这些附加设备的通信,都需要经过物理接入交换机。在虚拟服务器环境中,多VLAN、IP子网以及接入端口都能够作为虚拟接入层的一部分,驻留在同一物理服务器上,VM之间的网络传输可以只在一个物理服务器内部完成而不需要穿越物理接入交换机,因为一个虚拟交换机可以承担和传统物理接入层交换机一样的功能,配置好以后可以完成所有VM之间的连接工作。
由于无法再使用传统方法来收集同一物理服务器上VM间的网络流量信息,因此虚拟接入层安全面临着新的挑战,现有DMZ必须能够适应服务器虚拟化,才能应对这些挑战,可以基于虚拟接入层来设计一个虚拟的DMZ,也可以通过虚拟安全设备来完成这一任务。
专为虚拟网络安全而设计的虚拟安全设施,在虚拟环境内工作,它可以与某些安全应用(虚拟防火墙)预先集成在一起,运行在由虚拟机管理程序控制的硬件平台上,这样的工作方式意味着虚拟安全设施能够直接解决虚拟环境内的安全隔离、保护以及监测问题,而不需要依赖虚拟接入网络外部的物理安全和监测设备,有关虚拟安全设备的更多探讨已经超出了本书讨论范围。
说明:VMware vShield Zones是虚拟防火墙的样例,而NX1KV交换机的Cisco虚拟安全网关(Cisco Virtual Security Gateway,VSG)是虚拟安全设备的样例。
此外,由于所有的应用现在都驻留在同一物理服务器内的多个VM上,因而需要对那些与服务器虚拟化进程有关的物理服务器或硬件平台进行“加固”。平台安全的例子包括:
·1型虚拟机管理程序(裸虚拟机管理程序):因为是裸机,所以1型管理程序不需要在硬件服务器上安装OS,因此从这个方面发动攻击并不容易。
·精简-虚拟机管理程序策略:精简型虚拟机管理程序压缩了软件占位面积,确保补丁更少,攻击区域也更小,更由于不能随意编写代码,提高了威胁的难度,VMmare ESXi属于精简虚拟机管理程序。
·内存保护:使用无执行(No Execute,NX)位和地址空间加载随机化(Address Space Layout Randomization,ASLR)提供内存保护。
·NX位:CPU使用NX位把内存区域分隔为只供储存处理器指令(代码)或只供存储数据。支持NX位的OS能够将内存的某部分空间标记为不可执行,处理器将根据标记拒绝执行在这部分内存空间中的任意代码。常见的技术,如可执行区域保护,能够防止某些恶意软件将自身代码插入到其他程序的数据存储区域后再运行而控制计算机。
·ASLR:ASLR随机地为关键数据区域安排加载区域,包括在进程的地址空间中确定可执行的基址,以及库、堆、栈等,ASLR增加了预测目标地址类攻击的难度,因为攻击者无法确定相关地址空间的信息。
·核心模块集成:当内核(例如Vmkernel)加载模块、驱动以及应用程序时,通过数字签名确保集成和可信。
·可信执行技术(Trusted Execution Technology,TXT):Intel TXT技术将处理器、芯片以及可信平台模块(Trusted Platform Module,TPM)集成在一起完成验证,并/或防止基于软件的攻击,例如:
·企图在虚拟机管理程序中插入rootkit(例如,“蓝色药丸”病毒)
·从内存发起的对平台攻击
·BIOS和固件升级攻击
说明:Westmere-EP支持TXT,Westmere-EP是1-2 socket的代号,它最多可以拥有6个核心服务器/工作站处理器,面向Intel 5520芯片组平台(与Intel Xeon 5500平台兼容),Westmere-EP基于Intel微处理器架构(代号Nehalem),属于32nm家族成员之一。
除了平台方面的安全,还需要同时确保所有订购了云IaaS的多个租户的安全隔离,这一任务通常是通过基础设施计算资源虚拟化完成的,包括服务器虚拟化(更多细节请参考本书第2章)、存储虚拟化(更多细节请参考本书第2章)以及网络虚拟化(更多细节请参考本书第3章)。
由于虚拟接入网络与物理网络并无不同之处,它们也会遇到和物理网络一样的漏洞,比方说:
·某个VM的用户,可以访问同一虚拟网络上所有其他的VM。
·对虚拟网络中某个VM进行攻击后,以该VM为平台,能对同一网段上其他VM发动攻击。
·如果虚拟网络与某个物理网络相连或者连接到Internet上,那么虚拟网络上的VM就可以访问到外部资源(同样包括外部攻击),使得它们暴露在攻击之下。
·直接在VM之间传输,未经过安全设备的网络流量是未受监控的。
虚拟网络上同一VM内(或VM到VM)直接的网络传输几乎不可见,由此产生的问题与物理网络遇到的问题基本类似,并且因为包完全是在单个物理主机的硬件之内移动使得问题更为复杂:
·虚拟的网络传输没有超出物理主机的硬件范围,使得安全管理器无法对直接VM到VM的网络传输进行检查,既不能够实施拦截,也不清楚传输目的何在。
·在单个主机内对记录VM到VM网络活动的日志,以及对VM访问进行常规攻击检测都非常困难。
·无法检测或修复那些因直接VM到VM传输活动而产生的对网络资源不正确使用及带宽占用。
·无法检测出虚拟网络上或内部运行不正常的服务。
·VM流氓程序会耗尽整个主机物理资源(CPU周期、内存等),从而影响整个虚拟环境及其他VM的性能。
8.1.1 虚拟交换机安全
本章将以Nexus 1000V(NX1KV)交换机作为虚拟接入层交换机的代表。除了第2章提到的优点以外,NX1KV同样也继承了物理接入层交换机的很多安全特性,包括:
·VLAN
·私有VLAN
·访问控制列表(Access-control list,ACL)
·防欺诈功能,诸如:
·动态主机配置协议(Dynamic Host Configuration Protocol,DHCP)监听
·IP源防护
·动态ARP探测(Dynamic ARP Inspection,DAI)
·端口镜像
·NetFlow版本9
说明:NX1KV属于L2交换机,但是也配备了L3/L4的产品以支持ACL、NetFlow、QoS以及IGMP监听等功能。
VLAN
虚拟接入层能够支持VLAN,虚拟接入层交换机所支持的VLAN能够从L2的角度,提供可靠的网络传输分段方法,以保持L3的隔离路径,并将其扩展到虚拟接入层。VLAN加上ACL功能后,能够将数据流分配至不同的VM和设备上。VLAN安全措施是物理接入层交换机的最佳方案在虚拟环境中依然成立,依然适用于虚拟环境。
私有VLAN
驻留在同一VLAN内的VM之间仍然可以相互访问,和在物理环境中访问方式一样并没有区别,如果其中某一个VM受到攻击,会影响系统整体的安全性,因为可以从受到攻击的VM上向VLAN中的其他VM发起二次攻击,包括:特殊应用攻击、中间人攻击或那些以攻击系统破坏数据为目的的网络攻击。
虚拟交换环境使用私有VLAN(Private VLAN,PVLAN)来分离同一VLAN内的VM,也可以进一步将PVLAN再分成主VLAN和从VLAN,主VLAN负责完成接入,从VLAN与配置虚拟或物理交换机位于同一地点,每个从VLAN与一个主VLAN关联,一般的子网中,一个主VLAN可以与多个从VLAN关联。当配置PVLAN时,可以使用三种端口:
·混杂端口:混杂端口可以看成是PVLAN的“开放端口”,它能够与其他所有端口通信。混杂端口通常负责完成交换机上行链路及主VLAN的网络传输。设置混杂端口的目的是为了完成群体或隔离VLAN间的网络传输,也可以把混杂端口当成trunk端口或接入端口。
·群体端口:这些端口能够与同一群体内的群体端口或混杂端口进行信息交换。不同群体间的群体端口之间不能交互,换句话说,分配给某个群体VLAN的端口属于群体端口。
·隔离端口:孤立端口只能够与混杂端口交互,来自孤立端口的网络传输只会转发给混杂端口,也就是,分配给某个隔离VLAN的端口属于隔离端口。
主VLAN根据依据网络传输的相互关联,分别将来自混杂端口的流量转发给群体端口或隔离端口。从端口则会被分配给隔离端口或群体端口,也就是:从VLAN既可以是隔离VLAN,也可能是群体VLAN。当需要隔离虚拟基础设施中的两个VM时,可使用隔离VLAN,如果系统要求能够支持直接VM到VM机器通信或者系统使用了服务器集群时,群体VLAN将在此时承担非常重要的角色。
图8-1中,端口Eth3/3属于混杂端口,是主VLAN80的一部分,Eth3/3连接到一个默认网关上(为了简化,未在图中显示),端口vEth1和vEth2属于群体端口,同属于群体VLAN81,VM1和VM2之间可以直接交互,也可以访问默认网关。端口Eth4和Eth4都是隔离VLAN82的隔离端口,此时,VM3只能连接默认网关,VM4也一样。
图 8-1 使用PVLAN实现VM隔离
访问控制列表
同一子网内分属于不同的云IaaS租户或终端用户的VM之间是不允许进行直接通信的。由于VM内部传输可以不用离开物理服务器,如果在相应虚拟交换机端口实现IP ACL,能够从L3提供另外一种对网络传输分段的方法。
如前所述,属于隔离VLAN的端口不能与其他隔离VLAN的端口直接通信,类似地,不同群体VLAN间的端口也不能与其他端口直接通信。为了完成互通,系统需要采用L3的方法,除了通过路由或其他L3设备,还必须使用ACL应用来判断是允许还是拒绝这些VLAN之间的通信。
如果需要控制不同子网之间VLAN通信,ACL将是合适的方法,ACL还能够保证产网络和管理网络(或VLAN)之间的相互隔离。
说明:NX1KV交换机通常会在I/O模块(VEM)部分完成对IP包的ACL处理,管理接口网络传输通常会在supervisor模块(Supervisor Module,VSM)上完成,这类操作通常耗时更长一些。
DHCP探测
DHCP探测能够伪造DHCP服务器攻击网络,它就像不可信主机和DHCP服务器间构筑起的一道逻辑防火墙,交换机负责建立和维护DCHCP绑定的数据库(例如,DHCP探测表),在数据库中保留了DHCP地址分配给端口的记录,它也能够从不可信端口中过滤出DHCP信息,如果来自不可信端口入站连接数据包源MAC地址与DHCP绑定数据库中任何一个MAC地址都不能成功匹配,这个包就将被丢弃。
IP源保护
在IP源绑定表中保存了与IP地址相对应的MAC地址和VLAN编号,IP源保护以DHCP探测绑定数据库或静态配置的IP源绑定信息为依据,对来自不可信L2端口的IP网络包进行过滤。对不可信L2端口同时使用IP源保护及DHCP探测技术,能够防止某个主机企图伪装成其他的IP地址发动IP欺骗式攻击。任何进入不可信L2端口的IP数据包,如果其源IP地址不是通过DHCP或静态配置得到的,都将被过滤掉。只有L2端口,包括接入和trunk端口,才能支持IP源保护功能。
动态ARP探测
一个恶意用户会广播伪造的ARP应答,在LAN分区上拦截发送给其他主机的数据包,并且破坏相连主机系统的ARP缓存。为了阻止这类攻击,L2交换机必须确保只对合法的ARP请求和应答进行转发。
交换机的DAI功能能够验证网络中ARP包的合法性。在将包转发到指定目的地之前,DAI会借助某个可信数据库(DHCP探测绑定数据库),验证IP到MAC地址的匹配合法性,对包的ARP合法性进行检查。DAI会删掉所有IP到MAC匹配不成功的ARP包,但DAI只对入站数据包进行检测,不会管理出站数据包。
非DHCP环境中无法获得DHCP探测绑定数据库信息,DAI能够通过用户自定义的ARP ACL来验证ARP包的合法性,此时,在用户自定义的ARP ACL中保存了主机静态配置所得IP地址与其MAC地址之间的映射关系。一般推荐开启交换机的DAI功能,因为它能够防止网络遭受许多常见的中间人(Man-In-The-Middle,MITM)攻击。
端口镜像
借助服务器虚拟化技术,在同一物理服务器上不同VM之间的网络传输不再需要穿过物理接入层的交换机就能完成,由于虚拟接入层缺乏网络流量可视性,管理者如果不通过相应物理安全设备进行数据包转发操作,很难判断该VM是否已经被影响或者受到了攻击。
交换机端口分析器(Switched Port Analyzer,SPAN)以及封装远程SPAN(Encapsulated Remote SPAN,ERSPAN)是非常好的网络监控工具,能够得到虚拟接入层的网络流量信息。本地SPAN的源接口和目标接口都在同一设备上,网络分析器直接附加到SPAN目标端口上,SPAN源可以是某个端口,也可以是一个VLAN接口。SPAN目标,通常是某个端口,也可以是一个VLAN。本地SPAN能够监控源接口收到的所有网络流量,包括BPDU。
本地SPAN不能通过IP网络转发数据包,但ERSPAN能实现这一点。ERSPAN可以监控经过IP网络的多个网络设备上的流量,也可以通过GRE隧道将网络数据包转发到目标分析器上。换而言之,ERSPAN能够远程监控网络传输,ERSPAN源可以是端口也可以是VLAN。
NX1KV交换机能够激活ERSPAN功能,来自VM的网络流量可以被转发给外部设备,例如入侵防护系统(Intrusion Protection System,IPS)设备和网络分析模块(Network Analysis Module,NAM)。
说明:ERSPAN使用单独的源及目标会话,源及目标会话配置在不同的交换机上,ERSPAN源会话拷贝来自源端口或源VLAN的会话信息,然后通过可路由的GRE封装包转发到ERSPAN目标会话,ERSPAN目标会话然后将包转发给目标。
图8-2中,NX1KV交换机的ERSPAN源会话将VM4(ERSPAN端口ID为104)的网络传输报文复制一份,然后转发给IPS设备,来自VM1(ERSPAN端口ID为101)的网络传输报文将被ERSPAN目标会话复制然后转发给NAM。ERSPAN目标会话的配置是在服务汇聚层交换机(为了简便,未在图中显示)完成的。ERSPAN目标会话一旦收到来自ERSPAN源会话的网络传输报文,将立刻将其转发至相应的接收目标端口。在本例中,源及目标分别为IPS设备和NAM。
在进行帧封装操作时,可以将ERSPAN端口ID(1-1023)信息附加到ERSPAN包头中,以便在目标端口能够区分不同ERSPAN网络数据流(在本例中,ERSPAN101代表NAM,而ERSPAN104代表IPS)。为每一个会话提供单独的ERSPAN ID,能够区分多个汇聚后的ERSPAN会话,如果这些会话指向的目标设备驻留在某个集中地点,例如,服务汇聚层的服务器机箱(Cat6K交换机),这样的区分方式就非常实用。有关更多ERSPAN配置的详细信息,请参见9.2.2节的相关内容。
说明:Cisco NX1KV NAM拥有一个驻留在Nexus 1010虚拟服务设备上的虚拟刀片(Virtual Service Blade,VSB),这意味着,源自NX1KV交换机的ERSPAN及NetFlow能够被定向到虚拟接入网络的NAM SAB,而不是定向到服务汇聚层的物理NAM上。
图 8-2 ERSPAN获得的可视性
NetFlow
网络监控、统计分析以及网络规划时,通常会采用NetFlow进行数据采集,NX1KV在虚拟接入层支持NetFlow,能够获取所主流VM的网络流量的相关信息,有利于对这些VM进行安全监控和统计分析。
一个flow是面向特定源接口(子接口)的单向序列包,这些包都必须符合某些匹配规则,拥有相同源/目标IP、源/目标端口、协议接口以及服务类型的包被聚集在同一个流中,并给包打上标记,大量网络信息浓缩在一起形成了NetFlow缓存数据库。
Flow记录记载了NetFlow收集到的信息内容,类似flow中的包,以及flow的统计信息,即可以使用新生成的flow记录也可以利用预先配置好的flow记录。NX1KV交换机支持NetFlow版本9(Version 9)以及下列这些预先配置的flow记录:
·NetFlow-Original:预定义的传统IPv4输入NetFlow,附带原始的AS序号
·NetFlow IPv4 Original-Input:预定义的传统IPv4输入NetFlow
·NetFlow IPv4 Original-Output:预定义的传统IPv4输入NetFlow
·NetFlow IPv4 Protocol-Port:预定义协议及端口汇聚规则
说明:为什么选择NetFlow V9?之所以优先考虑V9,是因为V5数据格式必须是定长,在NX-OS中使用16位表示32位接口索引,也不支持IPv6、L2以及MPLS域。
说明:本书撰写之际,NX1KV交换机已经不支持NetFlow Exporter V5的格式,虽然能够支持NetFlow Exporter V9的格式,但是不支持L2、IPv6域。
Flow的导出器定义了何时何地将NetFlow缓存中的flow记录送给消息服务器,也称为NetFlow收集器,导出器定义包括以下内容:
·目的IP地址
·源接口
·UPD端口序号(采集器监听端口)
·输出格式
需要为flow导出器创建一个与flow记录关联的Flow监视器,监视器会被应用到特定方向指定接口的网络监测。
说明:NX-OS支持两种NetFlow工作模式:全模式分析接口收到的所有数据包,抽样模式依据用户指定的抽样算法和抽样速率,对配置了NetFlow的接口数据包进行分析。本书写作时,NX1KV交换机还不支持NetFlow Sampler功能。
NetFlow收集器对输出流进行汇总,生成消息报文,供网络传输和安全监测分析使用。NetFlow导出器定期向NetFlow收集器发送信息,flow总是不断地被送入NetFlow缓存中,然后由定时器决定何时该输出到NetFlow收集服务器上。当满足下列条件之一,flow就将被输出:
·flow在某个指定时间段一直处于没有新包到达的非活动状态。
·flow的生存期超过了当前定时器长度,例如,大FTP下载。
·TCP标识(例如,连接完成FIN或被重置RST)标明该flow已经被终止。
·flow缓存满,为了给新到达flow提供空间,某些flow必须被删除。
说明:NX1KV交换机的活动定时器缺省设置为1800秒(允许范围为60~4092秒),非活动时间缺省为15秒(允许范围为15~4092秒)。
NX1KV交换机的报告中包含了很多细节信息,例如,驻留在NX1KV交换机上的虚拟以太网接口上每秒包的个数。流监测器能对来自与交换机相连的物理接口上的流进行监测,也能够监测VMkernel接口(vmknics)的流,例如VMotion网络传输。
将NetFlow传输转发给收集器时可以采用两种部署方式:带内部署和带外部署。带内部署模式中,收集器位于生产网络,NetFlow流将通过交换机的生产接口进行转发;带外部署模式中,收集器位于某个指定带外管理网络,NetFlow流将通过交换机的管理接口进行转发。