文献标识码:A
文章编号: 0258-7998(2013)04-0133-04
云计算代表了IT领域向集约化、规模化与专业化道路发展的趋势,但它在提高使用效率的同时,为实现用户信息资产安全与隐私保护带来极大的冲击与挑战。2009年11月,Forrester Research公司的调查结果显示,有51%的中小型企业认为安全性和隐私问题是其尚未使用云服务的最主要原因。因此,云安全问题成为必须解决的问题之一[1]。
平台即服务(PaaS)作为云计算的一种,是将基础设施平台作为一种服务呈现给用户的商业模式,是一种低成本的方案。
本文首先分析了现有的PaaS平台特征及其面临的安全问题,然后提出了一个提供容器安全功能的多层次PaaS平台安全解决方案。
1 相关工作
目前,针对云计算安全问题,一些学者和组织给出了相应的解决方案。巴斯塔和哈尔顿提出一种通过尽可能地使用加密协议来避免IP欺骗的方法。他们提出,为了避免ARP中毒,需要root权限才能更改ARP表,而且尽量使用静态表而非动态ARP表;如果一家要使用ARP表,至少也要确定变化的ARP表被记录下来。拉吉等人提出了资源隔离的方法,通过在处理过程中隔离虚拟机中处理器的高速缓存并隔离这些虚拟高速缓存的虚拟机管理程序缓存,确保数据的安全性。在数据管理顶级会议SIGMOD 2009上,Wong等[2]提出了一种安全性较高KNN查询方案,使得恶意的云服务器无法获得用户私有的敏感信息。Apache自由软件基金会基于Google云计算系统的设计思想,实现了开源的Hadoop项目[3], Hadoop实现了Google的MapReduce编程模型,提供了简单易用的编程接口,也提供了自己的分布式文件系统HDFS。
2 PaaS平台的安全问题
PaaS平台分为两类,一类是应用部署和运行平台APaaS(Application- Platform-as-a-Service),另一类是集成平台IPaaS(Integration-Platform-as-a-Service)。在多租户APaaS中,云平台主要面临三个方面的安全威胁:容器内部应用共享资源引起的安全问题、容器自身安全问题及容器在网络层的安全问题。
2.1 容器内部应用共享资源引起的安全问题
林兆骥等人在《云计算安全关键问题研究》中提到[4],在多租户APaaS中,应用面临着一些安全隔离问题。
2.2 容器自身安全问题
在2009年,Google、Microsoft、Amazon等公司的云计算服务均出现了重大故障,有些是由于容器自身引起的安全问题。云平台中,恶意应用通过获取容器的特征信息(如类型、版本信息等),针对容器本身进行攻击,将造成安全问题。以目前主流的Tomcat为例,其面临的安全问题如下:
(1) 扫描威胁
由于Tomcat默认通过8080端口对外提供Web服务。通过扫描网络中开启了8080端口的主机,并利用扫描工具,攻击者不但能够获得开启了8080端口的Tomcat服务器的IP地址,还可以扫描自动破解弱口令。
(2) 登录后台威胁
通过扫描获得IP和弱口令后,攻击者就可以通过默认的admin用户登录后台。在Tomcat的后台可以看到站点的所有目录和文件,并且对目录实施“开启”、“停止”、“重启”、“卸除”等操作。对于攻击者来说,不仅可以通过停止或卸除操作影响当前容器内应用的正常运行,更可以通过把jsp网马打包生成war包,上传后在容器内运行该网马。
(3) Webshell威胁
通过后台上传用war打包的网马后,在Tomcat站点下生成与上传文件同名的目录。点击该目录,可以看见jsp网马,在浏览器中输入该网马的URL地址,可获得一个Webshell。攻击者可以通过Webshell对系统进行提权、渗透,进而获得整个服务器的控制权。
2.3 容器网络层的安全问题
互联网是云计算的基础,所以PaaS平台运行托管环境中实现安全容器,需要考虑容器在网络层的几个安全问题:
(1) DDoS攻击
DDoS攻击即通过向服务器提交大量请求使服务器超负荷,从而阻断用户访问服务器,阻断某服务与特定系统或个人的通信。DDoS攻击带来两方面的安全威胁:阻断VM正常的网络通信,使其无法响应用户请求;向某一Web Container提交大量请求,影响Container内应用的正常运行。亚马逊采取保持内部带宽超过互联网给予带宽的方式来减少潜在的DDoS攻击[5]。
(2) IP欺骗
SUBASHINI S等人在参考文献[5]中提到IP欺骗在网络安全方面给了攻击者可乘之机。IP欺骗是指一台主机通过冒充另外一台主机的IP地址与其他设备通信,从而达到某种目的。
(3) 端口扫描
在PaaS平台中,通过端口扫描获得某主机上提供的网络服务,并搜集到很多关于目标主机有用的信息,例如是否能够匿名登陆、是否有可写的FTP目标、是否能用Telnet等。
3 PaaS平台安全的解决方案
图1显示了云计算环境下的容器及其关系。为解决PaaS云平台面临的安全问题,本文将PaaS平台安全容器进行分层来提供安全,三个层次分别为容器内部应用安全、容器自身安全及容器外部入侵防御安全。
3.1 容器内部的应用安全
在多租户PaaS模式中,最核心的安全原则就是多租户应用隔离。为了实现多租户应用隔离,云提供商必须提供“沙盒”架构,通过平台的“沙盒”性实现集中维护客户部署在PaaS平台上应用的保密性和完整性。为此,云提供商一般通过为每一个用户应用提供一个Servlet容器的方法来实现逻辑上的隔离。
现有解决方案能有效提供平台的“沙盒”架构,实现多租户应用隔离。但同时,多租户模式下运行多个Servlet容器的模式会带来较大的系统开销。本文在现有解决方案的基础上,提出了一种由一个Servlet容器承载不同应用的解决方案,在实现多租户应用隔离的同时保证系统性能。
本文提出的PaaS平台安全容器,就是利用Java技术提供的安全性,并在此基础上结合托管PaaS平台特点进行定制而实现的。
3.1.1 Java安全体系结构
Java技术从多个方面提供了对安全性的支持:Java语言本身安全性、虚拟机的双亲委托类加载机制、安全管理器和Java API。这些共同构成了Java安全体系结构,即沙盒模型,是一个支持灵活的细粒度访问控制的安全策略,并且具有可扩充性和伸缩性的安全体系结构。
Java沙盒采用了灵活的保护域安全模型,由安全策略来决定代码具有的访问许可,对被保护资源的访问会激发安全检查,这些检查会将授权的许可和其试图访问所需要的权限进行比较。这些激发安全检查的访问包括文件系统访问、JNI访问本地代码、创建Socket连接等。
3.1.2 基于Java安全体系结构的托管PaaS安全容器
利用Java沙盒模型提供的访问控制功能,可以将同一JVM中运行的代码逻辑上分开,分别运行于不同的沙盒中。在本研究中,托管PaaS平台安全容器,利用Java沙盒模型,使不同的应用运行于不同的沙盒中,实现应用隔离功能。
本研究中,针对托管PaaS平台及Jetty和用户应用的特点,在Java沙盒模型的基础上进行了扩展,其体系结构如图2所示。
在托管PaaS平台运行环境中,安全容器提供应用运行的受限的环境,即沙盒环境。沙盒环境实现应用运行时5个方面的访问控制:文件访问控制、网络访问控制、多线程控制、JNI访问控制及System.exit()方法访问控制。如图2所示,在托管PaaS平台运行环境中,安全容器在Java安全体系结构基础上进行扩展,实现了两套逻辑沙盒模型,在逻辑上将系统代码和应用代码分开处理,简化了安全策略文件的配置,提高了系统性能。
在托管PaaS平台运行环境中,两套逻辑沙盒模型(默认沙盒和应用沙盒)分别提供系统代码和应用代码的运行环境,并实现访问控制。托管PaaS平台运行环境安全模型主要通过保护域模块、类加载模块、安全策略模块和访问控制模块来实现。
在PaaS系统中,保护域模块由系统保护域和应用保护域组成。系统保护域使用Java安全体系结构中默认的域模型,即通过代码位置及签名指定保护域。应用保护域由每个应用的AppContext来指定,逻辑上与一个Web应用相对应。在类加载模块中实现了系统类(Jetty代码和服务端代码)和应用类两套类加载策略,分别由系统类加载器和WebApp类加载器加载。在安全策略模块中,默认沙盒采用Java安全体系结构默认的安全策略文件来实现安全策略。默认安全策略指定了PaaS系统中应用的默认权限,由WebApp ClassLoader加载应用类型时,创建相应App实例,同时初始化该App的权限集合Permissions。对于访问控制模块,按照两套逻辑分别进行权限检查。同时出于安全考虑,设计了WebApp SecurityManager。当代码请求访问被保护资源时,WebApp SecurityManager判断当前请求是否来自应用,继而触发相应的访问控制逻辑或是将请求委托给父类安全管理器。
3.2 容器自身安全
目前主流的Servlet容器有Tomcat、jetty、jboss等,这些容器都存在自身的弱点,为预防攻击者针对容器进行攻击,在PaaS云平台中应该隐藏容器信息,包括容器类型、版本信息等。
目前获取容器特征信息的方式主要有以下三种:
(1)通过容器提供的API获取,对于实现sun的Servlet2.3以上的Servlet提供以下方法支持,通过GenericServlet类的getServletContext()获取ServletContext,再由ServletContext.getServerInfo()方法获取服务器类型;
(2) 通过工具类提供的API获取,Liferay里面提供了一个方法来判断不同的应用服务器;
(3) 恶意应用通过执行非法操作抛出异常,通过捕捉异常信息追踪调用堆栈,也可分析获取容器类型信息。
针对上述3种获取容器特征信息的方法,本文将从两个方面来实现PaaS平台容器的信息隐藏。图3显示了容器信息隐藏的过程: (1)应用运行依赖的jar包、容器本身的静态信息和动态信息等由安全容器来集中管理; (2)安全容器的Connector模块负责处理用户请求并返回应用运行结果,在所有运行结果返回给用户之前进行检测,所有可能暴露容器特征信息的异常信息通过包装之后由过滤模块进行决策再将相应结果返回给用户。
如图4所示,当外部入侵者通过多种方式盗取容器信息时,容器过滤模块中的拦截模块和欺骗模块都将做出防御行为。拦截模块指依据策略拦截入侵者的请求;行为模块包括允许、不允许、过滤部分请求、欺骗用户等行为;决策模块具有智能算法,它依托于策略服务器作为其策略库,以此给出合适的处理方式。对于决策模块时,本解决方案为各种决策算法设计了公共的可用接口,神经网络、决策树等决策算法均可以插件的形式应用到该模块中。欺骗模块指对入侵者发送假消息来误导入侵者,从而保护容器自身的信息不泄露。当容器过滤模块收到用户请求时,由决策模块调用策略服务器来决定处理方式,若需要欺骗用户来保证容器安全则会调用欺骗模块。最后由行为模块来执行动作。
3.3 容器外部的入侵防御安全
互联网是云计算的基础,所以PaaS平台运行托管环境中实现安全容器,需要考虑容器在网络层的安全问题,包括避免容器受到DDoS攻击、防止外部对容器的嗅探等。如图5所示,本文针对以上情况给出了PaaS平台的安全解决方案。
3.3.1 DDoS攻击防御
单一的DoS攻击一般采用一对一方式,当攻击目标各项性能指标不高时(CPU速度低、内存小或者网络带宽小等),它的效果是非常明显的。分布式拒绝服务DDoS(Distributed Denial of Service)攻击逐渐出现。处于不同位置的多个攻击者同时向一个或多个目标发起协同的拒绝服务攻击,或者一个或多个攻击者控制了位于不同位置的多台机器并利用这些机器对受害者同时实施攻击。
本文提出的多层次解决方案采取了3种措施来防御DDoS攻击:
(1) 提出网络节流和服务器均衡算法
在图5所示的云平台子系统中,采用了负载均衡的算法。该算法由负载监控、负载调整和负载策略控制器3个子模块共同协作完成。
(2) 提出报文过滤算法
在图5所示的云平台接入子系统中,反DDoS模块采用了报文过滤算法。具体来说,采用了入口报文过滤和路由报文过滤两种算法。入口报文过滤[4](Ingress Filtering)是一种对付匿名攻击的方,可以过滤掉伪造源IP地址的数据包。本文将这种机制配置在路由器的入口,通过网络提供者利用路由器将来源地址不属于该客户区域的数据包过滤掉。
(3) 为云平台安装防火墙
在反DDoS模块中,系统采用的另一方法是在PaaS云平台中加装防火墙系统,使得无论是进入还是送出防火墙的数据都经过严格过滤。同时,在防火墙中关掉未使用的端口号,从而防止容器从外部被入侵。
3.3.2 预防网络监听与端口扫描
近年来,网络监听和端口扫描一直是计算机网络安全的敏感话题,它能造成极大的危害。网络监听是指将网络上传输的数据捕获并进行分析的行为。端口扫描是一种非常重要的预攻击探测手段。通过端口扫描可以知道目标主机上开放了哪些端口、运行了哪些服务,这些都是入侵系统的可能途径[6]。
在多层次的云平台解决方案中,由反监听扫描模块来预防网络监听和端口扫描。它采取了3种方法来预防网络监听与端口扫描:
(1) 在解决方案中利用SATAN等工具分析网络,从而识别出一些与网络相关的安全问题;
(2) 在PaaS平台上通过防火墙技术监听、限制以及更改跨越防火墙的数据流,尽可能地对外部网络屏蔽有关被保护网络的信息、结构,实现网络的安全保护;
(3) 在PaaS平台中对传输的信息进行加密。使用手段使监听者不能有效地获得要监听的信息,使得即使监听者可以得到所有的网络通信包,仍然不能获得有用的信息。
本论文研究了PaaS云平台所面临的一些安全问题,并从容器内部应用安全、容器自身安全、容器外部的入侵防御安全三个方面给出了多层次的解决方案。促进了云计算的推广和应用。
参考文献
[1] NORT H S. 网络入侵检测分析员手册[M].北京:人民邮电出版社,2000.
[2] WONG W K, CHEUNG D W, KAO B. Secure kNN computation on encrypted databases[J]. ACM SIGMOD International Conference on Management of Data.2009:139-152.
[3] Apache. Hadoop[EB/OL].[2012-05-12].http://hadoop.apache.org/.
[4] 林兆骥.云计算安全关键问题研究[J].信息化研究,2011,37(2):1-4.
[5] SUBASHINI S, KAVITHA V. A survey on security issues in service delivery models of cloud computing[C]. India: Anna University Tirunelveli.2007.
[6] 唐晓明,梁锦华.网络端口扫描及其防御技术研究[J].计算机工程与设计,2002,23(9):15-17.