陳 剛,郭玉東,魏小鋒
(1.信息工程大學(xué),鄭州 450001; 2.數(shù)學(xué)工程與先進(jìn)計(jì)算國(guó)家重點(diǎn)實(shí)驗(yàn)室,鄭州 450001)
基于Linux名字空間的Web服務(wù)器動(dòng)態(tài)防御方法
陳 剛1,2*,郭玉東1,2,魏小鋒2
(1.信息工程大學(xué),鄭州 450001; 2.數(shù)學(xué)工程與先進(jìn)計(jì)算國(guó)家重點(diǎn)實(shí)驗(yàn)室,鄭州 450001)
Web服務(wù)器廣泛部署在以Docker容器為代表的云計(jì)算平臺(tái)上,面臨著嚴(yán)峻的安全挑戰(zhàn)。為了提高此類Web服務(wù)器的安全防御能力,提出一種基于Linux名字空間的Web服務(wù)器動(dòng)態(tài)防御方法。該方法能夠保證在Web服務(wù)正常工作的前提下,首先使用名字空間構(gòu)建Web服務(wù)器運(yùn)行環(huán)境;其次,通過(guò)多環(huán)境的交替運(yùn)行來(lái)實(shí)現(xiàn)Web服務(wù)器的動(dòng)態(tài)變換以迷惑入侵者,增加入侵者對(duì)Web服務(wù)器的攻擊難度;最后,通過(guò)定期主動(dòng)清除并重建Web服務(wù)器的運(yùn)行環(huán)境來(lái)消除入侵行為對(duì)Web服務(wù)器的影響,最終實(shí)現(xiàn)有效提高Web服務(wù)器的動(dòng)態(tài)防御能力。實(shí)驗(yàn)結(jié)果表明,所提方法能夠有效增強(qiáng)Web服務(wù)器的安全性,同時(shí)對(duì)系統(tǒng)性能影響很小,請(qǐng)求響應(yīng)100 KB數(shù)據(jù)的時(shí)間損耗為0.02~0.07 ms。
容器;Linux名字空間;動(dòng)態(tài)防御;虛擬化
Web服務(wù)器作為信息存儲(chǔ)和發(fā)布的主站點(diǎn),長(zhǎng)期暴露在Internet上,是惡意攻擊者入侵的主要目標(biāo)之一,特別是近年來(lái)越來(lái)越多的企業(yè)和個(gè)人將Web服務(wù)器部署到以Docker容器為代表的云平臺(tái)上[1],Web服務(wù)器面臨著更嚴(yán)峻的安全挑戰(zhàn)。一旦Web服務(wù)器遭受入侵,極有可能出現(xiàn)用戶隱私泄露、網(wǎng)頁(yè)非法外鏈以及Web服務(wù)質(zhì)量下降甚至終止等問(wèn)題[2];進(jìn)一步地,若入侵者控制容器并發(fā)生提權(quán)、逃逸等行為,就會(huì)影響宿主機(jī)及其上的其他容器,造成更大的損失。
傳統(tǒng)Web服務(wù)器保護(hù)機(jī)制包括入侵隔離技術(shù)[3]、入侵檢測(cè)系統(tǒng)(Intrusion Detection System, IDS)[4]和入侵防御系統(tǒng)(Intrusion Prevention System, IPS)[5]等。這些防御機(jī)制依賴安全防御的先驗(yàn)知識(shí),不能防患由未知漏洞產(chǎn)生的安全威脅。為了改變這種防御上的被動(dòng)性,出現(xiàn)了動(dòng)態(tài)彈性防御技術(shù),主要有入侵容忍技術(shù)[6]、移動(dòng)目標(biāo)防御技術(shù)[7-8]和擬態(tài)防御技術(shù)[9]等。其中,自清洗入侵容忍是移動(dòng)目標(biāo)防御的主要技術(shù)之一。Bangalore等[10]通過(guò)不斷變換和清洗Web服務(wù)器來(lái)清除入侵威脅,但該方法依賴傳統(tǒng)虛擬機(jī)的支持,無(wú)法保護(hù)部署在以Docker容器為代表的云平臺(tái)上的Web服務(wù)器的安全;文獻(xiàn)[3]使用AppArmor、SELinux等安全機(jī)制增強(qiáng)容器安全,但其無(wú)法主動(dòng)清除入侵威脅;文獻(xiàn)[8]通過(guò)回滾清除容器安全威脅,但其依賴入侵檢測(cè)機(jī)制支持。針對(duì)這一情況,本文提出一種基于Linux名字空間構(gòu)建Web服務(wù)動(dòng)態(tài)運(yùn)行環(huán)境的動(dòng)態(tài)防御方法,該方法在保證Web服務(wù)正常的前提下,通過(guò)不斷地對(duì)容器進(jìn)行變換和清洗來(lái)迷惑攻擊者,增加入侵者對(duì)Web服務(wù)器的攻擊難度,減小入侵者對(duì)Web服務(wù)器進(jìn)行控制的時(shí)間窗口,從而進(jìn)一步增強(qiáng)Web服務(wù)器的安全性。
本文的主要工作如下:
1) 提出一種基于Linux名字空間構(gòu)建Web服務(wù)動(dòng)態(tài)運(yùn)行環(huán)境的動(dòng)態(tài)防御方法,利用容器的輕量級(jí)、啟動(dòng)速度快的特點(diǎn),在提高資源利用率的同時(shí),增強(qiáng)Web服務(wù)器安全性。
2) 將自清洗入侵容忍和移動(dòng)目標(biāo)防御的思想應(yīng)用于容器,提高了基于容器的云平臺(tái)Web服務(wù)器的安全性。
本文基于Linux仿真平臺(tái)對(duì)所提方法進(jìn)行了仿真實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果表明,該方法能有效增強(qiáng)Web服務(wù)器安全性。
近些年來(lái),Linux名字空間受到了廣泛的關(guān)注和研究,現(xiàn)已形成Mount、UTS、IPC、PID、Net、User、Cgroup共七種名字空間[11-13]。名字空間提供了一種資源虛擬化和隔離方案,使得PID、IPC、Network等系統(tǒng)資源不再是全局的,而是屬于某個(gè)特定的名字空間。如圖1所示,每個(gè)進(jìn)程都與一個(gè)名字空間相關(guān)聯(lián),且只能看到與該名字空間相關(guān)聯(lián)的資源;每個(gè)名字空間下的資源對(duì)其他名字空間而言都是透明的、不可見(jiàn)的。
圖1 Linux名字空間資源隔離示意圖Fig. 1 Schematic diagram of Linux namespace resource isolation
用戶進(jìn)程使用系統(tǒng)調(diào)用函數(shù)clone()、setns()和unshare()來(lái)創(chuàng)建名字空間,其系統(tǒng)調(diào)用參數(shù)、隔離內(nèi)容和所需權(quán)限如表1所示。而容器就是通過(guò)不同的名字空間相互組合使用而構(gòu)建的虛擬執(zhí)行環(huán)境,容器內(nèi)的進(jìn)程直接使用主機(jī)CPU運(yùn)行指令,沒(méi)有解釋、編譯、指令級(jí)模擬或轉(zhuǎn)換等中間環(huán)節(jié),相比其他虛擬化技術(shù),具有更快的執(zhí)行速度和更低的性能損耗[14]。
利用名字空間的資源隔離機(jī)制,本文提出了基于名字空間的Web服務(wù)器動(dòng)態(tài)防御方法。
在目前的計(jì)算機(jī)系統(tǒng)中,Web服務(wù)器從啟動(dòng)到終止要經(jīng)過(guò)創(chuàng)建進(jìn)程、加載程序、初始化、提供服務(wù)、釋放資源、銷毀進(jìn)程等過(guò)程。如圖2所示,由于Web服務(wù)器提供服務(wù)過(guò)程運(yùn)行時(shí)間很長(zhǎng),且主機(jī)IP地址、端口號(hào)、操作系統(tǒng)版本和Web服務(wù)器版本等屬性在運(yùn)行過(guò)程中不再改變,給隱藏在正常訪問(wèn)請(qǐng)求中的攻擊者提供了足夠的時(shí)間來(lái)探測(cè)和發(fā)現(xiàn)系統(tǒng)的構(gòu)造和漏洞,而且一旦攻擊者入侵成功,在很長(zhǎng)的一段時(shí)間內(nèi)都很難發(fā)現(xiàn)和消除。
針對(duì)上述Web服務(wù)器提供服務(wù)過(guò)程運(yùn)行時(shí)間很長(zhǎng)和相關(guān)屬性不再改變等問(wèn)題,本文提出基于Linux名字空間構(gòu)建Web服務(wù)動(dòng)態(tài)運(yùn)行環(huán)境的防御方法,其基本思想如圖3所示,在保證服務(wù)連續(xù)的情況下,通過(guò)不斷重啟程序來(lái)縮短Web服務(wù)器進(jìn)程的生命周期,減小漏洞被探測(cè)和利用的可能性;更進(jìn)一步地,通過(guò)還原系統(tǒng)來(lái)清除入侵影響?;诿挚臻g的Web服務(wù)器動(dòng)態(tài)防御方法的實(shí)現(xiàn)過(guò)程如圖4所示,首先使用Linux名字空間構(gòu)建一個(gè)純凈的、無(wú)惡意軟件的環(huán)境來(lái)運(yùn)行Web服務(wù)器;當(dāng)Web服務(wù)器運(yùn)行一段時(shí)間后,再次使用Linux名字空間構(gòu)建一個(gè)新的純凈的、無(wú)惡意軟件的環(huán)境來(lái)運(yùn)行Web服務(wù)器,并代替原來(lái)的Web服務(wù)器向用戶提供服務(wù)。原Web服務(wù)器處理完所有剩余請(qǐng)求后結(jié)束運(yùn)行或因超時(shí)終止后進(jìn)入后臺(tái)進(jìn)行清洗,待清洗完成后進(jìn)入候選隊(duì)列,在某個(gè)時(shí)刻會(huì)再次運(yùn)行并為用戶服務(wù)。由于將進(jìn)程包裹在名字空間中,Web服務(wù)器每次啟動(dòng)時(shí)都可以有不同的系統(tǒng)名稱和版本號(hào)等;名字空間內(nèi)的Web服務(wù)器進(jìn)程不能在名字空間之外創(chuàng)建進(jìn)程;當(dāng)名字空間撤銷時(shí),Web服務(wù)器進(jìn)程及其創(chuàng)建的各類子進(jìn)程都會(huì)隨之消失,不會(huì)留下惡意的守護(hù)進(jìn)程,從而保證了Web服務(wù)器及宿主機(jī)的安全。
圖2 Web服務(wù)器服務(wù)過(guò)程Fig. 2 Service process of Web server
圖3 改進(jìn)的Web服務(wù)器服務(wù)過(guò)程Fig. 3 Improved service process of Web server
圖4 基于名字空間的Web服務(wù)器動(dòng)態(tài)防御方法框架Fig. 4 Framework of dynamic defense method for Web server based on namespace
傳統(tǒng)Web服務(wù)器暴露在Internet 的時(shí)間很長(zhǎng),容易遭受惡意攻擊。本文構(gòu)建基于Linux名字空間的Web服務(wù)器運(yùn)行環(huán)境,并通過(guò)運(yùn)行環(huán)境的動(dòng)態(tài)變換來(lái)減少Web服務(wù)器曝光在Internet上的單位時(shí)間,增加攻擊者的攻擊難度,減少入侵帶來(lái)的損失。
然而單純地通過(guò)啟動(dòng)和終止Web服務(wù)器來(lái)實(shí)現(xiàn)動(dòng)態(tài)變換,必然會(huì)出現(xiàn)服務(wù)不連續(xù)的問(wèn)題。為解決以上問(wèn)題,本文主要從Web服務(wù)器運(yùn)行環(huán)境構(gòu)建、Web服務(wù)器數(shù)據(jù)同步和Web服務(wù)器調(diào)度等三個(gè)方面展開(kāi)工作。
在傳統(tǒng)的Web服務(wù)器上,攻擊者入侵成功后通常會(huì)篡改系統(tǒng)關(guān)鍵程序、置留后門,這些惡意行為難以及時(shí)發(fā)現(xiàn)和清除。要解決這個(gè)問(wèn)題,最好的方式是創(chuàng)建一個(gè)Web服務(wù)器鏡像,每次啟動(dòng)時(shí)都加載Web服務(wù)器鏡像的副本來(lái)運(yùn)行。因此,本文首先創(chuàng)建包含Web服務(wù)器及其依賴項(xiàng)的根文件系統(tǒng)鏡像,再使用Linux名字空間來(lái)加載根文件系統(tǒng)鏡像副本,利用名字空間的資源隔離特性來(lái)創(chuàng)建一個(gè)安全的獨(dú)立運(yùn)行環(huán)境。Web服務(wù)器運(yùn)行環(huán)境構(gòu)建過(guò)程具體如下。
1)創(chuàng)建包含Web服務(wù)器及其依賴項(xiàng)的根文件系統(tǒng)鏡像。
本文使用Docker工具來(lái)創(chuàng)建包含Web服務(wù)器及其依賴項(xiàng)的根文件系統(tǒng)鏡像。首先通過(guò)docker build命令下載原始文件系統(tǒng)鏡像;之后通過(guò)docker run命令進(jìn)入容器系統(tǒng),并通過(guò)相應(yīng)系統(tǒng)的程序管理工具下載、編譯和安裝Web服務(wù)器及其依賴項(xiàng);最后通過(guò)docker save命令將容器導(dǎo)出為新的根文件系統(tǒng)鏡像。
在創(chuàng)建鏡像過(guò)程中,本文遵循了設(shè)計(jì)多樣性原則,使用了Debian 8、Centos 7、Ubuntu 14.04等不同類型和版本的操作系統(tǒng),并在其上安裝了不同版本的Web服務(wù)器和網(wǎng)頁(yè)腳本語(yǔ)言解釋器,其目的是增加攻擊者對(duì)Web服務(wù)器進(jìn)行探測(cè)和攻擊的難度,從而降低攻擊成功的概率。
2)使用Linux名字空間封裝Web服務(wù)器運(yùn)行環(huán)境。
使用Linux名字空間封裝Web服務(wù)器運(yùn)行環(huán)境(即容器)的過(guò)程如圖5所示,其具體實(shí)現(xiàn)步驟如下。
圖5 使用名字空間封裝Web服務(wù)器運(yùn)行環(huán)境過(guò)程Fig. 5 Process of packaging Web server running environment by using namespace
① 使用unshare函數(shù)將用戶進(jìn)程移動(dòng)到一個(gè)由User、IPC、PID和Net名字空間組成的隔離環(huán)境。在這個(gè)過(guò)程中只申請(qǐng)了一次root權(quán)限,用于完成相關(guān)的網(wǎng)絡(luò)配置,使得被隔離的用戶進(jìn)程能夠連接外部網(wǎng)絡(luò),此后用戶進(jìn)程一直以宿主機(jī)上的普通用戶權(quán)限運(yùn)行;而通過(guò)User名字空間的權(quán)限映射,這個(gè)普通用戶權(quán)限的進(jìn)程在名字空間內(nèi)具有root權(quán)限,這種方式避免了名字空間內(nèi)進(jìn)程的真實(shí)權(quán)限過(guò)高造成對(duì)宿主機(jī)系統(tǒng)的潛在危害。
② 使用fork()函數(shù)創(chuàng)建子進(jìn)程,并使用unshare()函數(shù)將子進(jìn)程移動(dòng)到一個(gè)以PID、Mount和Net名字空間組成的隔離環(huán)境。再次使用fork()函數(shù)創(chuàng)建子進(jìn)程,并掛載根文件系統(tǒng),加載Web服務(wù)器程序。這里利用Mount名字空間限制 Web服務(wù)器進(jìn)程不能查看宿主機(jī)文件系統(tǒng)信息;利用Net名字空間為進(jìn)程提供隔離的網(wǎng)絡(luò)環(huán)境,使其需要路由和轉(zhuǎn)發(fā)才能訪問(wèn)Internet,為Web服務(wù)器運(yùn)行環(huán)境的動(dòng)態(tài)變換作準(zhǔn)備。
③ 父進(jìn)程為子進(jìn)程提供相關(guān)的網(wǎng)絡(luò)配置,并在合適的時(shí)機(jī)創(chuàng)建新的子進(jìn)程來(lái)提供Web服務(wù),并終止舊的子進(jìn)程運(yùn)行。
在典型的Web服務(wù)器系統(tǒng)中,存在兩種類型的持久化數(shù)據(jù):一種是諸如用戶賬號(hào)信息的長(zhǎng)期持久化數(shù)據(jù),這類數(shù)據(jù)需要存儲(chǔ)在磁盤(pán)、磁帶等可長(zhǎng)期保留的設(shè)備上;第二種是短期存在的會(huì)話數(shù)據(jù)session。由于session數(shù)據(jù)量較小、有效時(shí)間較短,且保存在磁盤(pán)上時(shí)讀寫(xiě)速率較慢,因而主要存儲(chǔ)在內(nèi)存中。
Web服務(wù)器停止服務(wù)后會(huì)進(jìn)行清洗,原先存儲(chǔ)在該運(yùn)行環(huán)境下的所有數(shù)據(jù)都會(huì)被刪除,存儲(chǔ)session的內(nèi)存也會(huì)被回收,這會(huì)造成數(shù)據(jù)丟失問(wèn)題,并會(huì)影響用戶訪問(wèn)體驗(yàn)。為解決這些問(wèn)題,本文借鑒了分布式Web服務(wù)器設(shè)計(jì)方案[15],使用網(wǎng)絡(luò)文件系統(tǒng)(Network File System, NFS)來(lái)存儲(chǔ)第一種類型的數(shù)據(jù),使用開(kāi)源工具Redis數(shù)據(jù)庫(kù)[16]來(lái)存儲(chǔ)第二種數(shù)據(jù)。NFS和Redis數(shù)據(jù)庫(kù)都在Web服務(wù)器運(yùn)行環(huán)境之外獨(dú)立運(yùn)行,這樣不管Web服務(wù)器如何變換,這些數(shù)據(jù)都不會(huì)丟失,Web服務(wù)器便可以通過(guò)網(wǎng)絡(luò)請(qǐng)求的方式在需要的時(shí)候?qū)?shù)據(jù)進(jìn)行讀寫(xiě)。NFS和Redis數(shù)據(jù)庫(kù)都在Linux名字空間隔離下運(yùn)行,并通過(guò)IPtables限制其訪問(wèn)外網(wǎng)的能力,入侵者難以感知其存在,并難以對(duì)其進(jìn)行攻擊。
Web服務(wù)器調(diào)度控制器是實(shí)現(xiàn)基于Linux名字空間的動(dòng)態(tài)防御的核心??刂破魑挥赪eb服務(wù)器運(yùn)行環(huán)境之外,這樣做的目的是保證對(duì)容器的絕對(duì)控制,即使Web服務(wù)器被惡意入侵和控制,也不會(huì)影響控制器的正常運(yùn)行。由于突然停止Web服務(wù)器的運(yùn)行可能會(huì)導(dǎo)致一些用戶的訪問(wèn)請(qǐng)求得不到正常的處理,為解決這個(gè)問(wèn)題,本文將Web服務(wù)器調(diào)度的一個(gè)周期分為以下四個(gè)過(guò)程。
1)活躍期:Web服務(wù)器在線,接收和處理任何請(qǐng)求;
2)收尾期:Web服務(wù)器處理已存在的請(qǐng)求,但不再接收新的請(qǐng)求;
3)離線期:Web服務(wù)器已下線,隔離互聯(lián)網(wǎng),可以清洗;
4)等待期:Web服務(wù)器被重置到原始狀態(tài),等待再次上線。
這四種狀態(tài)的轉(zhuǎn)換關(guān)系如圖6所示,每次變換中只有處于活躍期的Web服務(wù)器接受請(qǐng)求,在任意時(shí)刻網(wǎng)絡(luò)入口都指向處于活躍期的Web服務(wù)器。圖7表示了某時(shí)刻Web服務(wù)器狀態(tài),其中某些Web服務(wù)器正在提供服務(wù),而某些Web服務(wù)器正在被清洗。在每一種情況下,至少有一個(gè)Web服務(wù)器正在被清洗,最終每個(gè)Web服務(wù)器都會(huì)被離線、清洗和恢復(fù)到其原始狀態(tài)。
圖7中Web服務(wù)器可分為兩類:
1) 獨(dú)立Web服務(wù)器。對(duì)于獨(dú)立Web服務(wù)器,任意時(shí)刻,至少有一個(gè)Web服務(wù)器在線(圖7中黑圓),接收來(lái)自用戶的請(qǐng)求,處理并返回結(jié)果;其他Web服務(wù)器(圖7中白圓)不再接收新來(lái)的消息,但是要在離線前完成未處理的請(qǐng)求。離線的Web服務(wù)器要進(jìn)行清洗(圖7中白框),完成清洗后會(huì)等待某個(gè)時(shí)刻再次上線(圖7中黑框)。
2) 非獨(dú)立Web服務(wù)器。對(duì)于非獨(dú)立Web服務(wù)器,每個(gè)子Web服務(wù)器運(yùn)行著一個(gè)功能,所有子Web服務(wù)器相互配合實(shí)現(xiàn)完整的功能。在進(jìn)行離線和清洗時(shí)需要采用一定的算法對(duì)子Web服務(wù)器進(jìn)行選擇,以保證Web服務(wù)的正常。
圖6 控制器調(diào)度下的Web服務(wù)器狀態(tài)Fig. 6 Web server states under controller scheduling
圖7 某時(shí)刻Web服務(wù)器狀態(tài)Fig. 7 Web server state at some point
實(shí)驗(yàn)主要測(cè)試Web服務(wù)器的功能連續(xù)性和安全性。實(shí)驗(yàn)主機(jī)型號(hào)為L(zhǎng)enovo G480,處理器為Intel i5- 2450M,主頻為2.5 GHz,內(nèi)存為12 GB,操作系統(tǒng)為Ubuntu 16.04。仿真系統(tǒng)結(jié)構(gòu)如圖8所示,其中容器1、2、3提供Web服務(wù),Web服務(wù)器為Apache+PHP;容器Redis提供Session持久化服務(wù),其版本為 2.8.4;容器Gate是網(wǎng)絡(luò)數(shù)據(jù)的出入口,數(shù)據(jù)轉(zhuǎn)發(fā)規(guī)則由IPtables配置。容器Gate有兩個(gè)網(wǎng)卡,其中eth0連接Internet,eth1連接由容器1、2、3組建的內(nèi)部局域網(wǎng)。在任意時(shí)間,Internet用戶的請(qǐng)求都會(huì)通過(guò)容器Gate轉(zhuǎn)發(fā)給控制器指定的Web服務(wù)器。
圖8 基于Linux名字空間的Web服務(wù)器仿真系統(tǒng)組成結(jié)構(gòu)Fig. 8 Composition structure of Web server simulation system based on Linux namespace
用戶訪問(wèn)Web服務(wù)器的行為可分為請(qǐng)求包含會(huì)話的網(wǎng)頁(yè)和請(qǐng)求不包含會(huì)話的網(wǎng)頁(yè)兩類。對(duì)于第一類行為,為驗(yàn)證Web服務(wù)器切換對(duì)Web服務(wù)器數(shù)據(jù)一致性的影響,設(shè)計(jì)了統(tǒng)計(jì)一次Session會(huì)話中用戶訪問(wèn)頁(yè)面次數(shù)的實(shí)驗(yàn),驗(yàn)證了Web服務(wù)器切換可以保持會(huì)話的數(shù)據(jù)一致性;對(duì)于第二類行為,實(shí)驗(yàn)通過(guò)性能測(cè)試工具Apache Bench模擬用戶訪問(wèn)行為進(jìn)行測(cè)試。假設(shè)Web服務(wù)器曝光(活躍期)時(shí)間為E,請(qǐng)求并發(fā)度(每秒的并發(fā)請(qǐng)求數(shù))為U,請(qǐng)求頁(yè)面大小為M,為使測(cè)試覆蓋各個(gè)Web服務(wù)器,測(cè)試時(shí)間為D=3*E。令:E=10 s,30 s,60 s;U=50,100,125;M=100 KB。表2記錄了實(shí)驗(yàn)所得數(shù)據(jù),其中曝光時(shí)間為L(zhǎng)ong表示沒(méi)有采用本防御方法的Web服務(wù)器,用來(lái)作為基準(zhǔn)值參考。因?yàn)檎?qǐng)求響應(yīng)平均時(shí)間與請(qǐng)求數(shù)據(jù)大小、并發(fā)度正相關(guān),所以合理設(shè)置收尾期時(shí)間,就可以保證Web服務(wù)器能夠正常響應(yīng)用戶請(qǐng)求。圖9展示了不同并發(fā)度下Web服務(wù)器響應(yīng)用戶請(qǐng)求的平均時(shí)間與曝光時(shí)間的關(guān)系,可知曝光時(shí)間對(duì)Web服務(wù)器性能影響很小,在0.02~0.07 ms范圍內(nèi)。
表2 Web服務(wù)器響應(yīng)用戶請(qǐng)求結(jié)果Tab. 2 Results of responding to user request for Web server
圖9 Web服務(wù)器請(qǐng)求響應(yīng)平均時(shí)間與曝光時(shí)間Fig. 9 Average response time and exposure time of Web server requests
對(duì)Web服務(wù)器進(jìn)行入侵的一般流程包括目標(biāo)信息探測(cè)、漏洞利用、權(quán)限提升、后門放置等過(guò)程。實(shí)驗(yàn)?zāi)M入侵過(guò)程的各個(gè)環(huán)節(jié),驗(yàn)證本防御方法對(duì)Web服務(wù)器安全性的提高。
在目標(biāo)信息探測(cè)和漏洞利用階段,通過(guò)nmap工具探測(cè)操作系統(tǒng)類型和Web服務(wù)器版本結(jié)果如表3所示,在不同的活躍期,Web服務(wù)器具有不同的操作系統(tǒng)類型和Web服務(wù)器版本,這使得入侵者對(duì)Web服務(wù)器的真實(shí)信息感到迷惑,加大了其選擇可利用漏洞并實(shí)施攻擊的難度。
表3 nmap探測(cè)Web服務(wù)器信息Tab. 3 Web server information of nmap detection
在權(quán)限提升階段,實(shí)驗(yàn)假設(shè)入侵者發(fā)現(xiàn)其中一個(gè)Web服務(wù)器具有任意命令執(zhí)行漏洞,由于Web服務(wù)器是以www-data用戶權(quán)限運(yùn)行的,入侵者需要利用該漏洞并通過(guò)其他方式獲取root權(quán)限。為簡(jiǎn)化實(shí)驗(yàn),在Web服務(wù)器目錄下放置了一個(gè)屬主為root的具有setuid(0)代碼的C程序,并為其設(shè)置setuid位,通過(guò)執(zhí)行該程序,入侵者可以獲得一個(gè)具有root權(quán)限的Web shell。實(shí)驗(yàn)驗(yàn)證入侵者的確可以獲取容器中的root權(quán)限,但該root權(quán)限是由宿主機(jī)上的普通用戶通過(guò)Linux User名字空間映射而得的,并不是宿主機(jī)的root權(quán)限。用Linux User名字空間以普通用戶權(quán)限創(chuàng)建容器,并在容器中以低權(quán)限用戶身份運(yùn)行Web服務(wù)器,這種二次降權(quán)的方式,可進(jìn)一步保護(hù)宿主機(jī)的安全。
在后門放置階段,利用在權(quán)限提升階段的工作進(jìn)行了三組測(cè)試,包括向Web服務(wù)器容器中添加新用戶、修改ps等系統(tǒng)關(guān)鍵程序、上傳惡意守護(hù)進(jìn)程程序。實(shí)驗(yàn)驗(yàn)證本方法雖然不能阻止入侵者在處于活躍期的容器內(nèi)創(chuàng)建后門等惡意行為,但能夠在容器處于離線期時(shí)將這些惡意行為清洗和消除。這是因?yàn)樵璍inux名字空間撤銷后,容器中的包括入侵者駐留的守護(hù)進(jìn)程在內(nèi)的所有進(jìn)程都會(huì)被殺死;新容器的文件系統(tǒng)是由原始鏡像和經(jīng)過(guò)清洗的Web服務(wù)器數(shù)據(jù)文件組成,入侵者對(duì)原系統(tǒng)的修改,例如添加新用戶、篡改關(guān)鍵程序等都會(huì)被清除。實(shí)驗(yàn)過(guò)程中通過(guò)連接守護(hù)進(jìn)程開(kāi)放的5555端口的方式對(duì)入侵者控制容器的有效時(shí)間進(jìn)行記錄,結(jié)果如表4所示。
表4 入侵者控制容器時(shí)間 sTab. 4 Time of controlling container by intruder s
由表4可知,入侵者控制Web服務(wù)器的有效時(shí)間為入侵者控制Web服務(wù)器時(shí)的容器活躍期剩余時(shí)間和收尾期時(shí)間之和,因此在保證Web服務(wù)器正常工作的前提下,通過(guò)調(diào)整容器活躍器和收尾器時(shí)間,增加Web服務(wù)器容器種類等方式,可增加入侵者攻擊Web服務(wù)器的難度,并定期自動(dòng)清除入侵對(duì)Web服務(wù)器的影響,從而提高Web服務(wù)器的安全性。
本文使用Linux名字空間為Web服務(wù)器構(gòu)建了一種動(dòng)態(tài)防御機(jī)制,這種機(jī)制不依賴于入侵檢測(cè)過(guò)程,而是通過(guò)不斷的變換和清洗來(lái)消除入侵威脅。仿真實(shí)驗(yàn)驗(yàn)證了本文方法在提供Web服務(wù)器安全性的同時(shí),對(duì)系統(tǒng)性能影響很小,對(duì)于100 KB的數(shù)據(jù),其時(shí)間損耗為0.02~0.07 ms。接下來(lái)研究將本文方法與入侵檢測(cè)、預(yù)防等方法相結(jié)合,增加對(duì)入侵行為的感知和記錄,增加對(duì)Web服務(wù)器的彈性調(diào)度以及拓寬本方法適用性等。
References)
[1] 中國(guó)信息通信研究院.2016年云計(jì)算白皮書(shū)[R].北京:中國(guó)信息通信研究院,2016.(China Academy of Information and Communications Technology. 2016 Cloud Computing White Paper [R]. Beijing: China Academy of Information and Communications Technology, 2016.)
[2] SINGER P W, FRIEDMAN A. Cybersecurity and Cyberwar: What Everyone Needs to Know [M]. Oxford: Oxford University Press, 2014: 12-45.
[3] BUI T. Analysis of docker security [EB/OL]. [2017- 04- 20]. https://www.researchgate.net/publication/270906436_Analysis_of_Docker_Security.
[4] CHUNG C J, KHATKAR P, XING T Y, et al. NICE: network intrusion detection and countermeasure selection in virtual network systems [J]. IEEE Transactions on Dependable and Secure Computing, 2013, 10(4): 198-211.
[5] XU H, CHEN X, ZHOU J M, et al. Research on basic problems of cognitive network intrusion prevention [C]// Proceedings of the 2013 Ninth International Conference on Computational Intelligence and Security. Washington, DC: IEEE Computer Society, 2013: 514-517.
[6] MADAN B B, GOEVA-POPSTOJANOVA K, VAIDYANATHAN K, et al. A method for modeling and quantifying the security attributes of intrusion tolerant systems [J]. Performance Evaluation, 2004, 56(1/2/3/4): 167-186.
[7] OKHRAVI H, HOBSON T, BIGELOW D, et al. Finding focus in the blur of moving-target techniques [J]. IEEE Security & Privacy, 2014, 12(2): 16-26.
[8] AZAB M, MOKHTAR B, ABED A S, et al. Toward smart moving target defense for Linux container resiliency [C]// Proceedings of the 2016 IEEE 41st Conference on Local Computer Networks. Piscataway, NJ: IEEE, 2016: 619-622.
[9] 仝青,張錚,張為華,等.擬態(tài)防御Web服務(wù)器設(shè)計(jì)與實(shí)現(xiàn)[J].軟件學(xué)報(bào),2017,28(4):883-897.(TONG Q, ZHANG Z, ZHANG W H, et al. Design and implementation of mimic defense Web server [J]. Journal of Software, 2017, 28(4): 883-897.)
[10] BANGALORE A K, SOOD A K. Securing Web servers using Self Cleansing Intrusion Tolerance (SCIT) [C]// Proceedings of the 2009 Second International Conference on Dependability. Piscataway, NJ: IEEE, 2009: 60-65.
[11] BIEDERMAN E W. Multiple instances of the global Linux namespaces [EB/OL]. [2017- 05- 06]. http://www.landley.net/kdocs/ols/2006/ols2006v1-pages-101-112.pdf.
[12] ROSEN R. Linux containers and the future cloud [J]. Linux Journal, 2014, 2014(240): Article No. 3.
[13] BABAR M A, RAMSEY B. Understanding container isolation mechanisms for building security-sensitive private cloud [R]. Adelaide, Australia: University of Adelaide, Centre for Research on Engineering Software Technologies, 2017.
[14] DUA R, RAJA A R, KAKADIA D. Virtualization vs containerization to support PaaS [C]// Proceedings of the 2014 IEEE International Conference on Cloud Engineering. Piscataway, NJ: IEEE, 2014: 610-614.
[15] TANENBAUM A S, VAN STEEN M. Distributed Systems: Principles and Paradigms [M]. 2nd ed. Upper Saddle River, NJ: Prentice-Hall, 2007: 545-585.
[16] CARLSON J L. Redis in Action [M]. Greenwich, CT: Manning Publications, 2013: 90-110.
CHENGang, born in 1992, M. S. candidate. His research interests include system security, cloud computing.
GUOYudong, born in 1964, M. S. , professor. His research interests include operating system, virtualization.
WEIXiaofeng, born in 1985, M. S. His research interests include information security.
DynamicdefensemethodofWebserverbasedonLinuxnamespace
CHEN Gang1,2*, GUO Yudong1,2, WEI Xiaofeng2
(1.InformationEngineeringUniversity,ZhengzhouHenan450001,China;2.StateKeyLaboratoryofMathematicalEngineeringandAdvancedComputing,ZhengzhouHenan450001,China)
Web servers are widely deployed on cloud computing platform represented by Docker containers and face serious security challenges. In order to improve the security and defense capability of such Web servers, a dynamic defense method of Web server based on Linux namespace was proposed. Firstly, the running environment of Web server was built by using namespace on the premise to ensure Web service working normally. Then, the dynamic transformation of Web server was realized by the alternate running of multiple environments to confuse intruder, which increased the difficulty of attacking Web server by the intruder. Finally, the running environment of Web server was periodically deleted and rebuilt to eliminate the impact of intrusion behavior on the Web server, and ultimately the dynamic defense capability of Web server was effectively improved. The experimental results show that, the proposed method can effectively enhance the security of Web server while it has little affect on system performance, and its response time of requesting 100 KB data is 0.02-0.07 ms.
container; Linux namespace; dynamic defense; virtualization
2017- 06- 12;
2017- 08- 02。
陳剛(1992—),男,河南民權(quán)人,碩士研究生,主要研究方向:系統(tǒng)安全、云計(jì)算; 郭玉東(1964—),男,河南太康人,教授,碩士,主要研究方向:操作系統(tǒng)、虛擬化; 魏小鋒(1985—),男,山東棗莊人,碩士,主要研究方向:信息安全。
1001- 9081(2017)12- 3442- 05
10.11772/j.issn.1001- 9081.2017.12.3442
(*通信作者電子郵箱467784592@qq.com)
TP393.08
A