專利名稱::Linux基于流的過濾系統(tǒng)的設(shè)計方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及Linux基于流的過濾系統(tǒng)的設(shè)計方法,屬于網(wǎng)絡(luò)安全
技術(shù)領(lǐng)域:
。
背景技術(shù):
:隨著Internet網(wǎng)絡(luò)的越來越盛行,網(wǎng)絡(luò)安全問題也越來越重要,為此人們研究了多種過濾系統(tǒng)來保障網(wǎng)絡(luò)安全運行。目前多種操作系統(tǒng),包括Unix(linux)、網(wǎng)絡(luò)操作系統(tǒng)(CISCOIOS)等等,都提供了一種包過濾的方法,即檢查每個流經(jīng)設(shè)備的數(shù)據(jù)包,根據(jù)預先設(shè)定的策略檢查包的內(nèi)容進而判斷是否丟棄該數(shù)據(jù)包;由于需要對每個數(shù)據(jù)包進行檢查,對系統(tǒng)性能的消耗也非常大,尤其面臨千兆、萬兆網(wǎng)絡(luò)時,包過濾可能成為系統(tǒng)瓶頸。在mips600MHzCPU1Gmemory的linux上進行過試驗,當iptables規(guī)則達到一千條時,系統(tǒng)響應(yīng)非常慢甚至不可用。由于軟件實現(xiàn)的包過濾對性能的影響極大,故大部分網(wǎng)絡(luò)防火墻都是用專有硬件實現(xiàn),其成本非常高,對于一般規(guī)模的企業(yè)是無法接受的。包過濾檢査了每一個數(shù)據(jù),即認為各個數(shù)據(jù)包之間是沒有聯(lián)系的,前一個包是否丟棄、放行,對于后一個包沒有什么影響,但實際上網(wǎng)絡(luò)上的數(shù)據(jù)流都是有聯(lián)系的,比如某個時刻用戶A訪問www.g.cn網(wǎng)站,則這個應(yīng)用交互的數(shù)據(jù)流都是HTTP報文,而且IP和端口都是固定的,如果網(wǎng)管人員只想對應(yīng)用、用戶進行過濾,則這個行為的所有數(shù)據(jù)包都有相同的過濾條件,可以將這些包稱為一個流,即如果流內(nèi)第一個包被丟棄,則流內(nèi)的其他包也要被丟棄,第一個包被接受,則流內(nèi)的其他包也要被接受。如果對一個包進行分流的操作時間遠遠小于對該包進行過濾檢查的時間,則這種想法是可行的。而實際上Linux內(nèi)核已經(jīng)對包進行分流操作了,這就是conntmck模塊所做的,即不管系統(tǒng)內(nèi)是否有過濾條件,每一個包都要進行入流操作。因此判斷流行為可以極大的提高系統(tǒng)性能,舉例來說,一個網(wǎng)絡(luò)行為流可能包含多個數(shù)據(jù)包,少則幾個,多則幾百個,之前的包過濾系統(tǒng)需要査看所有的包,而基于流的過濾系統(tǒng)一般只需要檢査第一個數(shù)據(jù)包,相比包過濾,可以提升幾倍到幾百倍的效率。
發(fā)明內(nèi)容本發(fā)明針對目前包過濾系統(tǒng)的不足,提供一種Linux基于流的過濾系統(tǒng)的設(shè)計方法,改善系統(tǒng)的性能。Linux基于流的過濾系統(tǒng)的設(shè)計方法,特點是在流的定義中增加一個屬性"流行為",表示該流是需要被丟棄、接受,還是需要進行包過濾;在流的定義中增加一個屬性"過濾策略是否修改標志",表示在處理該流時過濾策略是否修改,如果修改需要響應(yīng);提煉過濾策略中的相同部分,如果不需要對流進行應(yīng)用層協(xié)議進行過濾,則不需要進行協(xié)議分析判斷該報文的行為,被丟棄的包不需要進行協(xié)議分析;如果需要應(yīng)用層的過濾,則在協(xié)議分析之后進行流過濾;因此根據(jù)過濾策略的不同,流過濾應(yīng)用于不同的地方;當過濾條件改變時,已經(jīng)存在的流進行處理,即不根據(jù)該流行為進行判斷。進一步地,上述的Linux基于流的過濾系統(tǒng)的設(shè)計方法,具體包括以下步驟——①輸入為需要過濾的報文,首先獲取對應(yīng)的流(linuxconntrack),如果獲取不到則接受報文不處理,否則按流標志處理,如果標志等于全局標志,表示該流的生命周期內(nèi)過濾策略沒有修改,直接取流行為,不需要進行包過濾;如果標志不等于全局標志,則設(shè)置流行為為"繼續(xù)過濾",下一步對該報文進行包過濾,并將流標志置為全局標志;②當需要進行包過濾時,獲取包過濾匹配的結(jié)果;當不需要進行包過濾時,直接取流行為;如果為接受,則設(shè)置流行為為"接受"并接受該包,如果為丟棄,則置流行為為"丟棄"并丟棄該包,如果沒有匹配到,即查看應(yīng)用協(xié)議是否需要深度分析,是則接受報文且不作任何操作,否則獲取全局默認動作,并按該動作置上流行為,同時決定報文接受還是丟棄。本發(fā)明技術(shù)方案突出的實質(zhì)性特點和顯著的進步主要體現(xiàn)在1)提出流過濾的思想,極大的提高了過濾模塊的性能;2)響應(yīng)過濾策略的實時修改,修改之后的過濾策略立即生效;3)提出組處理的方式,將有相同行為的包統(tǒng)一處理,以替換原先需要的每個包的處理;比如在路由轉(zhuǎn)發(fā)時,相同流的出入設(shè)備都是相同的,讀者可以通過該發(fā)明提出基于流的路由轉(zhuǎn)發(fā)方案,以省去每個包的路由過程。下面結(jié)合附圖對本發(fā)明技術(shù)方案作進一步說明圖1:流過濾流程示意圖2:包過濾流程示意圖3:過濾策略修改流程示意圖。具體實施例方式利用Linux現(xiàn)有的流結(jié)構(gòu),提出了基于流的過濾思想,將包過濾改進為流過濾,極大的提高了系統(tǒng)性能。增加流行為的定義,表示該流的處理方法,有"丟棄"、"接受"、"繼續(xù)過濾"三種;每個流中,增加一個標志位表示當前過濾策略是否修改;檢查包對應(yīng)的流,如果其標志為"過濾策略已經(jīng)修改",則清空該標志,并將流行為置為"繼續(xù)過濾";否則根據(jù)流行為進行操作;按照流行為進行操作,如果為"繼續(xù)過濾"則繼續(xù)之后的過濾步驟;如果為"接受",則不需過濾直接接受該包;如果為"丟棄"則不需過濾直接丟包;當過濾條件改變時,通知過濾模塊,置上當前所有的流的標志位,表示當前過濾策略己經(jīng)修改,即流需要重新過濾,實時響應(yīng)過濾條件的改變。在流的定義中增加一個屬性,"流行為",表示該流是需要被丟棄、接受、還是需要進行包過濾;在流的定義中增加一個屬性,"過濾策略是否修改標志",表示在處理該流時過濾策略是否修改,如果修改需要響應(yīng);提煉過濾策略中的相同部分,如果不需要對流進行應(yīng)用層協(xié)議進行過濾,則不需要進行協(xié)議分析就可以判斷該報文的行為,那些被丟棄的包就不需要進行協(xié)議分析;如果需要應(yīng)用層的過濾,則需要在協(xié)議分析之后進行流過濾;因此根據(jù)過濾策略的不同,流過濾需要應(yīng)用于不同的地方。當過濾條件改變時,那些已經(jīng)存在的流需要特殊處理,即不能根據(jù)該流行為來判斷,否則會出現(xiàn)異常情況,比如QQ流量一般情況下是一個流,如果之前的行為是允許,而現(xiàn)在需要改變?yōu)榻梗瑒t該流需要重新進行過濾,重新設(shè)置流行為。在流定義中加入兩個元素,一是流標志,一是流行為,流標志表示過濾策略是否修改,這里采用一個全局標志來表示當前的過濾策略是否修改,每修改一次策略將該標志加1,而每一個流的流標志初始化為該全局標志;流行為有三個值,"丟棄","接受","繼續(xù)過濾",初始化為"繼續(xù)過濾"。具體流程為①輸入為需要過濾的報文,首先獲取對應(yīng)的流(linuxconntrack),如果獲取不到則接受報文不處理,否則按流標志處理,如果標志等于全局標志,表示該流的生命周期內(nèi)過濾策略沒有修改,直接取流行為,不需要進行包過濾;如果標志不等于全局標志,則設(shè)置流行為為"繼續(xù)過濾",下一步對該報文進行包過濾,并將流標志置為全局標志;②當需要進行包過濾時,獲取包過濾匹配的結(jié)果;當不需要進行包過濾時,直接取流行為;如果為接受,則設(shè)置流行為為"接受"并接受該包,如果為丟棄,則置流行為為"丟棄"并丟棄該包,如果沒有匹配到,即査看應(yīng)用協(xié)議是否需要深度分析,是則接受報文且不作任何操作,否則獲取全局默認動作,并按該動作置上流行為,同時決定報文接受還是丟棄。圖1為流過濾示意圖,輸入為需要過濾的報文,首先獲取對應(yīng)的流,如果獲取不到則接受報文不處理,否則按流標志處理,如果標志等于全局標志,表示該流的生命周期內(nèi)過濾策略沒有修改,直接取流行為,如果標志不等于全局標志,則置流行為為"繼續(xù)過濾",并將流標志置為全局標志;按流行為進行處理,如果為接受則接受該報文,丟棄則丟棄該報文,否則進入包處理流程,見圖2;圖2為包過濾示意圖,獲取包過濾匹配的結(jié)果,如果為接受,則置流行為為"接受"并接受該包,如果為丟棄,則置流行為為"丟棄"并丟棄該包,如果沒有匹配到,需要査看應(yīng)用協(xié)議是否需要深度分析,是則接受報文且不作任何操作;否則獲取全局默認動作,并按該動作置上流行為,同時決定報文接受還是丟棄。圖3為策略修改流程,此處僅涉及流過濾部分,該部分很簡單,只需要在策略修改完成最后,遞增全局策略標志即可,每個流通過比較該標志來確定該流的生命周期內(nèi)過濾策略是否修改。雖然流過濾的性能遠大于包過濾,但在某些場景下只能使用包過濾,譬如需要應(yīng)用協(xié)議內(nèi)容匹配的,只能采取包過濾方案;如果過濾策略頻繁改變,則流過濾方案也退化成了包過濾。如果過濾策略不會經(jīng)常修改,在非內(nèi)容過濾時,都可以采用流過濾方案。在政府機關(guān)、企業(yè)這種環(huán)境下,不會頻繁的修改過濾策略,應(yīng)用流過濾可以極大的提高系統(tǒng)性能。另外,在應(yīng)用時還要査看具體場景,譬如需要應(yīng)用協(xié)議內(nèi)容匹配的,只能采取包過濾方案;如果過濾策略頻繁改變,則流過濾方案也退化成了包過濾。綜上所述,本發(fā)明提出了一種新型的過濾模型,通常情況下流過濾的效率遠大于原始的包過濾;流過濾的思想,極大的提高了過濾模塊的性能;響應(yīng)過濾策略的實時修改,修改之后的過濾策略立即生效;提出組處理的方式,將有相同行為的包統(tǒng)一處理,以替換原先需要的每個包的處理;比如在路由轉(zhuǎn)發(fā)時,相同流的出入設(shè)備都是相同的,讀者可以通過該發(fā)明提出基于流的路由轉(zhuǎn)發(fā)方案,以省去每個包的路由過程。需要理解到的是上述說明并非是對本發(fā)明的限制,在本發(fā)明構(gòu)思范圍內(nèi),所進行的添加、變換、替換等,也應(yīng)屬于本發(fā)明的保護范圍。權(quán)利要求1.Linux基于流的過濾系統(tǒng)的設(shè)計方法,其特征在于在流的定義中增加一個屬性“流行為”,表示該流是需要被丟棄、接受,還是需要進行包過濾;在流的定義中增加一個屬性“過濾策略是否修改標志”,表示在處理該流時過濾策略是否修改,如果修改需要響應(yīng);提煉過濾策略中的相同部分,如果不需要對流進行應(yīng)用層協(xié)議進行過濾,則不需要進行協(xié)議分析判斷該報文的行為,被丟棄的包不需要進行協(xié)議分析;如果需要應(yīng)用層的過濾,則在協(xié)議分析之后進行流過濾;因此根據(jù)過濾策略的不同,流過濾應(yīng)用于不同的地方;當過濾條件改變時,已經(jīng)存在的流進行處理,即不根據(jù)該流行為進行判斷。2.根據(jù)權(quán)利要求1所述的Limix基于流的過濾系統(tǒng)的設(shè)計方法,其特征在于具體包括以下步驟——①輸入為需要過濾的報文,首先獲取對應(yīng)的流,如果獲取不到則接受報文不處理,否則按流標志處理,如果標志等于全局標志,表示該流的生命周期內(nèi)過濾策略沒有修改,直接取流行為,不需要進行包過濾;如果標志不等于全局標志,則設(shè)置流行為為"繼續(xù)過濾",下一步對該報文進行包過濾,并將流標志置為全局標志;②當需要進行包過濾時,獲取包過濾匹配的結(jié)果;當不需要進行包過濾時,直接取流行為;如果為接受,則設(shè)置流行為為"接受"并接受該包,如果為丟棄,則置流行為為"丟棄"并丟棄該包,如果沒有匹配到,即査看應(yīng)用協(xié)議是否需要深度分析,是則接受報文且不作任何操作,否則獲取全局默認動作,并按該動作置上流行為,同時決定報文接受還是丟棄。全文摘要本發(fā)明提供一種Linux基于流的過濾系統(tǒng)的設(shè)計方法,在流的定義中增加一個屬性“流行為”,表示該流是需要被丟棄、接受,還是需要進行包過濾;在流的定義中增加一個屬性“過濾策略是否修改標志”,表示在處理該流時過濾策略是否修改,如果修改需要響應(yīng);提煉過濾策略中的相同部分,如果不需要對流進行應(yīng)用層協(xié)議進行過濾,則不需要進行協(xié)議分析判斷該報文的行為,被丟棄的包不需要進行協(xié)議分析;如果需要應(yīng)用層的過濾,則在協(xié)議分析之后進行流過濾;因此根據(jù)過濾策略的不同,流過濾應(yīng)用于不同的地方;當過濾條件改變時,已經(jīng)存在的流進行處理,即不根據(jù)該流行為進行判斷。本發(fā)明提出流過濾的思想,極大的提高了過濾模塊的性能。文檔編號H04L12/24GK101605127SQ20091003150公開日2009年12月16日申請日期2009年4月22日優(yōu)先權(quán)日2009年4月22日發(fā)明者劉繼明,王東泉,煒謝申請人:網(wǎng)經(jīng)科技(蘇州)有限公司