本發(fā)明涉及計(jì)算機(jī)應(yīng)用,具體涉及一種ebpf下文件讀寫事件監(jiān)控方法。
背景技術(shù):
1、ebpf是由bpf技術(shù)發(fā)展而來,bpf(berkeley?packet?filter,拓展的伯克利報(bào)文過濾器)是類unix系統(tǒng)上數(shù)據(jù)鏈路層的一種原始接口,提供原始鏈路層封包的收發(fā)。從3.15版本開始,linux?內(nèi)核提供了一種擴(kuò)展的bpf虛擬機(jī),名為“extended?bpf”,簡(jiǎn)稱為ebpf。它能夠被用于非網(wǎng)絡(luò)相關(guān)的功能,比如附在不同的tracepoints上,從而獲取當(dāng)前內(nèi)核運(yùn)行的許多信息。ebpf現(xiàn)在主要被應(yīng)用于網(wǎng)絡(luò)、事件跟蹤、內(nèi)核優(yōu)化等領(lǐng)域。ebpf程序分為兩部分:內(nèi)核態(tài)字節(jié)碼:?內(nèi)核中的ebpf字節(jié)碼程序負(fù)責(zé)在內(nèi)核中處理特定事件,并可以將處理的結(jié)果通過maps或者perf-buffer發(fā)送到用戶空間。用戶態(tài)代碼:?用戶態(tài)部分主要有兩方面作用,一是加載ebpf字節(jié)碼程序到內(nèi)核中,其次是與內(nèi)核態(tài)ebpf程序讀寫信息。
2、現(xiàn)有的基于ebpf技術(shù)進(jìn)行文件讀寫事件監(jiān)控的方案,尤其是在高并發(fā)文件操作環(huán)境中,經(jīng)常會(huì)存在如下技術(shù)問題:
3、第一,現(xiàn)有方案中,ebpf內(nèi)核態(tài)字節(jié)碼需要采集完整的文件事件信息,并通過用戶態(tài)代碼與預(yù)設(shè)的路徑規(guī)則進(jìn)行字符串匹配。由于路徑匹配操作需要進(jìn)行頻繁的字符串比較,導(dǎo)致系統(tǒng)的性能開銷過大;
4、第二,現(xiàn)有方案中,ebpf在內(nèi)核態(tài)字節(jié)碼和用戶態(tài)之間傳遞數(shù)據(jù)時(shí),數(shù)據(jù)量大小存在限制,當(dāng)監(jiān)控文件事件量過大時(shí),可能會(huì)出現(xiàn)數(shù)據(jù)丟失,無法準(zhǔn)確地捕獲所有需要監(jiān)控的文件事件,導(dǎo)致監(jiān)控效率的下降;
5、第三,現(xiàn)有方案中,缺乏有效的優(yōu)化機(jī)制,無法在文件路徑規(guī)則匹配時(shí)進(jìn)行高效的預(yù)處理和去冗余操作。在海量數(shù)據(jù)下,ebpf可能無法實(shí)時(shí)處理所有事件,性能問題尤為突出。
技術(shù)實(shí)現(xiàn)思路
1、本
技術(shù)實(shí)現(xiàn)要素:
部分用于以簡(jiǎn)要的形式介紹構(gòu)思,這些構(gòu)思將在后面的具體實(shí)施方式部分被詳細(xì)描述。本發(fā)明內(nèi)容部分并不旨在標(biāo)識(shí)要求保護(hù)的技術(shù)方案的關(guān)鍵特征或必要特征,也不旨在用于限制所要求的保護(hù)的技術(shù)方案的范圍。
2、本發(fā)明提出了一種ebpf下文件讀寫事件監(jiān)控方法,來解決以上背景技術(shù)部分提到的技術(shù)問題中的一項(xiàng)或多項(xiàng)。
3、本發(fā)明提供了一種ebpf下文件讀寫事件監(jiān)控方法,包括:初始化ebpf程序,得到ebpf字節(jié)碼,ebpf字節(jié)碼包括內(nèi)核態(tài)字節(jié)碼和用戶態(tài)字節(jié)碼;
4、加載內(nèi)核態(tài)字節(jié)碼,并在文件操作函數(shù)內(nèi)進(jìn)行插樁,以監(jiān)聽文件操作函數(shù)是否被調(diào)用;
5、初始化預(yù)設(shè)緩沖區(qū),預(yù)設(shè)緩沖區(qū)用于內(nèi)核態(tài)字節(jié)碼與用戶態(tài)字節(jié)碼進(jìn)行通信;
6、獲取待監(jiān)控文件的文件標(biāo)識(shí)符,將待監(jiān)控文件的文件標(biāo)識(shí)符存入ebpf映射表中;
7、若監(jiān)聽到文件操作函數(shù)被調(diào)用,讀取內(nèi)核結(jié)構(gòu)體信息,并從內(nèi)核結(jié)構(gòu)體信息中獲取被操作文件的文件標(biāo)識(shí)符,并確定為被操作文件標(biāo)識(shí)符;
8、將被操作文件標(biāo)識(shí)符與ebpf映射表中的文件標(biāo)識(shí)符進(jìn)行匹配,得到匹配結(jié)果,若匹配結(jié)果表征匹配失敗,則判定被操作文件不在監(jiān)控范圍,并丟棄此事件;若匹配結(jié)果表征匹配成功,則判定被操作文件在監(jiān)控范圍。
9、可選的,本發(fā)明的一種ebpf下文件讀寫事件監(jiān)控方法,還包括:
10、若被操作文件在監(jiān)控范圍,獲取被操作文件所對(duì)應(yīng)的進(jìn)程信息和被操作文件的詳細(xì)信息,得到事件信息,將事件信息存入預(yù)設(shè)緩沖區(qū),以使用戶態(tài)字節(jié)碼從預(yù)設(shè)緩沖區(qū)讀取事件信息。
11、可選的,本發(fā)明的一種ebpf下文件讀寫事件監(jiān)控方法,還包括:
12、從預(yù)設(shè)緩沖區(qū)讀取事件信息,獲取事件信息中的文件標(biāo)識(shí)符和與文件標(biāo)識(shí)符所對(duì)應(yīng)的進(jìn)程標(biāo)識(shí)符,通過進(jìn)程標(biāo)識(shí)符,確定被操作文件所對(duì)應(yīng)的進(jìn)程標(biāo)識(shí)符為目標(biāo)進(jìn)程,對(duì)目標(biāo)進(jìn)程進(jìn)行文件訪問行為檢測(cè),得到目標(biāo)進(jìn)程行為檢測(cè)結(jié)果。
13、可選的,本發(fā)明的一種ebpf下文件讀寫事件監(jiān)控方法,還包括:
14、解析目標(biāo)進(jìn)程行為檢測(cè)結(jié)果,將目標(biāo)進(jìn)程行為檢測(cè)結(jié)果表征目標(biāo)進(jìn)程行為異常的進(jìn)程確定為異常進(jìn)程,將異常進(jìn)程所對(duì)應(yīng)的進(jìn)程標(biāo)識(shí)符和被操作文件的文件標(biāo)識(shí)符寫入反饋信息表;
15、當(dāng)滿足以下至少一項(xiàng)時(shí),確定目標(biāo)進(jìn)程行為檢測(cè)結(jié)果表征目標(biāo)進(jìn)程行為異常:
16、目標(biāo)進(jìn)程存在未授權(quán)的文件訪問行為;
17、目標(biāo)進(jìn)程的文件訪問頻率超過預(yù)設(shè)頻率閾值;
18、目標(biāo)進(jìn)程在預(yù)設(shè)時(shí)段進(jìn)行文件操作。
19、可選的,本發(fā)明的一種ebpf下文件讀寫事件監(jiān)控方法,還包括:
20、對(duì)異常進(jìn)程進(jìn)行文件內(nèi)容變更檢測(cè),得到文件內(nèi)容變更檢測(cè)結(jié)果;
21、若文件內(nèi)容變更檢測(cè)結(jié)果表征異常進(jìn)程存在異?;顒?dòng),將異常進(jìn)程的進(jìn)程標(biāo)識(shí)符和被操作文件的文件標(biāo)識(shí)符寫入反饋信息表。
22、可選的,本發(fā)明的一種ebpf下文件讀寫事件監(jiān)控方法,還包括:
23、將反饋信息表發(fā)送至對(duì)應(yīng)的用戶終端。
24、可選的,在初始化ebpf程序之前,包括:
25、對(duì)待部署ebpf程序的服務(wù)器系統(tǒng)進(jìn)行運(yùn)行環(huán)境檢測(cè),得到運(yùn)行環(huán)境檢測(cè)結(jié)果和服務(wù)器系統(tǒng)的系統(tǒng)信息。
26、可選的,初始化ebpf程序,包括:
27、若運(yùn)行環(huán)境檢測(cè)結(jié)果表征運(yùn)行環(huán)境符合預(yù)設(shè)運(yùn)行環(huán)境要求,執(zhí)行初始化ebpf程序;
28、若運(yùn)行環(huán)境檢測(cè)結(jié)果表征運(yùn)行環(huán)境不符合預(yù)設(shè)運(yùn)行環(huán)境要求,將系統(tǒng)信息發(fā)送至對(duì)應(yīng)的用戶終端。
29、本發(fā)明具有如下有益效果:通過優(yōu)化ebpf技術(shù)在文件讀寫事件監(jiān)控中的應(yīng)用,有效解決了現(xiàn)有方案中存在的性能瓶頸和數(shù)據(jù)丟失問題。相較于傳統(tǒng)的基于路徑字符串匹配的方法,本發(fā)明通過將文件的文件標(biāo)識(shí)符存儲(chǔ)在ebpf映射表中,直接進(jìn)行高效的整數(shù)比較,大幅降低了性能開銷,并減少了內(nèi)核態(tài)和用戶態(tài)之間的數(shù)據(jù)傳輸負(fù)擔(dān),從而避免了數(shù)據(jù)丟失。此外,通過只采集命中規(guī)則的文件操作事件,進(jìn)一步減小了事件量,使得系統(tǒng)在高并發(fā)環(huán)境下仍能保持高效運(yùn)作。最終,通過對(duì)采集到的事件進(jìn)行補(bǔ)充處理,如獲取進(jìn)程信息、文件路徑等,能夠?yàn)槿肭謾z測(cè)提供更加精確的依據(jù),提升了監(jiān)控精度與安全性,增強(qiáng)了系統(tǒng)對(duì)大規(guī)模業(yè)務(wù)場(chǎng)景的適應(yīng)能力。
1.一種ebpf下文件讀寫事件監(jiān)控方法,其特征在于,包括:
2.根據(jù)權(quán)利要求1所述的ebpf下文件讀寫事件監(jiān)控方法,其特征在于,還包括:
3.根據(jù)權(quán)利要求2所述的ebpf下文件讀寫事件監(jiān)控方法,其特征在于,還包括:
4.根據(jù)權(quán)利要求3所述的ebpf下文件讀寫事件監(jiān)控方法,其特征在于,還包括:
5.根據(jù)權(quán)利要求4所述的ebpf下文件讀寫事件監(jiān)控方法,其特征在于,還包括:
6.根據(jù)權(quán)利要求4所述的ebpf下文件讀寫事件監(jiān)控方法,其特征在于,還包括:
7.根據(jù)權(quán)利要求1所述的ebpf下文件讀寫事件監(jiān)控方法,其特征在于,在所述初始化ebpf程序之前,包括:
8.根據(jù)權(quán)利要求7所述的ebpf下文件讀寫事件監(jiān)控方法,其特征在于,所述初始化ebpf程序,包括: