本發(fā)明涉及信息安全技術(shù)領(lǐng)域,特別是指一種基于內(nèi)核模塊的Linux白名單系統(tǒng)保護(hù)方法和裝置。
背景技術(shù):
隨著信息化技術(shù)的推動(dòng)、網(wǎng)絡(luò)化技術(shù)的發(fā)展,信息系統(tǒng)的安全面臨著巨大的威脅。通過(guò)網(wǎng)絡(luò)傳輸而感染木馬、病毒、惡意程序,在所難免。多數(shù)惡意程序通過(guò)創(chuàng)建非法可執(zhí)行文件攻擊宿主機(jī),影響系統(tǒng)的正常工作。這些非法的可執(zhí)行程序有的會(huì)大量占用系統(tǒng)資源導(dǎo)致系統(tǒng)崩潰,有的會(huì)盜取系統(tǒng)中的重要信息,還有的會(huì)使系統(tǒng)中重要服務(wù)運(yùn)行出錯(cuò)。那么如何禁止這些非法程序的執(zhí)行,成為了信息安全領(lǐng)域一個(gè)重要的研究方向。
現(xiàn)行的Linux白名單主要通過(guò)修改防火墻策略的方法,阻止一些端口或者IP的訪問(wèn)。但是對(duì)于許多需要對(duì)外開放的服務(wù)器,必須開放端口供外界訪問(wèn)。如果訪問(wèn)者通過(guò)開放端口建立鏈接的方式傳播木馬病毒,那么利用防火墻策略制作的白名單將不再起作用,使得惡意可執(zhí)行程序能夠進(jìn)入系統(tǒng)影響其正常工作。此時(shí)就需要針對(duì)可執(zhí)行文件,對(duì)系統(tǒng)做出防護(hù),基于Linux可執(zhí)行程序制作的白名單,將系統(tǒng)中允許執(zhí)行的程序記錄在白名單中,然后將白名單放入到系統(tǒng)內(nèi)核層,每次運(yùn)行某個(gè)程序時(shí),都必須到白名單中查詢對(duì)比,只有記錄在白名單中的程序才允許執(zhí)行。通過(guò)這樣的方法可以有效的阻止系統(tǒng)中非法程序的執(zhí)行,從而保障系統(tǒng)的安全。
發(fā)明人在實(shí)際應(yīng)用中發(fā)現(xiàn),雖然內(nèi)核層對(duì)執(zhí)行程序的過(guò)濾確實(shí)可以有效的防護(hù)系統(tǒng)安全,但是也有很大的局限性,那就是每一個(gè)需要安裝白名單的系統(tǒng),都需要編譯一次內(nèi)核,然后才能安裝白名單。這要就使得白名單成了一次性的,盡管對(duì)非法程序的防護(hù)十分有效,但是對(duì)系統(tǒng)的維護(hù)卻變得很不方便了。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明的目的在于提出一種在實(shí)現(xiàn)上靈活、簡(jiǎn)單,在應(yīng)用中易于維護(hù)的基于內(nèi)核模塊的Linux白名單系統(tǒng)保護(hù)方法和裝置。
基于上述目的本發(fā)明提供的一種基于內(nèi)核模塊的Linux白名單系統(tǒng)保護(hù)方法,應(yīng)用于Linux系統(tǒng),包括:
白名單生成步驟:
掃描系統(tǒng)中所有被允許執(zhí)行的可執(zhí)行文件,根據(jù)掃描結(jié)果,生成應(yīng)用層白名單;
通過(guò)套接字技術(shù),將所述應(yīng)用層白名單包含的白名單信息傳輸至內(nèi)核層,并將所述白名單信息整合入預(yù)設(shè)的內(nèi)核層白名單;所述內(nèi)核層白名單編譯為模塊的形式設(shè)置于內(nèi)核層中;
校驗(yàn)步驟:
當(dāng)監(jiān)測(cè)到任一程序運(yùn)行時(shí),通過(guò)hook劫持技術(shù)將所述程序攔截;
判定所述程序是否處于所述內(nèi)核層白名單中,若是,則正常執(zhí)行所述程序;否則,阻止執(zhí)行所述程序。
在一些實(shí)施方式中,所述掃描系統(tǒng)內(nèi)所有的可執(zhí)行文件,根據(jù)掃描結(jié)果,生成應(yīng)用層白名單具體包括:
掃描系統(tǒng)內(nèi)所有的可執(zhí)行文件,對(duì)每個(gè)掃描到的可執(zhí)行文件均進(jìn)行hash值轉(zhuǎn)換處理,獲得所述可執(zhí)行文件對(duì)應(yīng)的第一hash值,并將所述第一hash值作為所述白名單信息生成所述應(yīng)用層白名單。
在一些實(shí)施方式中,所述判定所述程序是否處于所述內(nèi)核層白名單中具體包括:
查找所述程序的絕對(duì)路徑找到源文件,將所述源文件進(jìn)行hash值轉(zhuǎn)換處理,獲得第二hash值;
在所述內(nèi)核層白名單中檢索比對(duì)是否存在與所述第二hash值相對(duì)應(yīng)的第一hash值,若是,則正常執(zhí)行所述程序;否則,阻止執(zhí)行所述程序。
在一些實(shí)施方式中,所述掃描系統(tǒng)中所有被允許執(zhí)行的可執(zhí)行文件,根據(jù)掃描結(jié)果,生成應(yīng)用層白名單之后,還包括:
接收編輯指令,掃描所述編輯指令指定的路徑下所有的可執(zhí)行文件;
根據(jù)掃描結(jié)果,更新所述應(yīng)用層白名單。
在一些實(shí)施方式中,所述掃描系統(tǒng)中所有被允許執(zhí)行的可執(zhí)行文件,根據(jù)掃描結(jié)果,生成應(yīng)用層白名單之后,還包括:
接收編輯信息;
根據(jù)所述編輯信息,更新所述應(yīng)用層白名單。
另一方面,本發(fā)明實(shí)施例還提供了一種基于內(nèi)核模塊的Linux白名單系統(tǒng)保護(hù)裝置,應(yīng)用于Linux系統(tǒng),包括:設(shè)置于應(yīng)用層的應(yīng)用層白名單模塊和設(shè)置于內(nèi)核層的內(nèi)核層白名單模塊,其中:
所述應(yīng)用層白名單模塊包括:
生成單元,用于掃描系統(tǒng)中所有被允許執(zhí)行的可執(zhí)行文件,根據(jù)掃描結(jié)果,生成應(yīng)用層白名單;
傳輸單元,用于通過(guò)套接字技術(shù),將所述應(yīng)用層白名單包含的白名單信息傳輸至內(nèi)核層,并將所述白名單信息整合入預(yù)設(shè)的內(nèi)核層白名單;所述內(nèi)核層白名單編譯為模塊的形式設(shè)置于內(nèi)核層中;
所述內(nèi)核層白名單模塊包括:
攔截單元,用于當(dāng)監(jiān)測(cè)到任一程序運(yùn)行時(shí),通過(guò)hook劫持技術(shù)將所述程序攔截;
校驗(yàn)單元,用于判定所述程序是否處于所述內(nèi)核層白名單中,若是,則正常執(zhí)行所述程序;否則,阻止執(zhí)行所述程序。
在一些實(shí)施方式中,所述生成單元具體用于:掃描系統(tǒng)內(nèi)所有的可執(zhí)行文件,對(duì)每個(gè)掃描到的可執(zhí)行文件均進(jìn)行hash值轉(zhuǎn)換處理,獲得所述可執(zhí)行文件對(duì)應(yīng)的第一hash值,并將所述第一hash值作為所述白名單信息生成所述應(yīng)用層白名單。
在一些實(shí)施方式中,所述校驗(yàn)單元具體用于:查找所述程序的絕對(duì)路徑找到源文件,將所述源文件進(jìn)行hash值轉(zhuǎn)換處理,獲得第二hash值;在所述內(nèi)核層白名單中檢索比對(duì)是否存在與所述第二hash值相對(duì)應(yīng)的第一hash值,若是,則正常執(zhí)行所述程序;否則,阻止執(zhí)行所述程序。
在一些實(shí)施方式中,所述生成單元進(jìn)一步用于:接收編輯指令,掃描所述編輯指令指定的路徑下所有的可執(zhí)行文件;根據(jù)掃描結(jié)果,更新所述應(yīng)用層白名單。
在一些實(shí)施方式中,所述生成單元進(jìn)一步用于:接收編輯信息;根據(jù)所述編輯信息,更新所述應(yīng)用層白名單。
從上面所述可以看出,本發(fā)明提供的基于內(nèi)核模塊的Linux白名單系統(tǒng)保護(hù)方法和裝置,在現(xiàn)有的Linux系統(tǒng)白名單和內(nèi)核的基礎(chǔ)上,提出內(nèi)核白名單模塊,將白名單的內(nèi)核編譯成模塊的形式,在相同的內(nèi)核系統(tǒng)中,均可以使用該模塊,而無(wú)需重新編譯整個(gè)內(nèi)核。這樣的方式既能有效的阻止惡意程序的破壞,又不需要有太復(fù)雜的操作。它不僅可以隨時(shí)創(chuàng)建、添加和刪除白名單,而且可以隨時(shí)裝載或者卸載白名單的內(nèi)核模塊,實(shí)現(xiàn)靈活、簡(jiǎn)單的系統(tǒng)安全防護(hù)。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例的基于內(nèi)核模塊的Linux白名單系統(tǒng)保護(hù)方法流程圖;
圖2為本發(fā)明實(shí)施例的基于內(nèi)核模塊的Linux白名單系統(tǒng)保護(hù)裝置結(jié)構(gòu)示意圖。
具體實(shí)施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,以下結(jié)合具體實(shí)施例,并參照附圖,對(duì)本發(fā)明進(jìn)一步詳細(xì)說(shuō)明。
需要說(shuō)明的是,本發(fā)明實(shí)施例中所有使用“第一”和“第二”的表述均是為了區(qū)分兩個(gè)相同名稱非相同的實(shí)體或者非相同的參量,可見“第一”“第二”僅為了表述的方便,不應(yīng)理解為對(duì)本發(fā)明實(shí)施例的限定,后續(xù)實(shí)施例對(duì)此不再一一說(shuō)明。
本發(fā)明實(shí)施例提供了一種基于內(nèi)核模塊的Linux白名單系統(tǒng)保護(hù)方法。參考圖1,為本發(fā)明實(shí)施例的基于內(nèi)核模塊的Linux白名單系統(tǒng)保護(hù)方法流程圖。
所述方法包括:白名單生成步驟101和校驗(yàn)步驟102。
其中,白名單生成步驟101用于在首先在Linux系統(tǒng)的應(yīng)用層中,根據(jù)掃描出所有被允許執(zhí)行的可執(zhí)行文件,生成應(yīng)用層白名單,然后將應(yīng)用層白名單包含的白名單信息傳輸至Linux系統(tǒng)的內(nèi)核層中,將應(yīng)用層白名單包含的白名單信息整合入Linux系統(tǒng)預(yù)設(shè)的內(nèi)核層白名單中。為了實(shí)現(xiàn)上述的整合過(guò)程,在本發(fā)明實(shí)施例中,將現(xiàn)有的內(nèi)核層中的白名單進(jìn)行模塊化處理,即將白名單的內(nèi)核編譯成模塊的形式,形成模塊形式的所述的內(nèi)核層白名單。
然后,基于模塊形式的所述內(nèi)核層白名單,進(jìn)行校驗(yàn)步驟102。通過(guò)校驗(yàn)步驟102,過(guò)濾所有被執(zhí)行的程序,阻止不在內(nèi)核層白名單中的程序的運(yùn)行。
所述白名單生成步驟101,具體包括以下步驟:
步驟1011、掃描系統(tǒng)中所有被允許執(zhí)行的可執(zhí)行文件,根據(jù)掃描結(jié)果,生成應(yīng)用層白名單。
作為一個(gè)實(shí)施方式,本步驟具體包括:掃描系統(tǒng)內(nèi)所有的可執(zhí)行文件,對(duì)每個(gè)掃描到的可執(zhí)行文件均進(jìn)行hash值轉(zhuǎn)換處理,獲得所述可執(zhí)行文件對(duì)應(yīng)的第一hash值,并將所述第一hash值作為所述白名單信息生成所述應(yīng)用層白名單。
即于應(yīng)用層中,使用gla_wl_adm命令,掃描系統(tǒng)內(nèi)所有的可執(zhí)行文件,然后將每個(gè)上述的可執(zhí)行文件對(duì)應(yīng)生成一條白名單信息,制作成應(yīng)用層白名單(帶有wl后綴的文件)。應(yīng)用層白名單以列表文件的形成存在,其包含本步驟中生成的多條白名單信息。
步驟1012、通過(guò)套接字技術(shù),將所述應(yīng)用層白名單包含的白名單信息傳輸至內(nèi)核層,并將所述白名單信息整合入預(yù)設(shè)的內(nèi)核層白名單;所述內(nèi)核層白名單編譯為模塊的形式設(shè)置于內(nèi)核層中。
本步驟中,通過(guò)netlink通信,即套接字技術(shù),將新生成的應(yīng)用層中的應(yīng)用層白名單發(fā)送到內(nèi)核層。在內(nèi)核層中加載內(nèi)核層白名單模塊,通過(guò)內(nèi)核版本加載內(nèi)核信息,之后將前述的應(yīng)用層白名單包含的白名單信息加載入內(nèi)核中的內(nèi)核層白名單,待做校驗(yàn)用。
所述校驗(yàn)步驟102,具體包括以下步驟:
步驟1021、當(dāng)監(jiān)測(cè)到任一程序運(yùn)行時(shí),通過(guò)hook劫持技術(shù)將所述程序攔截。
作為一個(gè)實(shí)施方式,本步驟具體包括:當(dāng)運(yùn)行一個(gè)程序或者執(zhí)行一個(gè)可執(zhí)行文件時(shí),會(huì)用hook劫持技術(shù)將該程序攔截,然后查找程序的絕對(duì)路徑,將該程序的原文件用如前述的hash值轉(zhuǎn)換處理轉(zhuǎn)換成固定長(zhǎng)度的第二hash值。
步驟1022、判定所述程序是否處于所述內(nèi)核層白名單中,若是,則正常執(zhí)行所述程序;否則,阻止執(zhí)行所述程序。
作為一個(gè)實(shí)施方式,本步驟具體包括:在所述內(nèi)核層白名單中檢索比對(duì)是否存在與所述第二hash值相對(duì)應(yīng)的第一hash值,若是,則正常執(zhí)行所述程序;否則,阻止執(zhí)行所述程序。
既將新生成的第二hash值與內(nèi)核層白名單中的所有第一hash值做比較,如果內(nèi)核層白名單中有與所述第二hash值相同的第一hash值記錄,那么說(shuō)明此執(zhí)行程序是程序允許的命令,那么調(diào)用源程序文件繼續(xù)執(zhí)行;如果內(nèi)核層白名單中沒有與所述第二hash值相同的第一hash值記錄,那么將會(huì)直接返回內(nèi)核報(bào)錯(cuò)信息,以此實(shí)現(xiàn)阻止未知程序的效果。
作為步驟1011的一個(gè)可選的實(shí)施方式,其還可以包括以下步驟:接收編輯指令,掃描所述編輯指令指定的路徑下所有的可執(zhí)行文件;根據(jù)掃描結(jié)果,更新所述應(yīng)用層白名單。
在本步驟中,用戶可以對(duì)應(yīng)用層白名單進(jìn)行添加和刪除等編輯操作,具體的,用戶輸入編輯指令,根據(jù)該編輯指令,掃描指定路徑下的所有可執(zhí)行文件,然后將掃描結(jié)果生成白名單信息,將該部分白名單信息添加到應(yīng)用層白名單中或從應(yīng)用層白名單中刪除。
作為步驟1011的另一個(gè)可選的實(shí)施方式,其還可以包括以下步驟:接收編輯信息;根據(jù)所述編輯信息,更新所述應(yīng)用層白名單。
在本步驟中,用戶可以對(duì)應(yīng)用層白名單進(jìn)行添加和刪除等編輯操作,具體的,用戶直接輸入對(duì)應(yīng)用層白名單的編輯信息,根據(jù)該編輯信息對(duì)應(yīng)用層白名單的保護(hù)的內(nèi)容進(jìn)行修改。
可見,在本發(fā)明實(shí)施例中,應(yīng)用層命令gla_wl_adm用于生成和向內(nèi)核發(fā)送白名單,在使用了內(nèi)核模塊的白名單上,可以靈活的操作白名單的添加和刪除。在應(yīng)用層中,有一個(gè)白名單列表,表中記錄著每一次添加的wl文件。從表象上看,添加和刪除白名單操作就是對(duì)白名單列表的操作,可以刪除其中的一條或者幾條,也可以向此列表中添加白名單信息。而在命令執(zhí)行時(shí),實(shí)際上是將更新了的白名單列表中的所有項(xiàng)都做一次轉(zhuǎn)換,然后發(fā)到內(nèi)核層。這樣就可以使白名單軟件易于操作,方便新增可執(zhí)行文件,而不必要再次重新編譯內(nèi)核。從深層的上看,是由于使用了rootkits這種黑客的方式,在系統(tǒng)每次運(yùn)行一個(gè)程序的時(shí)候,調(diào)用了hook函數(shù),從而影響了Linux操作系統(tǒng)的動(dòng)態(tài)鏈接庫(kù),這樣就可以通過(guò)我們注入的函數(shù)替換了本應(yīng)該執(zhí)行的函數(shù),然后做我們需要的轉(zhuǎn)換和校驗(yàn)。不能通過(guò)校驗(yàn)的直接調(diào)用報(bào)錯(cuò)函數(shù)并退出,而通過(guò)了校驗(yàn)的就取得原本的正常函數(shù),讓程序繼續(xù)正常執(zhí)行。
另一方面,本發(fā)明實(shí)施例還提供了一種基于內(nèi)核模塊的Linux白名單系統(tǒng)保護(hù)裝置。參考圖2,為本發(fā)明實(shí)施例的基于內(nèi)核模塊的Linux白名單系統(tǒng)保護(hù)裝置結(jié)構(gòu)示意圖。
所述裝置,包括:設(shè)置于應(yīng)用層的應(yīng)用層白名單模塊201和設(shè)置于內(nèi)核層的內(nèi)核層白名單模塊202。其中:
所述應(yīng)用層白名單模塊201包括:
生成單元2011,用于掃描系統(tǒng)中所有被允許執(zhí)行的可執(zhí)行文件,根據(jù)掃描結(jié)果,生成應(yīng)用層白名單;
傳輸單元2012,用于通過(guò)套接字技術(shù),將所述應(yīng)用層白名單包含的白名單信息傳輸至內(nèi)核層,并將所述白名單信息整合入預(yù)設(shè)的內(nèi)核層白名單;所述內(nèi)核層白名單編譯為模塊的形式設(shè)置于內(nèi)核層中;
所述內(nèi)核層白名單模塊201包括:
攔截單元2021,用于當(dāng)監(jiān)測(cè)到任一程序運(yùn)行時(shí),通過(guò)hook劫持技術(shù)將所述程序攔截;
校驗(yàn)單元2022,用于判定所述程序是否處于所述內(nèi)核層白名單中,若是,則正常執(zhí)行所述程序;否則,阻止執(zhí)行所述程序。
可選的,所述生成單元2011具體用于:掃描系統(tǒng)內(nèi)所有的可執(zhí)行文件,對(duì)每個(gè)掃描到的可執(zhí)行文件均進(jìn)行hash值轉(zhuǎn)換處理,獲得所述可執(zhí)行文件對(duì)應(yīng)的第一hash值,并將所述第一hash值作為所述白名單信息生成所述應(yīng)用層白名單。
可選的,所述校驗(yàn)2022單元具體用于:查找所述程序的絕對(duì)路徑找到源文件,將所述源文件進(jìn)行hash值轉(zhuǎn)換處理,獲得第二hash值;在所述內(nèi)核層白名單中檢索比對(duì)是否存在與所述第二hash值相對(duì)應(yīng)的第一hash值,若是,則正常執(zhí)行所述程序;否則,阻止執(zhí)行所述程序。
可選的,所述生成單元2011進(jìn)一步用于:接收編輯指令,掃描所述編輯指令指定的路徑下所有的可執(zhí)行文件;根據(jù)掃描結(jié)果,更新所述應(yīng)用層白名單。
可選的,所述生成單元2011進(jìn)一步用于:接收編輯信息;根據(jù)所述編輯信息,更新所述應(yīng)用層白名單。
上述實(shí)施例的裝置用于實(shí)現(xiàn)前述實(shí)施例中相應(yīng)的方法,并且具有相應(yīng)的方法實(shí)施例的有益效果,在此不再贅述。
所屬領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:以上任何實(shí)施例的討論僅為示例性的,并非旨在暗示本公開的范圍(包括權(quán)利要求)被限于這些例子;在本發(fā)明的思路下,以上實(shí)施例或者不同實(shí)施例中的技術(shù)特征之間也可以進(jìn)行組合,步驟可以以任意順序?qū)崿F(xiàn),并存在如上所述的本發(fā)明的不同方面的許多其它變化,為了簡(jiǎn)明它們沒有在細(xì)節(jié)中提供。
另外,為簡(jiǎn)化說(shuō)明和討論,并且為了不會(huì)使本發(fā)明難以理解,在所提供的附圖中可以示出或可以不示出與集成電路(IC)芯片和其它部件的公知的電源/接地連接。此外,可以以框圖的形式示出裝置,以便避免使本發(fā)明難以理解,并且這也考慮了以下事實(shí),即關(guān)于這些框圖裝置的實(shí)施方式的細(xì)節(jié)是高度取決于將要實(shí)施本發(fā)明的平臺(tái)的(即,這些細(xì)節(jié)應(yīng)當(dāng)完全處于本領(lǐng)域技術(shù)人員的理解范圍內(nèi))。在闡述了具體細(xì)節(jié)(例如,電路)以描述本發(fā)明的示例性實(shí)施例的情況下,對(duì)本領(lǐng)域技術(shù)人員來(lái)說(shuō)顯而易見的是,可以在沒有這些具體細(xì)節(jié)的情況下或者這些具體細(xì)節(jié)有變化的情況下實(shí)施本發(fā)明。因此,這些描述應(yīng)被認(rèn)為是說(shuō)明性的而不是限制性的。
盡管已經(jīng)結(jié)合了本發(fā)明的具體實(shí)施例對(duì)本發(fā)明進(jìn)行了描述,但是根據(jù)前面的描述,這些實(shí)施例的很多替換、修改和變型對(duì)本領(lǐng)域普通技術(shù)人員來(lái)說(shuō)將是顯而易見的。例如,其它存儲(chǔ)器架構(gòu)(例如,動(dòng)態(tài)RAM(DRAM))可以使用所討論的實(shí)施例。
本發(fā)明的實(shí)施例旨在涵蓋落入所附權(quán)利要求的寬泛范圍之內(nèi)的所有這樣的替換、修改和變型。因此,凡在本發(fā)明的精神和原則之內(nèi),所做的任何省略、修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。