專利名稱:一種網(wǎng)絡(luò)數(shù)據(jù)包有效性判定方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種網(wǎng)絡(luò)數(shù)據(jù)包檢測(cè)分析的方法及系統(tǒng),利用網(wǎng)絡(luò)正常工作時(shí)的流量和數(shù)據(jù),逐步完善,建立數(shù)學(xué)模型,不斷生成新的、更準(zhǔn)確的數(shù)據(jù)流量統(tǒng)計(jì)狀況,用以在超大流量的拒絕服務(wù)攻擊發(fā)生時(shí).有效的保障正常的網(wǎng)絡(luò)服務(wù)。
背景技術(shù):
眾所周知,拒絕服務(wù)攻擊是一種危害極為嚴(yán)重的網(wǎng)絡(luò)攻擊方式,其實(shí)施方法簡單,卻很難防范,通常是以消耗服務(wù)器端資源為目標(biāo),通過偽造超過服務(wù)器處理能力的請(qǐng)求數(shù)據(jù)造成服務(wù)器響應(yīng)阻塞,從而使正常的用戶請(qǐng)求得不到應(yīng)答,實(shí)現(xiàn)攻擊目的。
而作為拒絕服務(wù)攻擊的主要手段SYN Flood攻擊效果尤為顯著,通常SYN Flood的防范方式為應(yīng)用SYN Cookie機(jī)制.它的原理是在TCP服務(wù)器收到TCP SYN包時(shí),不分配一個(gè)專門的數(shù)據(jù)區(qū),而是根據(jù)這個(gè)SYN包計(jì)算出一個(gè)cookie值,并加載在所回應(yīng)的SYN/ACK包中,在收到TCP ACK包時(shí),TCP服務(wù)器在根據(jù)那個(gè)cookie值檢查這個(gè)TCP ACK包的合法性。如果合法,再分配專門的數(shù)據(jù)區(qū)進(jìn)行處理未來的TCP連接。SYN Cookie Firewall,一個(gè)網(wǎng)關(guān)模式的syn防火墻,它不僅要保護(hù)本機(jī)免受各種網(wǎng)絡(luò)攻擊,還要保護(hù)它后面的所有對(duì)外有開放TCP端口的主機(jī)免受這些攻擊。比如一個(gè)局域網(wǎng)中有個(gè)服務(wù)器開放了FTP服務(wù)給外界,這個(gè)服務(wù)器主機(jī)就有可能遭受到來自互聯(lián)網(wǎng)上的SYNFlood攻擊。而這時(shí)的防火墻會(huì)將所有的攻擊SYN包轉(zhuǎn)發(fā)給受害主機(jī)。一種杜絕這種情況的方法是SYN Cookie Firewall。它是SYN Cookie的一種擴(kuò)展形式??偟膩碚f,它是利用原來SYN Cookie的原理在內(nèi)網(wǎng)和外網(wǎng)之間實(shí)現(xiàn)TCP三次握手過程的代理(proxy)的機(jī)制。
為了方便描述,我們假定一個(gè)外在的TCP客戶機(jī)C希望通過防火墻F連接到局域網(wǎng)中的一個(gè)TCP服務(wù)器S。在防火墻收到來自外網(wǎng)的SYN包時(shí),它并不直接進(jìn)行轉(zhuǎn)發(fā),而是緩存在本地,再按照原來SYNCookie的機(jī)制制作好一個(gè)針對(duì)這個(gè)SYN包的SYN+ACK包,注意,這個(gè)SYN+ACK包中的ack順序號(hào)為特制的cookie值c,更重要的是這個(gè)包的的源地址被偽造成了S的地址(為了描述方便,我們這里暫時(shí)不考慮NAT等其他因素)。這樣C會(huì)接收到這個(gè)SYN+ACK包,并認(rèn)為是從S反饋回來的。于是C再響應(yīng)一個(gè)ACK包,并認(rèn)為與S的TCP連接已經(jīng)建立起來。這時(shí)防火墻F收到這個(gè)ACK包,按照前面的描述的SYN Cookie原理來檢查這個(gè)ACK中的ack順序號(hào)。如果認(rèn)為合法,F(xiàn)將本地緩存的來自C的SYN包發(fā)送給S,這時(shí)S會(huì)響應(yīng)一個(gè)SYN+ACK包到C,其中也攜帶一個(gè)seq號(hào),我們?cè)O(shè)為c`。當(dāng)然這個(gè)包不會(huì)到達(dá)C,而是由防火墻F截取,F(xiàn)根據(jù)這個(gè)包中的序列號(hào)等信息,造一個(gè)ACK包響應(yīng)到S。這時(shí)的情況是C認(rèn)為自己已經(jīng)與S建立了TCP連接;S認(rèn)為自己與C建立了TCP連接。以后的TCP數(shù)據(jù)內(nèi)容可以直接穿過防火墻F,在S和C之間交互。
SYN Cookie Firewall的工作原理,它相當(dāng)于在TCP Server與TCP Client之間實(shí)現(xiàn)了對(duì)三次握手協(xié)議的代理。第一次″三次握手″在TCP Client與防火墻之間進(jìn)行,第二次″三次握手″在防火墻與TCPServer之間。在第一次″三次握手″時(shí)使用前面介紹的SYN Cookie流程。有一個(gè)問題在進(jìn)行兩次″三次握手″時(shí)出現(xiàn)了如圖所示,進(jìn)行第一次″三次握手″后,TCP Client認(rèn)為后續(xù)數(shù)據(jù)包的seq值從c+1開始,而進(jìn)行第二次″三次握手″后,TCP Server認(rèn)為后續(xù)發(fā)來的數(shù)據(jù)包的seq值從c`+1開始,c是cookie,c`是TCP Server隨機(jī)產(chǎn)生的。c和c`幾乎不可能相等,也就是說在完成上面的兩個(gè)″三次握手″后,如果不進(jìn)行其他操作,后續(xù)從TCP Client到TCP Server的數(shù)據(jù)包都將被認(rèn)為順序號(hào)不對(duì)而被丟掉。一種補(bǔ)救方法就是在防火墻本地保存一個(gè)值,利用這個(gè)差值,在每個(gè)數(shù)據(jù)包經(jīng)過防火墻時(shí),將其seq值修改一下,這樣,后續(xù)的數(shù)據(jù)流量可以完美地在TCP Server和TCP Client之間傳輸了。
SYN Cookie可以在一定程度上緩解SYN Flood攻擊的危害,但其自身的機(jī)制也存在問題主要表現(xiàn)在如下兩方面1.超大規(guī)模的SYN Flood攻擊可導(dǎo)致防護(hù)系統(tǒng)過分忙碌,從而使SYNCookie失效,進(jìn)而導(dǎo)致防護(hù)功能失效。
2.應(yīng)用SYN Cookie以后,需要對(duì)每個(gè)TCP SYN數(shù)據(jù)包回應(yīng)SYN/ACK數(shù)據(jù)包,過多的回應(yīng)包可導(dǎo)致路由器負(fù)擔(dān)過重,從而引發(fā)更大規(guī)模的拒絕服務(wù)。
發(fā)明內(nèi)容
本發(fā)明的目的是利用網(wǎng)絡(luò)正常工作時(shí)的流量和數(shù)據(jù),逐步完善,建立數(shù)學(xué)模型,不斷生成新的、更準(zhǔn)確的數(shù)據(jù)流量統(tǒng)計(jì)狀況,用以在超大流量的拒絕服務(wù)攻擊發(fā)生時(shí),有效的保障正常的網(wǎng)絡(luò)服務(wù)的一種網(wǎng)絡(luò)數(shù)據(jù)包檢測(cè)分析的方法及系統(tǒng)。
該方法包含如下步驟a、捕獲網(wǎng)絡(luò)中的TCP連接請(qǐng)求數(shù)據(jù)包;b、對(duì)該原始報(bào)文數(shù)據(jù)進(jìn)行解析;c、記錄連接的結(jié)果的成功或失敗,以確認(rèn)數(shù)據(jù)包的有效性;d、如果此次連接請(qǐng)求成功,將全部連接信息存入知識(shí)庫,并建立索引;e、當(dāng)網(wǎng)絡(luò)流量超過預(yù)定閥值時(shí),使用知識(shí)庫索引進(jìn)行快速匹配,如發(fā)現(xiàn)知識(shí)庫中存在類似連接信息,則予以放行;f如果沒有發(fā)現(xiàn)知識(shí)庫之中有類似信息,則計(jì)算通行概率,概率高于事先約定好的固定數(shù)值時(shí),予以放行,否則進(jìn)行丟棄。
上述a步驟為拒絕服務(wù)攻擊防范系統(tǒng)的基本數(shù)據(jù)來源,即在網(wǎng)絡(luò)中捕獲原始數(shù)據(jù)。
上述b步驟為將a步驟所獲的數(shù)據(jù)按網(wǎng)絡(luò)協(xié)議進(jìn)行解析處理,因?yàn)镾YN Flood攻擊針對(duì)的是運(yùn)輸層協(xié)議TCP,所以我們并不需要解析到網(wǎng)絡(luò)的應(yīng)用層,而所述的進(jìn)行協(xié)議解析更進(jìn)一步包括如果協(xié)議為IP協(xié)議,則對(duì)解析中的協(xié)議數(shù)據(jù)進(jìn)行重組后,再進(jìn)一步繼續(xù)協(xié)議解析,以便獲得網(wǎng)絡(luò)數(shù)據(jù)的真實(shí)特征,否則的話,有可能丟掉故意對(duì)數(shù)據(jù)進(jìn)行分片以隱藏攻擊特征的惡意攻擊行為;如果協(xié)議為TCP協(xié)議,則對(duì)TCP的報(bào)文流進(jìn)行重組后,再進(jìn)一步繼續(xù)協(xié)議解析,以便獲得TCP的連接狀態(tài)和流重組以后的數(shù)據(jù)。
上述c步驟為將步驟b所得到的解析后的數(shù)據(jù)進(jìn)行處理,根據(jù)預(yù)先設(shè)定的規(guī)則,對(duì)網(wǎng)絡(luò)數(shù)據(jù)包中的連接請(qǐng)求進(jìn)行校驗(yàn),這個(gè)過程包含了對(duì)于TCP會(huì)話的全程監(jiān)控,需要建立TCP有限狀態(tài)機(jī),對(duì)連接狀態(tài)的變化和數(shù)據(jù)的傳送進(jìn)行記錄,需要對(duì)如下狀態(tài)進(jìn)行記錄和分析ClosedListenSYN ReceivedSYN SentEstablishedTime waitClose wait上述d步驟記錄成功連接的信息,包括發(fā)起連接的一方和接收連接的一方的IP地址,連接的次數(shù),單位時(shí)間內(nèi)連接的頻率,如果長時(shí)間內(nèi)沒有連接發(fā)生,則連接次數(shù)不斷衰減,直至減為0,則知識(shí)庫會(huì)自動(dòng)刪除這條連接信息,這樣,總是保證知識(shí)庫中記錄的是發(fā)生頻率最高的連接,另外對(duì)于ip地址采用B-樹的方法編寫多級(jí)索引,以便于快算查找。
上述e步驟為網(wǎng)絡(luò)流量超過閥值時(shí),每個(gè)網(wǎng)絡(luò)連接請(qǐng)求數(shù)據(jù)包必須通過知識(shí)庫的檢索確認(rèn)其有效性,如果知識(shí)庫中存在相同的連接信息,則予以放行否則進(jìn)入步驟f上述f步驟為根據(jù)前一階段的數(shù)據(jù)流量統(tǒng)計(jì)得出當(dāng)前網(wǎng)絡(luò)數(shù)據(jù)包的有效性概率,在根據(jù)此概率決定該數(shù)據(jù)包放行還是丟棄。
該系統(tǒng)包含有數(shù)據(jù)捕獲模塊用于捕獲網(wǎng)絡(luò)中的原始報(bào)文數(shù)據(jù)包;協(xié)議解析模塊用于對(duì)該原始報(bào)文數(shù)據(jù)包進(jìn)行協(xié)議解析;網(wǎng)絡(luò)連接狀態(tài)監(jiān)視模塊監(jiān)視所有網(wǎng)絡(luò)連接的數(shù)據(jù)傳輸狀況;網(wǎng)絡(luò)連接有效性判定模塊判定網(wǎng)絡(luò)連接是否為正常有效;知識(shí)庫管理模塊用于存儲(chǔ)和查找正常網(wǎng)絡(luò)連接的相關(guān)信息,并建立快速查找索引;網(wǎng)絡(luò)數(shù)據(jù)流量監(jiān)視模塊監(jiān)視當(dāng)前網(wǎng)絡(luò)流量是否超過預(yù)定閥值.
動(dòng)態(tài)數(shù)據(jù)流量分析和控制模塊用以根據(jù)前一階段網(wǎng)絡(luò)流量狀況推算當(dāng)前網(wǎng)絡(luò)數(shù)據(jù)包的有效性概率,將網(wǎng)絡(luò)流量始終控制在某一范圍之內(nèi)。
本發(fā)明具有以下優(yōu)點(diǎn)1、在超大流量下可以有效的減少SYN Cookie機(jī)制的回包數(shù)量,減少系統(tǒng)負(fù)荷,大大提高系統(tǒng)的負(fù)載能力。
2、減少回包數(shù)量還可以減少邊緣方路由器的負(fù)擔(dān),避免路由器因?yàn)樨?fù)荷太重而無法正常工作。
3、最大限度的利用了系統(tǒng)資源,按照最大概率的原則,盡可能的保障了超大流量攻擊下用戶的訪問.
圖1是網(wǎng)絡(luò)數(shù)據(jù)包有效性判定系統(tǒng)流程圖。
具體實(shí)現(xiàn)方式系統(tǒng)工作的環(huán)境本系統(tǒng)工作在百兆或千兆網(wǎng)絡(luò)的以太網(wǎng)絡(luò)環(huán)境,通過本系統(tǒng)的百兆或千兆網(wǎng)卡能夠獲取網(wǎng)絡(luò)中的以太報(bào)文數(shù)據(jù)包。
系統(tǒng)工作的方法(見圖1)將系統(tǒng)獲取的網(wǎng)絡(luò)數(shù)據(jù)按標(biāo)準(zhǔn)的以太數(shù)據(jù)結(jié)構(gòu)、IP數(shù)據(jù)結(jié)構(gòu)、TCP/UDP數(shù)據(jù)結(jié)構(gòu),并進(jìn)行TCP的會(huì)話查找,每條會(huì)話相對(duì)應(yīng)的源和目的MAC地址、源和目的IP地址、源和目的端口地址、連接次數(shù)等。
將上述所獲的網(wǎng)絡(luò)連接信息放入網(wǎng)絡(luò)連接知識(shí)庫中,該緩沖區(qū)按照索引標(biāo)識(shí)、源和目的地址進(jìn)行合并存放,即相同的源和目的地址將該連接的發(fā)生次數(shù)進(jìn)行累計(jì)計(jì)算。
當(dāng)某一連接被釋放,主動(dòng)要求釋放連接的一端發(fā)送TCP FIN數(shù)據(jù)包,監(jiān)視整個(gè)連接的釋放過程,如釋放正常完成,在知識(shí)庫中找到相對(duì)應(yīng)的TCP會(huì)話,將連接發(fā)生的次數(shù)減1.這樣可以始終保證知識(shí)庫中存放的是發(fā)生頻率最高的連接。
該算法會(huì)以1秒鐘為單位時(shí)間,進(jìn)行流量的統(tǒng)計(jì),如果上1秒鐘的流量大于事先約定的閥值,那么立即進(jìn)入流量識(shí)別模式,如果連接請(qǐng)求可以在知識(shí)庫搜索到,則直接放行,并記錄放行的數(shù)據(jù)包數(shù),否則以上1秒鐘的流量作為樣本,計(jì)算放行的概率。
具體算法如下假設(shè)預(yù)定閥值為M,上1秒鐘包數(shù)統(tǒng)計(jì)為N,那么每個(gè)網(wǎng)絡(luò)數(shù)據(jù)包的通過概率為M/N,對(duì)當(dāng)前的每個(gè)網(wǎng)絡(luò)數(shù)據(jù)包進(jìn)行編號(hào)(1-∞),假設(shè)當(dāng)前網(wǎng)絡(luò)數(shù)據(jù)包的個(gè)數(shù)為A,則放行的包數(shù)應(yīng)該為A*M/N,用這個(gè)數(shù)字減去已經(jīng)放行的數(shù)據(jù)包數(shù)減去這個(gè)值,所得大于1,則放過當(dāng)前數(shù)據(jù)包,如果小于1,則當(dāng)前數(shù)據(jù)包丟棄。
權(quán)利要求
1.一種網(wǎng)絡(luò)數(shù)據(jù)包有效性判定方法,其特征在于該方法包含如下步驟a、捕獲網(wǎng)絡(luò)中的TCP連接請(qǐng)求原始數(shù)據(jù)包;b、對(duì)捕獲網(wǎng)絡(luò)中的TCP連接請(qǐng)求原始數(shù)據(jù)包進(jìn)行解析;c、根據(jù)預(yù)先設(shè)定的規(guī)則,對(duì)網(wǎng)絡(luò)數(shù)據(jù)包中的連接請(qǐng)求進(jìn)行校驗(yàn),這個(gè)過程包含了對(duì)于TCP會(huì)話的全程監(jiān)控,需要建立TCP有限狀態(tài)機(jī),記錄連接的結(jié)果(成功或失敗)以確認(rèn)數(shù)據(jù)包的有效性;d、如果此次連接請(qǐng)求成功,將全部連接信息存入知識(shí)庫,并建立索引;e、當(dāng)網(wǎng)絡(luò)流量超過預(yù)定閥值時(shí),使用知識(shí)庫索引進(jìn)行快速匹配,如發(fā)現(xiàn)知識(shí)庫中存在類似連接信息,則予以放行;f 如果沒有發(fā)現(xiàn)知識(shí)庫之中有類似信息,則計(jì)算通行概率,概率高于事先約定好的固定數(shù)值時(shí),予以放行,否則進(jìn)行丟棄。
2.根據(jù)權(quán)利要求1所述的網(wǎng)絡(luò)數(shù)據(jù)包有效性判定方法,其特征在于對(duì)原始報(bào)文數(shù)據(jù)進(jìn)行解析包括如果協(xié)議為IP協(xié)議,則對(duì)解析中的協(xié)議數(shù)據(jù)進(jìn)行重組后,再進(jìn)一步繼續(xù)協(xié)議解析,獲得網(wǎng)絡(luò)數(shù)據(jù)的真實(shí)特征;如果協(xié)議為TCP協(xié)議,則對(duì)TCP的報(bào)文流進(jìn)行重組后,再進(jìn)一步繼續(xù)協(xié)議解析,獲得TCP的連接狀態(tài)和流重組以后的數(shù)據(jù)。
3.根據(jù)權(quán)利要求1所述的網(wǎng)絡(luò)數(shù)據(jù)包有效性判定方法,其特征在于對(duì)連接狀態(tài)的變化和數(shù)據(jù)的傳送進(jìn)行記錄和分析包括ClosedListenSYN ReceivedSYN SentEstablishedTime waitClose wait。
4.根據(jù)權(quán)利要求1所述的網(wǎng)絡(luò)數(shù)據(jù)包有效性判定方法,其特征在于存入知識(shí)庫的信息包括發(fā)起連接的一方和接收連接的一方的IP地址,連接的次數(shù),單位時(shí)間內(nèi)連接的頻率,如果長時(shí)間內(nèi)沒有連接發(fā)生,則連接次數(shù)不斷衰減,直至減為0,則知識(shí)庫會(huì)自動(dòng)刪除這條連接信息,保證知識(shí)庫中記錄的是發(fā)生頻率最高的連接,ip地址采用B-樹的方法編寫多級(jí)索引。
5.根據(jù)權(quán)利要求1所述的網(wǎng)絡(luò)數(shù)據(jù)包有效性判定方法,其特征在于計(jì)算通行概率的方是假設(shè)預(yù)定閥值為M,上1秒鐘數(shù)據(jù)包數(shù)統(tǒng)計(jì)為N,那么每個(gè)網(wǎng)絡(luò)數(shù)據(jù)包的通過概率為M/N,對(duì)當(dāng)前的每個(gè)網(wǎng)絡(luò)數(shù)據(jù)包進(jìn)行編號(hào)(1-∞),假設(shè)當(dāng)前網(wǎng)絡(luò)數(shù)據(jù)包的個(gè)數(shù)為A,則放行的包數(shù)應(yīng)該為A*M/N,用這個(gè)數(shù)字減去已經(jīng)放行的數(shù)據(jù)包數(shù)減去這個(gè)值,所得大于1,則放過當(dāng)前數(shù)據(jù)包,如果小于1,則當(dāng)前數(shù)據(jù)包丟棄。
6.一種網(wǎng)絡(luò)數(shù)據(jù)包有效性判定系統(tǒng),該系統(tǒng)包括一計(jì)算機(jī)主機(jī),一網(wǎng)絡(luò)服務(wù)器,包括有顯示單元的多個(gè)終端服務(wù)器,數(shù)據(jù)儲(chǔ)存裝置,以及輸入裝置,打印輸出裝置,其特征在于該系統(tǒng)還包含有數(shù)據(jù)捕獲單元用于捕獲網(wǎng)絡(luò)中的原始報(bào)文數(shù)據(jù)包;協(xié)議解析單元用于對(duì)該原始報(bào)文數(shù)據(jù)包進(jìn)行協(xié)議解析;網(wǎng)絡(luò)連接狀態(tài)監(jiān)視單元監(jiān)視所有網(wǎng)絡(luò)連接的數(shù)據(jù)傳輸狀況;網(wǎng)絡(luò)連接有效性判定單元判定網(wǎng)絡(luò)連接是否為正常有效知識(shí)庫管理單元用于存儲(chǔ)和查找正常網(wǎng)絡(luò)連接的相關(guān)信息,并建立快速查找索引;網(wǎng)絡(luò)數(shù)據(jù)流量監(jiān)視單元監(jiān)視當(dāng)前網(wǎng)絡(luò)流量是否超過預(yù)定閥值;動(dòng)態(tài)數(shù)據(jù)流量分析和控制單元用以根據(jù)前一階段網(wǎng)絡(luò)流量狀況推算當(dāng)前網(wǎng)絡(luò)數(shù)據(jù)包的有效性概率,將網(wǎng)絡(luò)流量始終控制在某一范圍之內(nèi)。
全文摘要
本發(fā)明涉及一種網(wǎng)絡(luò)數(shù)據(jù)包檢測(cè)分析的方法及系統(tǒng),特點(diǎn)是捕獲網(wǎng)絡(luò)中的TCP連接請(qǐng)求數(shù)據(jù)包;對(duì)該原始報(bào)文數(shù)據(jù)進(jìn)行解析;記錄連接的結(jié)果以確認(rèn)數(shù)據(jù)包的有效性;如果此次連接請(qǐng)求成功,將全部連接信息存入知識(shí)庫,并建立索引;當(dāng)網(wǎng)絡(luò)流量超過預(yù)定閥值時(shí),使用知識(shí)庫索引進(jìn)行快速匹配,如發(fā)現(xiàn)知識(shí)庫中存在類似連接信息,則予以放行;如果沒有發(fā)現(xiàn)知識(shí)庫之中有類似信息,則計(jì)算通行概率,概率高于事先約定好的固定數(shù)值時(shí),予以放行,否則進(jìn)行丟棄,在超大流量下可以有效的減少回包數(shù)量,減少系統(tǒng)負(fù)荷,提高系統(tǒng)的負(fù)載能力,減少邊緣方路由器的負(fù)擔(dān),避免路由器因?yàn)樨?fù)荷太重而無法正常工作,最大限度的利用了系統(tǒng)資源,按照最大概率的原則,盡可能的保障了超大流量攻擊下用戶的訪問。
文檔編號(hào)H04L29/06GK1741473SQ20051008635
公開日2006年3月1日 申請(qǐng)日期2005年9月5日 優(yōu)先權(quán)日2005年9月5日
發(fā)明者劉明巖, 許世強(qiáng) 申請(qǐng)人:北京啟明星辰信息技術(shù)有限公司