文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2013)04-0133-04
云計(jì)算代表了IT領(lǐng)域向集約化、規(guī)?;c專業(yè)化道路發(fā)展的趨勢(shì),,但它在提高使用效率的同時(shí),為實(shí)現(xiàn)用戶信息資產(chǎn)安全與隱私保護(hù)帶來極大的沖擊與挑戰(zhàn),。2009年11月,,F(xiàn)orrester Research公司的調(diào)查結(jié)果顯示,有51%的中小型企業(yè)認(rèn)為安全性和隱私問題是其尚未使用云服務(wù)的最主要原因,。因此,,云安全問題成為必須解決的問題之一[1]。
平臺(tái)即服務(wù)(PaaS)作為云計(jì)算的一種,,是將基礎(chǔ)設(shè)施平臺(tái)作為一種服務(wù)呈現(xiàn)給用戶的商業(yè)模式,,是一種低成本的方案。
本文首先分析了現(xiàn)有的PaaS平臺(tái)特征及其面臨的安全問題,,然后提出了一個(gè)提供容器安全功能的多層次PaaS平臺(tái)安全解決方案,。
1 相關(guān)工作
目前,針對(duì)云計(jì)算安全問題,,一些學(xué)者和組織給出了相應(yīng)的解決方案,。巴斯塔和哈爾頓提出一種通過盡可能地使用加密協(xié)議來避免IP欺騙的方法。他們提出,為了避免ARP中毒,需要root權(quán)限才能更改ARP表,而且盡量使用靜態(tài)表而非動(dòng)態(tài)ARP表;如果一家要使用ARP表,,至少也要確定變化的ARP表被記錄下來,。拉吉等人提出了資源隔離的方法,通過在處理過程中隔離虛擬機(jī)中處理器的高速緩存并隔離這些虛擬高速緩存的虛擬機(jī)管理程序緩存,,確保數(shù)據(jù)的安全性,。在數(shù)據(jù)管理頂級(jí)會(huì)議SIGMOD 2009上,Wong等[2]提出了一種安全性較高KNN查詢方案,使得惡意的云服務(wù)器無法獲得用戶私有的敏感信息,。Apache自由軟件基金會(huì)基于Google云計(jì)算系統(tǒng)的設(shè)計(jì)思想,實(shí)現(xiàn)了開源的Hadoop項(xiàng)目[3], Hadoop實(shí)現(xiàn)了Google的MapReduce編程模型,提供了簡(jiǎn)單易用的編程接口,,也提供了自己的分布式文件系統(tǒng)HDFS。
2 PaaS平臺(tái)的安全問題
PaaS平臺(tái)分為兩類,,一類是應(yīng)用部署和運(yùn)行平臺(tái)APaaS(Application- Platform-as-a-Service),另一類是集成平臺(tái)IPaaS(Integration-Platform-as-a-Service),。在多租戶APaaS中,云平臺(tái)主要面臨三個(gè)方面的安全威脅:容器內(nèi)部應(yīng)用共享資源引起的安全問題,、容器自身安全問題及容器在網(wǎng)絡(luò)層的安全問題。
2.1 容器內(nèi)部應(yīng)用共享資源引起的安全問題
林兆驥等人在《云計(jì)算安全關(guān)鍵問題研究》中提到[4],,在多租戶APaaS中,,應(yīng)用面臨著一些安全隔離問題。
2.2 容器自身安全問題
在2009年,,Google,、Microsoft、Amazon等公司的云計(jì)算服務(wù)均出現(xiàn)了重大故障,,有些是由于容器自身引起的安全問題,。云平臺(tái)中,惡意應(yīng)用通過獲取容器的特征信息(如類型,、版本信息等),,針對(duì)容器本身進(jìn)行攻擊,將造成安全問題,。以目前主流的Tomcat為例,,其面臨的安全問題如下:
(1) 掃描威脅
由于Tomcat默認(rèn)通過8080端口對(duì)外提供Web服務(wù)。通過掃描網(wǎng)絡(luò)中開啟了8080端口的主機(jī),,并利用掃描工具,,攻擊者不但能夠獲得開啟了8080端口的Tomcat服務(wù)器的IP地址,還可以掃描自動(dòng)破解弱口令,。
(2) 登錄后臺(tái)威脅
通過掃描獲得IP和弱口令后,,攻擊者就可以通過默認(rèn)的admin用戶登錄后臺(tái)。在Tomcat的后臺(tái)可以看到站點(diǎn)的所有目錄和文件,,并且對(duì)目錄實(shí)施“開啟”,、“停止”、“重啟”、“卸除”等操作,。對(duì)于攻擊者來說,,不僅可以通過停止或卸除操作影響當(dāng)前容器內(nèi)應(yīng)用的正常運(yùn)行,更可以通過把jsp網(wǎng)馬打包生成war包,,上傳后在容器內(nèi)運(yùn)行該網(wǎng)馬,。
(3) Webshell威脅
通過后臺(tái)上傳用war打包的網(wǎng)馬后,在Tomcat站點(diǎn)下生成與上傳文件同名的目錄,。點(diǎn)擊該目錄,,可以看見jsp網(wǎng)馬,在瀏覽器中輸入該網(wǎng)馬的URL地址,,可獲得一個(gè)Webshell,。攻擊者可以通過Webshell對(duì)系統(tǒng)進(jìn)行提權(quán)、滲透,,進(jìn)而獲得整個(gè)服務(wù)器的控制權(quán),。
2.3 容器網(wǎng)絡(luò)層的安全問題
互聯(lián)網(wǎng)是云計(jì)算的基礎(chǔ),所以PaaS平臺(tái)運(yùn)行托管環(huán)境中實(shí)現(xiàn)安全容器,,需要考慮容器在網(wǎng)絡(luò)層的幾個(gè)安全問題:
(1) DDoS攻擊
DDoS攻擊即通過向服務(wù)器提交大量請(qǐng)求使服務(wù)器超負(fù)荷,,從而阻斷用戶訪問服務(wù)器,阻斷某服務(wù)與特定系統(tǒng)或個(gè)人的通信,。DDoS攻擊帶來兩方面的安全威脅:阻斷VM正常的網(wǎng)絡(luò)通信,,使其無法響應(yīng)用戶請(qǐng)求;向某一Web Container提交大量請(qǐng)求,,影響Container內(nèi)應(yīng)用的正常運(yùn)行,。亞馬遜采取保持內(nèi)部帶寬超過互聯(lián)網(wǎng)給予帶寬的方式來減少潛在的DDoS攻擊[5]。
(2) IP欺騙
SUBASHINI S等人在參考文獻(xiàn)[5]中提到IP欺騙在網(wǎng)絡(luò)安全方面給了攻擊者可乘之機(jī),。IP欺騙是指一臺(tái)主機(jī)通過冒充另外一臺(tái)主機(jī)的IP地址與其他設(shè)備通信,,從而達(dá)到某種目的。
(3) 端口掃描
在PaaS平臺(tái)中,,通過端口掃描獲得某主機(jī)上提供的網(wǎng)絡(luò)服務(wù),并搜集到很多關(guān)于目標(biāo)主機(jī)有用的信息,,例如是否能夠匿名登陸、是否有可寫的FTP目標(biāo),、是否能用Telnet等,。
3 PaaS平臺(tái)安全的解決方案
圖1顯示了云計(jì)算環(huán)境下的容器及其關(guān)系。為解決PaaS云平臺(tái)面臨的安全問題,,本文將PaaS平臺(tái)安全容器進(jìn)行分層來提供安全,,三個(gè)層次分別為容器內(nèi)部應(yīng)用安全、容器自身安全及容器外部入侵防御安全,。
3.1 容器內(nèi)部的應(yīng)用安全
在多租戶PaaS模式中,,最核心的安全原則就是多租戶應(yīng)用隔離。為了實(shí)現(xiàn)多租戶應(yīng)用隔離,云提供商必須提供“沙盒”架構(gòu),,通過平臺(tái)的“沙盒”性實(shí)現(xiàn)集中維護(hù)客戶部署在PaaS平臺(tái)上應(yīng)用的保密性和完整性,。為此,云提供商一般通過為每一個(gè)用戶應(yīng)用提供一個(gè)Servlet容器的方法來實(shí)現(xiàn)邏輯上的隔離,。
現(xiàn)有解決方案能有效提供平臺(tái)的“沙盒”架構(gòu),,實(shí)現(xiàn)多租戶應(yīng)用隔離。但同時(shí),,多租戶模式下運(yùn)行多個(gè)Servlet容器的模式會(huì)帶來較大的系統(tǒng)開銷,。本文在現(xiàn)有解決方案的基礎(chǔ)上,提出了一種由一個(gè)Servlet容器承載不同應(yīng)用的解決方案,,在實(shí)現(xiàn)多租戶應(yīng)用隔離的同時(shí)保證系統(tǒng)性能,。
本文提出的PaaS平臺(tái)安全容器,就是利用Java技術(shù)提供的安全性,,并在此基礎(chǔ)上結(jié)合托管PaaS平臺(tái)特點(diǎn)進(jìn)行定制而實(shí)現(xiàn)的,。
3.1.1 Java安全體系結(jié)構(gòu)
Java技術(shù)從多個(gè)方面提供了對(duì)安全性的支持:Java語言本身安全性、虛擬機(jī)的雙親委托類加載機(jī)制,、安全管理器和Java API,。這些共同構(gòu)成了Java安全體系結(jié)構(gòu),即沙盒模型,,是一個(gè)支持靈活的細(xì)粒度訪問控制的安全策略,并且具有可擴(kuò)充性和伸縮性的安全體系結(jié)構(gòu)。
Java沙盒采用了靈活的保護(hù)域安全模型,,由安全策略來決定代碼具有的訪問許可,,對(duì)被保護(hù)資源的訪問會(huì)激發(fā)安全檢查,這些檢查會(huì)將授權(quán)的許可和其試圖訪問所需要的權(quán)限進(jìn)行比較,。這些激發(fā)安全檢查的訪問包括文件系統(tǒng)訪問,、JNI訪問本地代碼、創(chuàng)建Socket連接等,。
3.1.2 基于Java安全體系結(jié)構(gòu)的托管PaaS安全容器
利用Java沙盒模型提供的訪問控制功能,,可以將同一JVM中運(yùn)行的代碼邏輯上分開,分別運(yùn)行于不同的沙盒中。在本研究中,,托管PaaS平臺(tái)安全容器,,利用Java沙盒模型,使不同的應(yīng)用運(yùn)行于不同的沙盒中,,實(shí)現(xiàn)應(yīng)用隔離功能,。
本研究中,針對(duì)托管PaaS平臺(tái)及Jetty和用戶應(yīng)用的特點(diǎn),在Java沙盒模型的基礎(chǔ)上進(jìn)行了擴(kuò)展,,其體系結(jié)構(gòu)如圖2所示,。
在托管PaaS平臺(tái)運(yùn)行環(huán)境中,安全容器提供應(yīng)用運(yùn)行的受限的環(huán)境,即沙盒環(huán)境,。沙盒環(huán)境實(shí)現(xiàn)應(yīng)用運(yùn)行時(shí)5個(gè)方面的訪問控制:文件訪問控制,、網(wǎng)絡(luò)訪問控制、多線程控制,、JNI訪問控制及System.exit()方法訪問控制,。如圖2所示,在托管PaaS平臺(tái)運(yùn)行環(huán)境中,,安全容器在Java安全體系結(jié)構(gòu)基礎(chǔ)上進(jìn)行擴(kuò)展,,實(shí)現(xiàn)了兩套邏輯沙盒模型,在邏輯上將系統(tǒng)代碼和應(yīng)用代碼分開處理,,簡(jiǎn)化了安全策略文件的配置,,提高了系統(tǒng)性能。
在托管PaaS平臺(tái)運(yùn)行環(huán)境中,,兩套邏輯沙盒模型(默認(rèn)沙盒和應(yīng)用沙盒)分別提供系統(tǒng)代碼和應(yīng)用代碼的運(yùn)行環(huán)境,,并實(shí)現(xiàn)訪問控制。托管PaaS平臺(tái)運(yùn)行環(huán)境安全模型主要通過保護(hù)域模塊,、類加載模塊,、安全策略模塊和訪問控制模塊來實(shí)現(xiàn)。
在PaaS系統(tǒng)中,,保護(hù)域模塊由系統(tǒng)保護(hù)域和應(yīng)用保護(hù)域組成,。系統(tǒng)保護(hù)域使用Java安全體系結(jié)構(gòu)中默認(rèn)的域模型,即通過代碼位置及簽名指定保護(hù)域,。應(yīng)用保護(hù)域由每個(gè)應(yīng)用的AppContext來指定,,邏輯上與一個(gè)Web應(yīng)用相對(duì)應(yīng)。在類加載模塊中實(shí)現(xiàn)了系統(tǒng)類(Jetty代碼和服務(wù)端代碼)和應(yīng)用類兩套類加載策略,,分別由系統(tǒng)類加載器和WebApp類加載器加載,。在安全策略模塊中,默認(rèn)沙盒采用Java安全體系結(jié)構(gòu)默認(rèn)的安全策略文件來實(shí)現(xiàn)安全策略,。默認(rèn)安全策略指定了PaaS系統(tǒng)中應(yīng)用的默認(rèn)權(quán)限,,由WebApp ClassLoader加載應(yīng)用類型時(shí),創(chuàng)建相應(yīng)App實(shí)例,,同時(shí)初始化該App的權(quán)限集合Permissions,。對(duì)于訪問控制模塊,按照兩套邏輯分別進(jìn)行權(quán)限檢查,。同時(shí)出于安全考慮,設(shè)計(jì)了WebApp SecurityManager,。當(dāng)代碼請(qǐng)求訪問被保護(hù)資源時(shí),WebApp SecurityManager判斷當(dāng)前請(qǐng)求是否來自應(yīng)用,,繼而觸發(fā)相應(yīng)的訪問控制邏輯或是將請(qǐng)求委托給父類安全管理器,。
3.2 容器自身安全
目前主流的Servlet容器有Tomcat,、jetty、jboss等,,這些容器都存在自身的弱點(diǎn),,為預(yù)防攻擊者針對(duì)容器進(jìn)行攻擊,在PaaS云平臺(tái)中應(yīng)該隱藏容器信息,,包括容器類型,、版本信息等。
目前獲取容器特征信息的方式主要有以下三種:
(1)通過容器提供的API獲取,,對(duì)于實(shí)現(xiàn)sun的Servlet2.3以上的Servlet提供以下方法支持,,通過GenericServlet類的getServletContext()獲取ServletContext,再由ServletContext.getServerInfo()方法獲取服務(wù)器類型,;
(2) 通過工具類提供的API獲取,,Liferay里面提供了一個(gè)方法來判斷不同的應(yīng)用服務(wù)器;
(3) 惡意應(yīng)用通過執(zhí)行非法操作拋出異常,通過捕捉異常信息追蹤調(diào)用堆棧,也可分析獲取容器類型信息,。
針對(duì)上述3種獲取容器特征信息的方法,,本文將從兩個(gè)方面來實(shí)現(xiàn)PaaS平臺(tái)容器的信息隱藏。圖3顯示了容器信息隱藏的過程: (1)應(yīng)用運(yùn)行依賴的jar包,、容器本身的靜態(tài)信息和動(dòng)態(tài)信息等由安全容器來集中管理,; (2)安全容器的Connector模塊負(fù)責(zé)處理用戶請(qǐng)求并返回應(yīng)用運(yùn)行結(jié)果,在所有運(yùn)行結(jié)果返回給用戶之前進(jìn)行檢測(cè),,所有可能暴露容器特征信息的異常信息通過包裝之后由過濾模塊進(jìn)行決策再將相應(yīng)結(jié)果返回給用戶,。
如圖4所示,當(dāng)外部入侵者通過多種方式盜取容器信息時(shí),,容器過濾模塊中的攔截模塊和欺騙模塊都將做出防御行為,。攔截模塊指依據(jù)策略攔截入侵者的請(qǐng)求;行為模塊包括允許,、不允許、過濾部分請(qǐng)求,、欺騙用戶等行為,;決策模塊具有智能算法,它依托于策略服務(wù)器作為其策略庫(kù),,以此給出合適的處理方式,。對(duì)于決策模塊時(shí),本解決方案為各種決策算法設(shè)計(jì)了公共的可用接口,,神經(jīng)網(wǎng)絡(luò),、決策樹等決策算法均可以插件的形式應(yīng)用到該模塊中。欺騙模塊指對(duì)入侵者發(fā)送假消息來誤導(dǎo)入侵者,,從而保護(hù)容器自身的信息不泄露,。當(dāng)容器過濾模塊收到用戶請(qǐng)求時(shí),,由決策模塊調(diào)用策略服務(wù)器來決定處理方式,若需要欺騙用戶來保證容器安全則會(huì)調(diào)用欺騙模塊,。最后由行為模塊來執(zhí)行動(dòng)作,。
3.3 容器外部的入侵防御安全
互聯(lián)網(wǎng)是云計(jì)算的基礎(chǔ),所以PaaS平臺(tái)運(yùn)行托管環(huán)境中實(shí)現(xiàn)安全容器,,需要考慮容器在網(wǎng)絡(luò)層的安全問題,,包括避免容器受到DDoS攻擊、防止外部對(duì)容器的嗅探等,。如圖5所示,,本文針對(duì)以上情況給出了PaaS平臺(tái)的安全解決方案。
3.3.1 DDoS攻擊防御
單一的DoS攻擊一般采用一對(duì)一方式,,當(dāng)攻擊目標(biāo)各項(xiàng)性能指標(biāo)不高時(shí)(CPU速度低,、內(nèi)存小或者網(wǎng)絡(luò)帶寬小等),它的效果是非常明顯的。分布式拒絕服務(wù)DDoS(Distributed Denial of Service)攻擊逐漸出現(xiàn),。處于不同位置的多個(gè)攻擊者同時(shí)向一個(gè)或多個(gè)目標(biāo)發(fā)起協(xié)同的拒絕服務(wù)攻擊,,或者一個(gè)或多個(gè)攻擊者控制了位于不同位置的多臺(tái)機(jī)器并利用這些機(jī)器對(duì)受害者同時(shí)實(shí)施攻擊。
本文提出的多層次解決方案采取了3種措施來防御DDoS攻擊:
(1) 提出網(wǎng)絡(luò)節(jié)流和服務(wù)器均衡算法
在圖5所示的云平臺(tái)子系統(tǒng)中,,采用了負(fù)載均衡的算法,。該算法由負(fù)載監(jiān)控、負(fù)載調(diào)整和負(fù)載策略控制器3個(gè)子模塊共同協(xié)作完成,。
(2) 提出報(bào)文過濾算法
在圖5所示的云平臺(tái)接入子系統(tǒng)中,,反DDoS模塊采用了報(bào)文過濾算法。具體來說,,采用了入口報(bào)文過濾和路由報(bào)文過濾兩種算法,。入口報(bào)文過濾[4](Ingress Filtering)是一種對(duì)付匿名攻擊的方,可以過濾掉偽造源IP地址的數(shù)據(jù)包,。本文將這種機(jī)制配置在路由器的入口,,通過網(wǎng)絡(luò)提供者利用路由器將來源地址不屬于該客戶區(qū)域的數(shù)據(jù)包過濾掉。
(3) 為云平臺(tái)安裝防火墻
在反DDoS模塊中,,系統(tǒng)采用的另一方法是在PaaS云平臺(tái)中加裝防火墻系統(tǒng),,使得無論是進(jìn)入還是送出防火墻的數(shù)據(jù)都經(jīng)過嚴(yán)格過濾。同時(shí),,在防火墻中關(guān)掉未使用的端口號(hào),,從而防止容器從外部被入侵。
3.3.2 預(yù)防網(wǎng)絡(luò)監(jiān)聽與端口掃描
近年來,,網(wǎng)絡(luò)監(jiān)聽和端口掃描一直是計(jì)算機(jī)網(wǎng)絡(luò)安全的敏感話題,,它能造成極大的危害。網(wǎng)絡(luò)監(jiān)聽是指將網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)捕獲并進(jìn)行分析的行為,。端口掃描是一種非常重要的預(yù)攻擊探測(cè)手段,。通過端口掃描可以知道目標(biāo)主機(jī)上開放了哪些端口,、運(yùn)行了哪些服務(wù),這些都是入侵系統(tǒng)的可能途徑[6],。
在多層次的云平臺(tái)解決方案中,,由反監(jiān)聽掃描模塊來預(yù)防網(wǎng)絡(luò)監(jiān)聽和端口掃描。它采取了3種方法來預(yù)防網(wǎng)絡(luò)監(jiān)聽與端口掃描:
(1) 在解決方案中利用SATAN等工具分析網(wǎng)絡(luò),,從而識(shí)別出一些與網(wǎng)絡(luò)相關(guān)的安全問題,;
(2) 在PaaS平臺(tái)上通過防火墻技術(shù)監(jiān)聽、限制以及更改跨越防火墻的數(shù)據(jù)流,,盡可能地對(duì)外部網(wǎng)絡(luò)屏蔽有關(guān)被保護(hù)網(wǎng)絡(luò)的信息,、結(jié)構(gòu),實(shí)現(xiàn)網(wǎng)絡(luò)的安全保護(hù),;
(3) 在PaaS平臺(tái)中對(duì)傳輸?shù)男畔⑦M(jìn)行加密,。使用手段使監(jiān)聽者不能有效地獲得要監(jiān)聽的信息,使得即使監(jiān)聽者可以得到所有的網(wǎng)絡(luò)通信包,,仍然不能獲得有用的信息,。
本論文研究了PaaS云平臺(tái)所面臨的一些安全問題,并從容器內(nèi)部應(yīng)用安全,、容器自身安全,、容器外部的入侵防御安全三個(gè)方面給出了多層次的解決方案。促進(jìn)了云計(jì)算的推廣和應(yīng)用,。
參考文獻(xiàn)
[1] NORT H S. 網(wǎng)絡(luò)入侵檢測(cè)分析員手冊(cè)[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ì)算安全關(guān)鍵問題研究[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] 唐曉明,梁錦華.網(wǎng)絡(luò)端口掃描及其防御技術(shù)研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2002,23(9):15-17.