本發(fā)明涉及計(jì)算機(jī)操作系統(tǒng)安全技術(shù)領(lǐng)域,特別涉及一種基于hook技術(shù)的Unix白名單控制方法。
背景技術(shù):
隨著云計(jì)算、大數(shù)據(jù)等新型技術(shù)的發(fā)展,對(duì)云主機(jī)和服務(wù)器的安全計(jì)算環(huán)境要求越來(lái)越高。安全的計(jì)算環(huán)境是云計(jì)算發(fā)展的基礎(chǔ),沒(méi)有安全的計(jì)算環(huán)境就不能保證云端數(shù)據(jù)的安全性,沒(méi)有安全的計(jì)算環(huán)境就不能保證云端業(yè)務(wù)的可持續(xù)性。軟件白名單機(jī)制是構(gòu)建安全計(jì)算環(huán)境的重要措施。
現(xiàn)有技術(shù)中,基于hook技術(shù)的Unix白名單控制方法,能夠有效的解決Unix系統(tǒng)上軟件白名單技術(shù)的實(shí)現(xiàn)機(jī)制及如何部署的問(wèn)題。
Unix系統(tǒng)上可運(yùn)行的二進(jìn)制文件,通常有三種方式:1、可獨(dú)立運(yùn)行的可執(zhí)行文件;2、SO文件,必須由可執(zhí)行文件加載到自身的進(jìn)程地址空間才能運(yùn)行的動(dòng)態(tài)庫(kù)文件;3、KO文件,由進(jìn)程加載到內(nèi)核空間運(yùn)行的驅(qū)動(dòng)文件。但現(xiàn)有技術(shù)中,如果黑客或內(nèi)部人員新增、修改、替換這三種類(lèi)型文件中的任意一個(gè),造成當(dāng)前操作系統(tǒng)存在惡意文件,計(jì)算環(huán)境將不再安全。
基于上述問(wèn)題,本發(fā)明提出了一種基于hook技術(shù)的Unix白名單控制方法。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明為了彌補(bǔ)現(xiàn)有技術(shù)的缺陷,提供了一種簡(jiǎn)單高效的基于hook技術(shù)的Unix白名單控制方法。
本發(fā)明是通過(guò)如下技術(shù)方案實(shí)現(xiàn)的:
一種基于hook技術(shù)的Unix白名單控制方法,其特征在于:在Unix系統(tǒng)上增加過(guò)濾驅(qū)動(dòng)模塊,所述過(guò)濾驅(qū)動(dòng)模塊采用內(nèi)核驅(qū)動(dòng)的方式實(shí)現(xiàn),由白名單主服務(wù)進(jìn)程安裝并啟動(dòng)運(yùn)行;所述過(guò)濾驅(qū)動(dòng)模塊在整個(gè)操作系統(tǒng)上控制非白名單中的進(jìn)程啟動(dòng),控制非白名單中的動(dòng)態(tài)庫(kù)加載,控制非白名單中的驅(qū)動(dòng)加載,控制二進(jìn)制文件添加,控制白名單中的二進(jìn)制文件被寫(xiě)入、覆蓋、替換、刪除和重命名,使操作系統(tǒng)保持干凈、安全的運(yùn)行環(huán)境。
所述白名單主服務(wù)進(jìn)程采用Unix應(yīng)用程序的方式實(shí)現(xiàn),白名單主服務(wù)進(jìn)程在初始化時(shí)安裝過(guò)濾驅(qū)動(dòng)模塊,同時(shí)掃描操作系統(tǒng)上的所有ELF文件,將各個(gè)ELF文件的全路徑和文件內(nèi)容的SHA1值提交給過(guò)濾驅(qū)動(dòng)模塊,添加到驅(qū)動(dòng)的白名單清單中,建立白名單清單鏈表。
當(dāng)接收到進(jìn)程啟動(dòng),動(dòng)態(tài)庫(kù)加載和/或驅(qū)動(dòng)加載訪問(wèn)請(qǐng)求時(shí),所述過(guò)濾驅(qū)動(dòng)模塊首先獲取訪問(wèn)請(qǐng)求的二進(jìn)制文件全路徑和SHA1值,然后遍歷自身的白名單清單鏈表,判斷ELF文件映射是否允許,如果是白名單清單中的二進(jìn)制文件,則將訪問(wèn)傳遞到原系統(tǒng)調(diào)用,操作系統(tǒng)正常完成ELF文件映射;如果不是白名單清單中的二進(jìn)制文件,則將訪問(wèn)過(guò)程阻止,操作系統(tǒng)映射ELF文件失敗,從而使得對(duì)應(yīng)的進(jìn)程無(wú)法啟動(dòng),動(dòng)態(tài)庫(kù)無(wú)法加載,驅(qū)動(dòng)無(wú)法加載。
操作系統(tǒng)運(yùn)行期間,所述過(guò)濾驅(qū)動(dòng)模塊攔截文件創(chuàng)建行為,禁止創(chuàng)建二進(jìn)制文件;操作系統(tǒng)運(yùn)行期間所有針對(duì)白名單清單鏈表中的二進(jìn)制文件的寫(xiě)入、覆蓋、替換、刪除、重命名,都將被所述過(guò)濾驅(qū)動(dòng)模塊攔截后予以拒絕。
當(dāng)接收到二進(jìn)制文件的寫(xiě)入、覆蓋、替換、刪除、重命名訪問(wèn)請(qǐng)求時(shí),所述過(guò)濾驅(qū)動(dòng)模塊首先獲取訪問(wèn)請(qǐng)求的二進(jìn)制文件全路徑和SHA1值,然后遍歷自身的白名單清單鏈表,如果訪問(wèn)請(qǐng)求針對(duì)的是白名單清單中的二進(jìn)制文件,則將訪問(wèn)過(guò)程阻止,使二進(jìn)制文件的寫(xiě)入、覆蓋、替換、刪除、重命名操作失?。蝗绻L問(wèn)請(qǐng)求針對(duì)的不是白名單清單中的二進(jìn)制文件,則將訪問(wèn)傳遞到原系統(tǒng)調(diào)用,操作系統(tǒng)正常完成二進(jìn)制文件的寫(xiě)入、覆蓋、替換、刪除、重命名操作。
為了安全起見(jiàn),所述白名單主服務(wù)進(jìn)程初次啟動(dòng)在操作系統(tǒng)剛剛安裝/配置完成且網(wǎng)絡(luò)斷開(kāi)的情況下進(jìn)行;所述白名單主服務(wù)進(jìn)程主動(dòng)退出時(shí),從當(dāng)前操作系統(tǒng)中卸載過(guò)濾驅(qū)動(dòng)模塊和自身。
本發(fā)明的有益效果是:該基于hook技術(shù)的Unix白名單控制方法,能夠禁止非白名單清單中的進(jìn)程啟動(dòng),禁止非白名單清單中的動(dòng)態(tài)庫(kù)和驅(qū)動(dòng)加載,同時(shí)又能保證白名單清單中的進(jìn)程文件、動(dòng)態(tài)庫(kù)文件和驅(qū)動(dòng)文件不被非法寫(xiě)入、覆蓋、替換、刪除和重命名,保證當(dāng)前操作系統(tǒng)不再新建二進(jìn)制文件,從而建立一個(gè)安全的操作系統(tǒng)計(jì)算環(huán)境。
附圖說(shuō)明
附圖1為本發(fā)明控制進(jìn)程啟動(dòng),動(dòng)態(tài)庫(kù)加載和/或驅(qū)動(dòng)加載流程示意圖。
附圖2為本發(fā)明控制二進(jìn)制文件的寫(xiě)入、覆蓋、替換、刪除、重命名流程示意圖。
具體實(shí)施方式
為了使本發(fā)明所要解決的技術(shù)問(wèn)題、技術(shù)方案及有益效果更加清楚明白,以下結(jié)合附圖和實(shí)施例,對(duì)本發(fā)明進(jìn)行詳細(xì)的說(shuō)明。應(yīng)當(dāng)說(shuō)明的是,此處所描述的具體實(shí)施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
該基于hook技術(shù)的Unix白名單控制方法,在Unix系統(tǒng)上增加過(guò)濾驅(qū)動(dòng)模塊,所述過(guò)濾驅(qū)動(dòng)模塊采用內(nèi)核驅(qū)動(dòng)的方式實(shí)現(xiàn),由白名單主服務(wù)進(jìn)程安裝并啟動(dòng)運(yùn)行;所述過(guò)濾驅(qū)動(dòng)模塊在整個(gè)操作系統(tǒng)上控制非白名單中的進(jìn)程啟動(dòng),控制非白名單中的動(dòng)態(tài)庫(kù)加載,控制非白名單中的驅(qū)動(dòng)加載,控制二進(jìn)制文件添加,控制白名單中的二進(jìn)制文件被寫(xiě)入、覆蓋、替換、刪除和重命名,使操作系統(tǒng)保持干凈、安全的運(yùn)行環(huán)境。
在Unix操作系統(tǒng)中,可執(zhí)行文件、動(dòng)態(tài)庫(kù)文件(SO文件)和驅(qū)動(dòng)文件(KO文件)都是ELF格式的文件。不管是進(jìn)程啟動(dòng),是動(dòng)態(tài)庫(kù)加載,還是驅(qū)動(dòng)加載,都要由操作系統(tǒng)將ELF文件映射到內(nèi)存。在操作系統(tǒng)運(yùn)行期間,發(fā)生ELF文件映射行為時(shí),例如:A進(jìn)程要啟動(dòng)B進(jìn)程、A進(jìn)程要加載B動(dòng)態(tài)庫(kù)、進(jìn)程要加載驅(qū)動(dòng),會(huì)自動(dòng)進(jìn)入過(guò)濾驅(qū)動(dòng)模塊。
所述白名單主服務(wù)進(jìn)程采用Unix應(yīng)用程序的方式實(shí)現(xiàn),白名單主服務(wù)進(jìn)程在初始化時(shí)安裝過(guò)濾驅(qū)動(dòng)模塊,同時(shí)掃描操作系統(tǒng)上的所有ELF文件,將各個(gè)ELF文件的全路徑和文件內(nèi)容的SHA1值提交給過(guò)濾驅(qū)動(dòng)模塊,添加到驅(qū)動(dòng)的白名單清單中,建立白名單清單鏈表。
當(dāng)接收到進(jìn)程啟動(dòng),動(dòng)態(tài)庫(kù)加載和/或驅(qū)動(dòng)加載訪問(wèn)請(qǐng)求時(shí),所述過(guò)濾驅(qū)動(dòng)模塊首先獲取訪問(wèn)請(qǐng)求的二進(jìn)制文件全路徑和SHA1值,然后遍歷自身的白名單清單鏈表,判斷ELF文件映射是否允許,如果是白名單清單中的二進(jìn)制文件,則將訪問(wèn)傳遞到原系統(tǒng)調(diào)用,操作系統(tǒng)正常完成ELF文件映射;如果不是白名單清單中的二進(jìn)制文件,則將訪問(wèn)過(guò)程阻止,操作系統(tǒng)映射ELF文件失敗,從而使得對(duì)應(yīng)的進(jìn)程無(wú)法啟動(dòng),動(dòng)態(tài)庫(kù)無(wú)法加載,驅(qū)動(dòng)無(wú)法加載。
操作系統(tǒng)運(yùn)行期間,所述過(guò)濾驅(qū)動(dòng)模塊攔截文件創(chuàng)建行為,禁止創(chuàng)建二進(jìn)制文件;操作系統(tǒng)運(yùn)行期間所有針對(duì)白名單清單鏈表中的二進(jìn)制文件的寫(xiě)入、覆蓋、替換、刪除、重命名,都將被所述過(guò)濾驅(qū)動(dòng)模塊攔截后予以拒絕。
當(dāng)接收到二進(jìn)制文件的寫(xiě)入、覆蓋、替換、刪除、重命名訪問(wèn)請(qǐng)求時(shí),所述過(guò)濾驅(qū)動(dòng)模塊首先獲取訪問(wèn)請(qǐng)求的二進(jìn)制文件全路徑和SHA1值,然后遍歷自身的白名單清單鏈表,如果訪問(wèn)請(qǐng)求針對(duì)的是白名單清單中的二進(jìn)制文件,則將訪問(wèn)過(guò)程阻止,使二進(jìn)制文件的寫(xiě)入、覆蓋、替換、刪除、重命名操作失??;如果訪問(wèn)請(qǐng)求針對(duì)的不是白名單清單中的二進(jìn)制文件,則將訪問(wèn)傳遞到原系統(tǒng)調(diào)用,操作系統(tǒng)正常完成二進(jìn)制文件的寫(xiě)入、覆蓋、替換、刪除、重命名操作。
為了安全起見(jiàn),所述白名單主服務(wù)進(jìn)程初次啟動(dòng)在操作系統(tǒng)剛剛安裝/配置完成且網(wǎng)絡(luò)斷開(kāi)的情況下進(jìn)行;所述白名單主服務(wù)進(jìn)程主動(dòng)退出時(shí),從當(dāng)前操作系統(tǒng)中卸載過(guò)濾驅(qū)動(dòng)模塊和自身。
該基于hook技術(shù)的Unix白名單控制方法,通過(guò)在現(xiàn)有Unix操作系統(tǒng)上增加過(guò)濾驅(qū)動(dòng)模塊,干預(yù)操作系統(tǒng)的文件訪問(wèn)操作,從而避免非清單進(jìn)程啟動(dòng)、非清單動(dòng)態(tài)庫(kù)加載、非清單驅(qū)動(dòng)加載。