焦宏宇,何利文,黄 俊
(南京邮电大学 计算机学院,江苏 南京 210046)
近年来,云计算、大数据被社会各界广泛关注并快速发展。作为提供ISSA服务的开源云平台Openstack[1]也被很多公司作为构建私有云的管理平台。随之而来,Openstack的安全问题也日益严峻。由于Openstack本身并没有有效的安全机制防止网络上的攻击,会造成很大的安全隐患。蜜场技术作为网络安全领域的核心技术,结合了蜜罐技术[2]和异常检测机制,在大型分布式网络中集中部署蜜罐,对各个子网安全威胁进行收集。但是蜜场系统受安全性、性能和保真度这三个因素的相互制约而无法广泛应用。基于蜜场技术的Openstack安全模块研究就是在这种背景下进行的,它不仅为私有云提供了更高的安全性,而且解决了蜜场系统搭建的安全性、保真度与性能这三个相互制约因素带来的难题,让蜜场系统具有了更高的实用价值。
但是目前很多的蜜场都是用于传统物理网络,对于虚拟化网络中的应用不是很成熟。文献[3]介绍了通过构建SDN蜜网,利用OpenDaylight控制器良好的可扩展性和可控性,解决了传统蜜网难以实现流量控制、部署不便、调整复杂等问题。文献[4]建立了一个称为Potemkin的原型蜂窝系统,利用虚拟机,激进的内存共享以及后期绑定资源来实现这一目标。虽然还不成熟,但Potemkin在实际测试中模拟了超过64 000个互联网蜜罐,仅仅是使用少量的物理服务器。
重定向[5]是蜜场系统中的关键组成部分。它的作用是将进入Openstack系统的所有流量进行分类,并将不同的流量重定向到不同的系统中去。首先,监听非业务地址以及端口,非业务的流量会直接重定向到蜜场中;其次,业务流量会交由异常检测系统进行分析,检测到的异常流量会直接重定向到蜜场中;最后,由异常检测系统检测出的正常流量才会转发到业务系统中。但是现有的网络攻击检测与网络流量的重定向机制,存在较多不足,无法很好地满足蜜场的需要。同时现有的重定向机制无法很好地工作在Openstack虚拟化的网络环境中[6]。
黑客进行攻击之前,一般都会进行网络扫描。网络扫描通常扫描的是一个目的IP地址段,这些地址段中有些IP是未被使用的,端口扫描通常扫的是已有IP地址的主机上的大量端口,有些端口并未使用,即未开启相应服务。对于非活跃IP地址以及非开放端口的访问,统称为非业务访问,这些访问通常是攻击流量。对于非业务流量的重定向,可以引诱攻击这对蜜罐进行攻击。如果黑客通过某种方法得知业务系统地址,根据业务系统的漏洞对服务进行攻击,可达到一定的目的。对业务子网中活跃主机上开放服务的访问,叫做业务访问,也包含各种各样的攻击。
所以,针对子网的网络攻击流,不仅包含非业务流量,也包含业务流量。因此网络攻击检测机制包含了对于非业务流量以及业务流量的检测机制。
1.1.1 非业务访问监听模块
非业务访问监听,需要确定哪些是非业务的流量,一般体现为未使用的IP+Port,需要去探测业务子网中哪些地址和端口是未使用的。这两个参数主要体现在虚拟机是不是运行状态以及运行状态的虚拟机上开启的端口有哪些。
对于虚拟机的状态,在传统网络中或使用Ping进行存活状态检测,而在Openstack中所有虚拟机的状态都会由系统检测记录到相应的数据库中,可以直接拉取子网内虚拟机状态信息,分析出哪些IP地址是运行中主机使用的。
对于运行中虚拟机的端口是否开放,可以先拉取虚拟机安全组配置,将放行的端口取出,对应运行中主机放行的端口进行主动探测,将探测出来的运行主机对应的开放端口记录下来。
以上两个机制可以获取到子网业务地址与端口,根据这些信息建立虚拟机开放服务信息库。非业务监听模块如图1所示。
图1 非业务监听模块
1.1.2 针对业务访问的异常检测模块
业务访问中很可能会包含各种各样的攻击,对这些攻击进行检测的有效方式是采用入侵检测技术,入侵检测技术可以检测出某些未知攻击。在业务子网中部署基于支持向量机(SVM)的入侵检测系统[7],经过模拟仿真实验验证选取最佳的SVM参数。当入侵检测系统检测出异常流量后,对这股流量需要重定向到蜜场中。同时异常检测系统会将攻击信息记录到事件数据库中,其中包括最重要的信息是攻击源的IP和Port,将该信息其存入黑名单列表中,并设置一个超时时间,在超时时间内该IP:Port发来的流量都会被视为攻击流量直接重定向到蜜场中,不再经过异常检测系统,减轻了系统压力。
Openstack虚拟化网络与物理网络存在很多不同之处。物理网络是由传统物理网络设备和物理服务器组成,数据包由网络设备进行转发。而Openstack虚拟化网络较为复杂,Openstack所有的外部网络的流量和Openstack内同租户跨网段的流量都是要经过neutron节点,通过不同租户命名空间的router进行路由的。该组件会基于每个租户虚拟化出基于不同命名空间(namespace)的路由器(router),所有该租户下的虚拟机去往外网的通信都会在该router上面做NAT,同租户下的跨网段通信也由该router进行路由。由于Openstack网络的特殊性,物理网络的重定向设计不适合Openstack的网络模式。
文中采用重定向器作为中间设备,桥接业务系统租户命名空间router和蜜场网络租户命名空间router,进行重定向以及相关的路由。当一个新的租户网络被创建时,Openstack在该租户网络所在neutron节点上,创建相应命名空间的router,同时会新建一个redirect桥接到该新建租户的router和蜜场租户的router上。redirect会对不同类型的数据包进行相关修改,不同租户命名空间的router负责相关数据包的路由,具体流程如图2所示。
图2 网络流量重定向系统
1.当外部流量进来之后会到达业务系统租户(service_tenant)命名空间下的service_router,service_router会将所有流量都转发到redirect上;
2.redirect根据流量分类进行相关操作,如果是非业务流量直接DNAT发给honeyfarm_router;如果是针对业务系统的攻击流量会进行DNAT发给honeyfarm_router;如果是业务系统的正常流量,会直接转发给service_router,不做任何操作;
3.同时redirect会给非正常业务流量打上相应标记[8],标记该流量是针对Openstack业务系统中的哪台虚拟机的流量。因为VM的UUID可以唯一标识一台虚拟机,所以采用UUID来标识该流量,以便针对业务系统的攻击流量转发到蜜场网关,蜜场网关可以结合这个标记和自身的相关数据库进行转发;
4.所有进入蜜场的流量回包会经过蜜场系统租户(honeyfarm_tenant)命名空间下的honeyfarm_router,该router将流量发给redirect,redirect对流量进行SNAT,发给service_router进行路由;
5.所有正常的业务流量,直接由service_router路由给业务系统,回包也是由service_router进行路由。
利用Openstack中每个租户隔离的特性,将蜜场单独放入一个租户中,使它逻辑上与其他业务系统所在的租户隔离。蜜场系统应该具备数据安全控制的机制、数据捕获机制以及动态部署蜜罐的机制[9]。
当蜜场内的蜜罐机器被黑客攻陷后,为了防止黑客使用这些蜜罐作为跳板向外攻击别的节点,造成二次危害,在蜜场内做安全控制是非常有必要的[10]。蜜场的目的是吸引黑客的攻击,所以进入蜜场的流量是不能限制的,只需要限制出向的流量即可。所有从蜜场中出去的流量都会被认为是与黑客交互的流量,都需要进行限制。一般会将单位时间内出向的流量大小以及出向的连接数限制到一个合理的值。这些参数可以直接在蜜场网关的iptables上进行统一配置,其可以限制多种协议的连接数以及流量大小,比如TCP、UDP、ICMP等。数据控制安全策略的配置文件为rc.firewall,如在rc.firewall设置规则:
##set the connection outbound limits for different protocols
SCALE="day"#记录单位,也可以是秒、分、小时等
TCPRATE="15"#每记时单位中允许的TCP连接数
UDPRATE="20"#每记时单位中允许的UDP连接数
ICMPRATE="50"#每记时单位中允许的ICMP连接数
OTHERRATE="15"#每记时单位中允许的其他IP新协议连接数
STOP_OUT="no"#如果不想允许任何向外连接,可以将这个参数设为"yes"
通过此规则设置,可以较好地限制对外连接数量。
部署蜜场最主要的目的是记录攻击者的相关数据,比如攻击行为、攻击数据包,然后用收集到的这些数据进行分析和反向追踪。所以如何收集这些数据也至关重要。
数据捕获机制是在蜜场网关和蜜罐上捕获数据的。蜜场网关是所有数据出入蜜场的必经之地,所以蜜场网关上捕获的数据是最全面的。在蜜场网关利用iptables可以记录所有经过蜜场网关的连接,同时给不同的流量打上不同的标记,使用tcpdump抓包工具抓取相应标记的数据包,以便后续分类和分析[11]。在蜜罐上通过运行sebek来记录攻击者的攻击行为,比如击键记录、所读取的数据以及运行了哪些程序。
动态部署蜜罐最关键的一点是怎样学习周围的网络环境。传统的方法[12]有两种,方法一是积极主动地进行探测,从而确定周围存在一些什么样的操作系统。然而这种方法存在一些不足。首先,它引入了额外的网络活动,不可避免会影响到网络带宽;其次,为能够了解网络的变化情况,必须持续对网络进行扫描,这可能使得系统中的某些服务甚至整个服务被关闭。方法二是采用被动采集的方法获取周围的网络环境。这种方法基于每种操作系统的IP协议栈不同的特点,缺点在于不能精确判断出网络环境,操作系统众多,有些操作系统仅通过数据包内的某些字段是判断不出来的。而且上述两种方法都是针对物理网络的,对于Openstack这种多租户隔离的网络是不行的。所以采用直接从Openstack虚拟机状态数据库中获取虚拟机镜像信息的方法较为合适。
2.3.1 如何探测网络环境
根据Openstack的特点,它作为一个对虚拟机、虚拟网络等的管理平台,会记录下很多虚拟机相关的数据到数据库中,比如虚拟机的状态信息、创建虚拟机的镜像等。在蜜场网关上监听虚拟机相关操作的nova-api接口,根据不同的调用参数做出相应的操作。如果是新建虚拟机的调用,一旦有新建虚拟机的操作,就会立即根据新建虚拟机使用的镜像,在蜜场中创建相同的操作系统的虚拟机作为honeypot,该honeypot的UUID与业务虚拟机的UUID的对应关系会存到honeypot_vm的数据库中;如果有删除的操作,会立即删除相应的honeypot同时更新honey_vm数据库;如果有关机、挂起或者扫描到vm状态不为运行中,这时会在数据库中给该vm对应的条目设置一个计时器,如果该计时器到期之前vm状态还不是运行中,就会删除该vm对应的honeypot以及数据库条目。同时,蜜场网关会定期对Openstack的虚拟机状态信息数据库进行扫描,如果有些业务虚拟机的UUID在honey_vm的数据库中不存在,就会根据该虚拟机的镜像在honeyfarm中创建相应的蜜罐。这是针对同一时间有大量的虚拟机新建操作,可能无法及时创建相应的蜜罐的问题,采用定期扫描的方法进行补充。
2.3.2 蜜罐系统模板
根据Openstack相关的状态信息去创建honeypot,相对于去探测或者抓取虚拟机发送的数据包判断更为准确快速[13],同时不会占用大量的网络带宽,也不需要耗费抓取数据的资源。但是根据系统镜像创建的honeypot有个缺点,就是其上没有业务服务,不能很好地吸引和留住黑客。所以,采用虚拟机快照的方式去创建honeypot,当虚拟机创建之后定期对虚拟机进行快照,利用快照去创建蜜罐,这样可以复制虚拟机的部分业务服务,使得蜜罐更像真实业务系统,更为真实,提高与黑客的交互度。
将蜜场和Openstack进行有机结合,设置出一个基于虚拟化网络的新型蜜场系统。其中,网络攻击检测系统中的非业务流量监听模块负责监听非业务流量,异常检测模块负责对业务流量进行异常分析;网络流量重定向系统中的重定向模块负责对于非业务流量监听模块监听到的流量和异常检测模块检测出的异常流量进行重定向,将流量重定向到蜜场中进行交互,路由模块负责正常流量和重定向后的攻击流量的路由;蜜场系统中的动态蜜罐部署机制根据业务系统的虚拟机状态动态地配置蜜罐以及根据虚拟机的快照进行蜜罐的创建。基于蜜场的Openstack安全系统设计框架如图3所示。
系统的工作流程如下:网络攻击检测系统进行流量分析,将流量分类;由重定向系统将分类后的流量进行重定向,正常流量路由到业务系统,攻击流量路由到蜜场;蜜场中的蜜罐负责和外部攻击进行交互;根据虚拟机状态和快照,动态地部署蜜罐系统。
在Openstack上部署改进的蜜场环境[14],创建一个小型业务租户与子网作为实验平台。蜜场环境由一个蜜场网关以及蜜罐系统组成;业务子网由重定向和若干业务主机组成,每个业务主机上有若干对外开放的服务,可通过Internet访问。在重定向上允许非业务探测、网络入侵检测、网络流量重定向和日志记录系统,在蜜场网关上启动动态蜜罐部署的服务、Firewall以及流记录器。经过一段时间的运行,各子系统工作正常,实验结果及分析如下:
重定向的网络流正确地到达了蜜场环境。经过对比,在重定向网关的流信息库中,被重定向的流(非业务流量、异常流量)在蜜场网关的流记录中都能找到,反之亦然,说明重定向系统是正常工作的。
蜜场中的蜜罐以及honeypot_vm数据记录均正确。经过对比,在honeypot_vm数据库的记录和相关的蜜罐均能正确匹配,并且蜜罐的系统模板与服务系统的快照一样,说明动态蜜罐部署的机制是正常的。
根据蜜场网关以及蜜罐上监测系统的日志记录得到一些攻击数据。图4展示了24小时内被重定向经过蜜场网关的网络流量统计图,图5是24小时内Openstack虚拟化网络内的各类型网络流量统计对比图。可以看到:有较大比例的网络流量为非业务访问被重定向到蜜场;小部分流量为未知源的攻击流;少部分流量为已知源攻击流,也被重定向到蜜场;还有高度可疑的蜜罐对Internet访问流,说明攻击者对蜜罐攻击成功。
图5 24小时内各类型网络流量统计对比图
系统潜在问题:时间延迟。当未知攻击源实施对业务系统的首次攻击,依次经过异常检测系统检测,重定向和蜜场网关分发流量到蜜罐,这些动作均有短时间延迟。
对面向虚拟化环境的蜜场进行了研究,结合Openstack虚拟网络和Openstack对虚拟机状态的记录,设计出了针对虚拟化环境中的重定向实现机制以及动态蜜罐部署机制。实验结果表明,该新型蜜场系统很好地解决了虚拟化环境的安全问题。下一步的工作将是在蜜场环境中对重定向的攻击流进行取证分析,这涉及到跟踪攻击行为和攻击取证等一系列技术,在这些技术研究的基础上,最终将实现虚拟化环境中基于蜜场的网络主动安全防护系统。