一種基于文件序列化的自動機(jī)遠(yuǎn)程分發(fā)和初始化方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及大規(guī)模分布式特征實(shí)時檢測和匹配技術(shù)領(lǐng)域,尤其涉及到使用自動機(jī)匹配技術(shù)進(jìn)行多模式子串匹配的分布式檢測系統(tǒng)。
【背景技術(shù)】
[0002]互聯(lián)網(wǎng)的飛速發(fā)展伴隨著大量的網(wǎng)絡(luò)攻擊和惡意代碼的傳播,如何從海量的互聯(lián)網(wǎng)流量中檢測出這些攻擊特征和惡意代碼成為一個巨大的挑戰(zhàn)?;谥拈_源引擎如SNORT,BR0等而形成的分布式特征檢測與匹配系統(tǒng)是解決這個挑戰(zhàn)的主要技術(shù)之一。而在這些分布式系統(tǒng)中,特征檢測和匹配算法是其中的關(guān)鍵技術(shù),基于自動機(jī)的匹配算法是眾多匹配算法中的使用比較廣泛的一種特征匹配算法。
[0003]原來自動機(jī)匹配算法的實(shí)現(xiàn)方式是先將所有的規(guī)則和特征分發(fā)到每一臺處理機(jī)上,各自根據(jù)規(guī)則和特征初始化生成匹配自動機(jī),然后基于自動機(jī)進(jìn)行特征匹配。這種方式使得特征和規(guī)則暴露在所有的處理機(jī)上,形成安全隱患,而且每一臺處理機(jī)都要進(jìn)行同樣的初始化過程,系統(tǒng)開銷較大。
【發(fā)明內(nèi)容】
[0004]本發(fā)明要解決的技術(shù)問題是提供一種基于文件序列化的自動機(jī)遠(yuǎn)程分發(fā)和初始化方法,將位于內(nèi)存的自動機(jī)序列化成本地文件,然后將序列化后的文件進(jìn)行分發(fā)和快速部署,以替代原有的基于規(guī)則和特征的分發(fā)和部署方式。
[0005]—種基于文件序列化的自動機(jī)遠(yuǎn)程分發(fā)和初始化方法,該方法包括步驟:
[0006]S1.配置后端服務(wù)器,將特征和規(guī)則進(jìn)行初始化生成自動機(jī);
[0007]S2.在所述后端服務(wù)器上將自動機(jī)序列化到本地,以文件形式存儲;
[0008]S3.配置分發(fā)網(wǎng)絡(luò)和η臺處理機(jī),所述后端服務(wù)器將文件形式存在的自動機(jī)通過分發(fā)網(wǎng)絡(luò)發(fā)送給所有需要進(jìn)行匹配處理的處理機(jī);
[0009]S4.每臺處理機(jī)都接收文件形式存在的自動機(jī),并初始化到內(nèi)存;
[0010]S5.處理機(jī)根據(jù)新生成自動機(jī)進(jìn)行特征的匹配和檢測處理。
[0011]本發(fā)明的有益效果:
[0012]本發(fā)明提供了一種可靠的自動機(jī)序列化方法,將位于內(nèi)存的自動機(jī)序列化成本地文件,然后將序列化后的文件進(jìn)行分發(fā)和快速部署,以替代原有的基于規(guī)則和特征的分發(fā)和部署方式。
【具體實(shí)施方式】
[0013]本發(fā)明提供了一種基于文件序列化的自動機(jī)遠(yuǎn)程分發(fā)和初始化方法,該方法包括步驟:
[0014]S1.配置后端服務(wù)器,將特征和規(guī)則進(jìn)行初始化生成自動機(jī);
[0015]S2.在后端服務(wù)器上將自動機(jī)序列化到本地,以文件形式存儲;
[0016]S3.配置分發(fā)網(wǎng)絡(luò)和η臺處理機(jī),后端服務(wù)器將文件形式存在的自動機(jī)通過分發(fā)網(wǎng)絡(luò)發(fā)送給所有需要進(jìn)行匹配處理的處理機(jī);
[0017]S4.每臺處理機(jī)都接收文件形式存在的自動機(jī),并初始化到內(nèi)存;
[0018]S5.處理機(jī)根據(jù)新生成自動機(jī)進(jìn)行特征的匹配和檢測處理;
[0019]其中,步驟S1之前還包括步驟:
[0020]Α,.啟動異步消息網(wǎng)絡(luò)系統(tǒng);
[0021 ] 其中,步驟S1還包括步驟:
[0022]S1.1后端服務(wù)器在自動機(jī)算法實(shí)現(xiàn)時將其數(shù)據(jù)結(jié)構(gòu)分成兩類,一類是純指針,一類是純數(shù)據(jù);所有的指針都指向純數(shù)據(jù)部分的內(nèi)存地址;
[0023]S1.2后端服務(wù)器開辟兩塊連續(xù)的內(nèi)存,一塊用來存放純指針,一塊用來存放純數(shù)據(jù);
[0024]S1.3后端服務(wù)器按照前面兩點(diǎn)進(jìn)行自動機(jī)的構(gòu)建和初始化工作。
[0025]其中,步驟S2還包括步驟:
[0026]S2.1以下所有操作都在后端服務(wù)器上完成;
[0027]S2.2將存貯純數(shù)據(jù)的內(nèi)存內(nèi)容直接以字符格式原樣寫出到文件filel里面,并在filel文件中記錄下字符的總長度lenl ;這塊內(nèi)存的起始地址記為pO ;
[0028]S2.3存儲指針數(shù)據(jù)的內(nèi)存起始地址為記為pi,對每一個指針i,其中0 < i〈len2,計算偏移量offset[i] = pl[i] - pO,將每一個偏移量以32位整數(shù)格式寫入到文件file2中,并在file2記錄下總偏移量的個數(shù)len2 ;
[0029]S2.4將filel和file2按照一定的格式封裝,形成完整的自動機(jī)序列化后的文件。
[0030]其中,步驟S4還包括步驟:
[0031]S4.1以下所有操作都在處理機(jī)上完成;
[0032]S4.2收到自動機(jī)序列化文件后,首先從文件中獲取lenl的值,在內(nèi)存中開辟lenl長度的空間,將filel的字符內(nèi)容原樣寫入到內(nèi)存,并記錄下這塊內(nèi)存的起始地址p2 ;
[0033]S4.3從自動機(jī)文件中獲取len2的值,在內(nèi)存開辟len2個連續(xù)的指針;從自動機(jī)文件中獲取偏移量offset [i],其中0 < i〈len2,對每一個指針重新賦值offset [i]+p2 ;
[0034]S4.4至此,處理機(jī)上的自動機(jī)初始化工作完成。
【主權(quán)項(xiàng)】
1.一種基于文件序列化的自動機(jī)遠(yuǎn)程分發(fā)和初始化方法,其特征在于,包括步驟: 51.配置后端服務(wù)器,將特征和規(guī)則進(jìn)行初始化生成自動機(jī); 52.在所述后端服務(wù)器上將自動機(jī)序列化到本地,以文件形式存儲; 53.配置分發(fā)網(wǎng)絡(luò)和η臺處理機(jī),所述后端服務(wù)器將文件形式存在的自動機(jī)通過分發(fā)網(wǎng)絡(luò)發(fā)送給所有需要進(jìn)行匹配處理的處理機(jī); 54.每臺處理機(jī)都接收文件形式存在的自動機(jī),并初始化到內(nèi)存; 55.處理機(jī)根據(jù)新生成自動機(jī)進(jìn)行特征的匹配和檢測處理。2.如權(quán)利要求1所述的一種基于文件序列化的自動機(jī)遠(yuǎn)程分發(fā)和初始化方法,其特征在于,其中,步驟S1之前還包括步驟: A:.啟動異步消息網(wǎng)絡(luò)系統(tǒng)。3.如權(quán)利要求1所述的一種基于文件序列化的自動機(jī)遠(yuǎn)程分發(fā)和初始化方法,其特征在于,其中,步驟S1還包括步驟: S1.1后端服務(wù)器在自動機(jī)算法實(shí)現(xiàn)時將其數(shù)據(jù)結(jié)構(gòu)分成兩類,一類是純指針,一類是純數(shù)據(jù);所有的指針都指向純數(shù)據(jù)部分的內(nèi)存地址; S1.2后端服務(wù)器開辟兩塊連續(xù)的內(nèi)存,一塊用來存放純指針,一塊用來存放純數(shù)據(jù); 51.3后端服務(wù)器按照前面兩點(diǎn)進(jìn)行自動機(jī)的構(gòu)建和初始化工作。4.如權(quán)利要求3所述的一種基于文件序列化的自動機(jī)遠(yuǎn)程分發(fā)和初始化方法,其特征在于,其中,步驟S2還包括步驟: 52.1以下所有操作都在后端服務(wù)器上完成; S2.2將存貯純數(shù)據(jù)的內(nèi)存內(nèi)容直接以字符格式原樣寫出到文件filel里面,并在filel文件中記錄下字符的總長度lenl ;這塊內(nèi)存的起始地址記為pO ; S2.3存儲指針數(shù)據(jù)的內(nèi)存起始地址為記為pi,對每一個指針i,其中0 < i〈len2,計算偏移量0ffset[i] = pl[i] - pO,將每一個偏移量以32位整數(shù)格式寫入到文件file2中,并在file2記錄下總偏移量的個數(shù)len2 ; S2.4將filel和file2按照一定的格式封裝,形成完整的自動機(jī)序列化后的文件。5.如權(quán)利要求4所述的一種基于文件序列化的自動機(jī)遠(yuǎn)程分發(fā)和初始化方法,其特征在于,其中,步驟S4還包括步驟: S4.1以下所有操作都在處理機(jī)上完成; S4.2收到自動機(jī)序列化文件后,首先從文件中獲取lenl的值,在內(nèi)存中開辟lenl長度的空間,將filel的字符內(nèi)容原樣寫入到內(nèi)存,并記錄下這塊內(nèi)存的起始地址p2 ; S4.3從自動機(jī)文件中獲取len2的值,在內(nèi)存開辟len2個連續(xù)的指針;從自動機(jī)文件中獲取偏移量offset [i],其中0 < i〈len2,對每一個指針重新賦值offset [i]+p2 ; S4.4至此,處理機(jī)上的自動機(jī)初始化工作完成。
【專利摘要】本發(fā)明提供一種基于文件序列化的自動機(jī)遠(yuǎn)程分發(fā)和初始化方法,將位于內(nèi)存的自動機(jī)序列化成本地文件,然后將序列化后的文件進(jìn)行分發(fā)和快速部署,以替代原有的基于規(guī)則和特征的分發(fā)和部署方式。該方法包括步驟:S1.配置后端服務(wù)器,將特征和規(guī)則進(jìn)行初始化生成自動機(jī);S2.在所述后端服務(wù)器上將自動機(jī)序列化到本地,以文件形式存儲;S3.配置分發(fā)網(wǎng)絡(luò)和n臺處理機(jī),所述后端服務(wù)器將文件形式存在的自動機(jī)通過分發(fā)網(wǎng)絡(luò)發(fā)送給所有需要進(jìn)行匹配處理的處理機(jī);S4.每臺處理機(jī)都接收文件形式存在的自動機(jī),并初始化到內(nèi)存;S5.處理機(jī)根據(jù)新生成自動機(jī)進(jìn)行特征的匹配和檢測處理。
【IPC分類】G06F17/30
【公開號】CN105302851
【申請?zhí)枴緾N201510572332
【發(fā)明人】何清林, 馬秀娟, 孫昊良, 吳昊, 張良, 王大偉, 汪立東
【申請人】國家計算機(jī)網(wǎng)絡(luò)與信息安全管理中心
【公開日】2016年2月3日
【申請日】2015年9月10日