一種基于Docker虛擬化的信息系統(tǒng)入侵檢測方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種基于Docker虛擬化的信息系統(tǒng)入侵檢測方法。
【背景技術(shù)】
[0002] Docker是PaaS提供商dotCloud開源的一個基于LXC的高級容器引擎。源代碼 托管在Github上,基于go語言并遵從Apache2. 0協(xié)議開源。Docker自2013年以來非常 的火熱,它的成功主要是由于解決了一下幾個問題:(1)環(huán)境管理復(fù)雜:從各種0S到各種 中間件再到各種App,一款產(chǎn)品能夠成功發(fā)布,作為開發(fā)者需要關(guān)心的東西太多,且難于管 理,這個問題在軟件行業(yè)中普遍存在并需要直接面對。Docker可以簡化部署多種應(yīng)用實 例工作,比如Web應(yīng)用、后臺應(yīng)用、數(shù)據(jù)庫應(yīng)用、大數(shù)據(jù)應(yīng)用比如Hadoop集群、消息隊列等 等都可以打包成一個Image部署。(2)云計算時代的到來:AWS的成功,引導(dǎo)開發(fā)者將應(yīng) 用轉(zhuǎn)移到云上,解決了硬件管理的問題,然而軟件配置和管理相關(guān)的問題依然存在(AWS cloudformation是這個方向的業(yè)界標(biāo)準(zhǔn))。Docker的出現(xiàn)正好能幫助軟件開發(fā)者開闊思 路,嘗試新的軟件管理方法來解決這個問題。(3)虛擬化手段的變化:云時代采用標(biāo)配硬件 來降低成本,采用虛擬化手段來滿足用戶按需分配的資源需求以及保證可用性和隔離性。 然而無論是KVM還是Xen,在Docker看來都在浪費資源,因為用戶需要的是高效運行環(huán)境 而非0S,GuestOS既浪費資源又難于管理,更加輕量級的LXC更加靈活和快速。(4)LXC的 便攜性:LXC在Linux2. 6的Kernel里就已經(jīng)存在了,但是其設(shè)計之初并非為云計算考慮 的,缺少標(biāo)準(zhǔn)化的描述手段和容器的可便攜性,決定其構(gòu)建出的環(huán)境難于分發(fā)和標(biāo)準(zhǔn)化管 理(相對于KVM之類image和snapshot的概念)。Docker就在這個問題上做出了實質(zhì)性 的創(chuàng)新方法。
[0003] 雖然和傳統(tǒng)的虛擬機相比,Docker在性能和系統(tǒng)的占用上提升了不少,但在安全 方面還是有一些問題。(DDocker的隔離性相比KVM之類的虛擬化方案還是有些欠缺的,所 有container公用一部分的運行庫。(2)網(wǎng)絡(luò)管理相對簡單,主要是基于namespace隔離;
[3]Root的權(quán)限更容易獲得。由于以上的一些安全問題,Docker迫切需要一種主動的安全 機制來檢測和抵制外來的入侵。本專利重點就是研究基于Docker虛擬化的信息系統(tǒng)入侵 檢測技術(shù)。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明的目的是提供一種基于Docker虛擬化的信息系統(tǒng)入侵檢測方法,能夠通 過監(jiān)聽主機和容器間網(wǎng)絡(luò)中的數(shù)據(jù)包來獲取必要的數(shù)據(jù)來源,通過對捕獲的數(shù)據(jù)流完成數(shù) 據(jù)的采集工作,然后經(jīng)過支持向量機的學(xué)習(xí)和分類,實現(xiàn)對外來入侵的檢測。
[0005] -種基于Docker虛擬化的信息系統(tǒng)入侵檢測方法,其特別之處在于,包括如下步 驟:通過監(jiān)聽主機和容器間網(wǎng)絡(luò)中的數(shù)據(jù)包來獲取數(shù)據(jù)來源,然后通過捕獲的數(shù)據(jù)流完成 數(shù)據(jù)的采集工作,進(jìn)而經(jīng)過支持向量機的學(xué)習(xí)和分類,區(qū)分正常信息和外來入侵,實現(xiàn)對外 來入侵的檢測。
[0006] 其中支持向量機的學(xué)習(xí)和分類過程分為兩個階段,第一個階段為訓(xùn)練階段,使用 支持向量庫中的訓(xùn)練數(shù)據(jù)訓(xùn)練SVM即支持向量機分類器,訓(xùn)練時采用SVM主動學(xué)習(xí)算法,具 體如下:
[0007] 第一個階段,訓(xùn)練階段:
[0008] (1)從候選樣本集u中選擇i個樣本并正確標(biāo)注其類別,構(gòu)造初始訓(xùn)練樣本集T, 使T中至少包含一個輸出y為1和y為-1的樣本;其中候選樣本集u是指未帶類別標(biāo)注的 候選樣本集u,每次從u中采樣個數(shù)為1;
[0009] (2)根據(jù)訓(xùn)練集T構(gòu)造SVM分類器f?即分類器,預(yù)標(biāo)記樣本;
[0010] (3)對u中所有樣本使用f,標(biāo)注為(X,2 ),其中t為分類器f給向量x預(yù)先打 j .y. 上的標(biāo)注;
[0011] (4)從樣本集u中選擇一個離分類邊界最近的未標(biāo)注樣本(X,);
[0012] (5)將該樣本正確標(biāo)注后加入訓(xùn)練集T中,其中y為x的正確標(biāo)注;
[0013] (6)計算檢測精度;
[0014] (7)當(dāng)檢測精度大于等于95%時,算法終止,返回f;否則重復(fù)第⑵步;
[0015] 第二個階段,檢測階段:
[0016] (1)通過捕獲流進(jìn)主機和Docker容器間的數(shù)據(jù)流,完成數(shù)據(jù)采集工作;
[0017] (2)檢測階段對數(shù)據(jù)的處理:
[0018]a)將捕獲的數(shù)據(jù)包進(jìn)行特征提取;
[0019]b)將所有類型的數(shù)據(jù)轉(zhuǎn)換成以二進(jìn)制表示的數(shù)字形式,具體是采用基于距離度量 函數(shù)HVDM即異構(gòu)距離函數(shù)的方法,對數(shù)據(jù)進(jìn)行歸一化處理;
[0020] C)對這些特征值的范圍進(jìn)行處理,使得每類特征數(shù)據(jù)的取值范圍在[0, 1]中,經(jīng) 過上述過程數(shù)據(jù)的預(yù)處理,轉(zhuǎn)化為支持向量機能夠處理的向量化形式;
[0021] d)將處理的數(shù)據(jù)存入支持向量庫,支持向量庫中保存了SVM訓(xùn)練數(shù)據(jù)、實時檢測 數(shù)據(jù)及檢測結(jié)果;
[0022] (3)將進(jìn)過數(shù)據(jù)預(yù)處理的數(shù)據(jù)包進(jìn)行檢測,得到預(yù)測輸出值y,當(dāng)7為1是,表示為 正常網(wǎng)絡(luò)通信;當(dāng)y為-1時,表示異常的網(wǎng)絡(luò)通信,即有外來事件入侵Docker容器;
[0023] (4)檢測結(jié)果存入支持向量庫;
[0024] (5)將入侵檢測系統(tǒng)以app的形式封裝到Docker的容器中,將此容器和主機組成 host主機模式,而其它容器以bridge網(wǎng)橋形式和主機進(jìn)行網(wǎng)絡(luò)通信;
[0025] (6)當(dāng)檢測到入侵時,封裝有入侵檢測系統(tǒng)的容器通過和主機的網(wǎng)絡(luò)連接給被入 侵的容器發(fā)送指令dockerstop來終止被入侵容器的運行,或者發(fā)送指令dockerrm直接 刪除被入侵的容器;
[0026] (7)若時間檢測有誤,則進(jìn)行誤差分析,并重新訓(xùn)練SVM分類器。
[0027] 本發(fā)明方法的有益效果是:(1)將入侵檢測系統(tǒng)以軟件app的形式封裝到docker 的容器中,這樣就很好的利用了Docker的特性、節(jié)約了空間。(2)根據(jù)docker的運行機制, 將裝有入侵檢測系統(tǒng)的容器和主機組成host主機模式,和主機共享網(wǎng)絡(luò)環(huán)境,而其它容器 以bridge網(wǎng)橋模式和主機進(jìn)行網(wǎng)絡(luò)通信,當(dāng)檢測到入侵時入侵檢測系統(tǒng)通過主機直接將 被入侵的容器停止運行或直接回收刪除。
【附圖說明】
[0028] 附圖1為本發(fā)明方法的檢測過程流程圖;
[0029] 附圖2為本發(fā)明方法中入侵檢測的流程圖。
【具體實施方式】
[0030] 本發(fā)明提供的是一種基于Docker虛擬化的信息系統(tǒng)入侵檢測方法。如果發(fā)現(xiàn)有 外來入侵,入侵檢測系統(tǒng)通過docker的主機直接發(fā)送指令,停止被入侵容器的運行或直接 刪除被入侵的容器。
[0031] 此發(fā)明在Docker的實現(xiàn)過程如下:
[0032] 入侵檢測技術(shù)選用異常入侵檢測技術(shù),這個技術(shù)是基于支持向量機主動學(xué)習(xí)的入 侵檢測算法,這種算法在小樣本的情況下能夠?qū)崿F(xiàn)很快的分類速度。
[0033] 檢測系統(tǒng)的方式選用集中式的體系結(jié)構(gòu),將上面所用的入侵檢測技術(shù)以軟件app 的形式封裝到Docker的容器中,這樣就很好的利用了Docker的這個虛擬化平臺,然后將這 個容器和主機構(gòu)成host網(wǎng)絡(luò)模式,而其他的容器和主機為bridge橋接模式。擁有入侵檢 測系統(tǒng)的容器通過和主機直接建立網(wǎng)橋,使得此容器和主機共享一個網(wǎng)絡(luò)環(huán)境,當(dāng)發(fā)現(xiàn)有 外來入侵是,此容器可以通過主機來控制或刪除其它容器。入侵檢測系統(tǒng)通過捕獲流經(jīng)主 機和其它容器間的數(shù)據(jù)流,完成數(shù)據(jù)采集工作;由于捕獲的網(wǎng)絡(luò)數(shù)據(jù)包數(shù)據(jù)量大,為了減少 數(shù)據(jù)處理量,需進(jìn)行特征提取,從截取的網(wǎng)絡(luò)數(shù)據(jù)包中提取出用于網(wǎng)絡(luò)入侵檢測的相關(guān)屬 性特征;由于支持向量機只能處理向量化的數(shù)據(jù),因而必須通過數(shù)據(jù)預(yù)處理,將這些特征數(shù) 據(jù)轉(zhuǎn)換成SVM能處理的向量形式,并存入支持向量庫。支持向量庫中保存了SVM訓(xùn)練數(shù)據(jù)、 實時檢測數(shù)據(jù)及檢測結(jié)果。然后對預(yù)處理后的數(shù)據(jù)進(jìn)行訓(xùn)練和檢測。
[0034] 具體流程見說明書附圖的圖1。
[0035] 支持向量機主動學(xué)習(xí)算法用于網(wǎng)絡(luò)入侵檢測實際上分為兩個階段,第一個階段為 訓(xùn)練階段,使用支持向量庫中的訓(xùn)練數(shù)據(jù)訓(xùn)練SVM分類器,訓(xùn)練時采用SVM主動學(xué)習(xí)算法; 第二階段為檢測階段,經(jīng)過訓(xùn)練的SVM分類器用于對經(jīng)過數(shù)據(jù)預(yù)處理