王欣+++徐智+++黃其新
【 摘 要 】 傳統識別方法難以滿足現實網絡環境的實際需要。文章利用協議的端口和特征串雙重特征進行識別,并且根據實際的網絡統計所需要識別協議的真實流量,正確化簡正則表達式來實現對協議識別的加速。結果證明,與L7-filter正則表達式識別方法比較,采用方法能有效降低資源消耗和匹配時間,提高識別率。
【 關鍵詞 】 協議識別;正則表達式;特征串
1 引言
快速準確地對網絡進行流量控制、網絡計費及內容過濾識別是當今計算機網絡發展面臨的重要問題,這對政府管理部門、網絡管理員、運營商等都有十分重要的意義。協議識別技術解決了這一問題,尤其在網絡安全監控領域,通過協議識別技術對捕獲的數據包進行分析,判斷協議類型,分析其特征,從而在入侵檢測或網絡攻擊等方面起到很大作用。本文在對傳統識別方法分析的基礎上,以識別正確率高、速度快、算法復雜度小為基本原則,提出了一種基于數據分類和正則表達式匹配的應用層協議識別方法。
2 傳統的協議識別算法
2.1 基于端口的協議識別算法
這種識別算法使用IANA規定的固定端口號來進行相應的應用層協議識別,僅能識別固定端口的應用層協議識別率高。但是大量的應用層協議為了避免識別, 逃避防火墻的檢查,使用隨機端口進行通信。大量涌現的新協議都不在IANA中注冊其端口號, 因此算法所能識別的協議在總協議數量中所占的比重越來越少,已不能適應于當前網絡環境。該算法簡單, 消耗系統資源少,時空復雜度是所有算法中最低的。
2.2 基于特征串的協議識別算法
這種識別算法是對檢測到的每一個數據包按照特征串進行搜索,和應用層協議中出現的多個特征串進行精確匹配,此方式在所有識別算法中準確率最高。由于需要逐報文的匹配所有協議的特征以及額外的存儲報文的負載部分,該類算法的時空復雜度是目前所有算法中最高的,并且隨著待識別協議數量的增長而增長。正則表達式是當前比較流行的特征串匹配語言,利用正則表達式進行協議識別可以將原來復雜且繁瑣的報文數據特征串匹配過程變成可自動處理的工作。該類算法通常只被用在需準確識別數量較少的協議時,且需要有相當的工作量,無法應用在高速網絡環境下進行大規模的協議識別。
2.3 基于行為特征的協議識別算法
這種識別方法是利用協議規范的不同所造成的流特征差異區別各個協議。它需要有一個訓練樣本數據集作為輸入,構建一個分類器或者分類模型,該模型能夠把網絡上的數據流映射到指定類別中的一種。該方法較端口識別方法有較高的準確性,較特征串識別方法較小的復雜度,但是由于判別算法不成熟,識別不夠細致,制約了這種識別方法的使用。
3 基于端口與正則表達式匹配的應用層協議識別方法
由于傳統識別方法難以滿足現實網絡環境的實際需要,本文提出利用協議的端口和特征串雙重特征進行識別,并且根據實際的網絡中統計所需要識別協議的真實流量,正確化簡正則表達式來實現對協議識別的加速。在此基礎上按幾個步驟完成識別:第一步基于端口的識別方式,進行初步識別;第二步采用正則表達式的識別方法,將其轉化成DFA完成匹配;第三步如果匹配成功,識別結束。如果不成功,說明該協議采用的隨機端口,放棄第一步篩選模式,轉入第二步,直至識別成功。
3.1 基于端口的數據流初步識別
利用端口進行應用層協議識別,主要原理就是因為存在公認端口和注冊端口,從端口0到1023對應著因特網上常見的服務和應用程序,有確切的定義。HTTP(Web服務器)、POP3/SMTP(電子郵件服務器)以及Telnet等常用應用程序通常使用這些端口號。一旦檢測到網絡中具有這些端口的流量,即可識別出其對應的協議。但是由于很大一部分協議都使用隨機端口,因此,初步識別的正確性要在下面的識別過程中進一步證實。
3.2 正則表達式協議識別方法
正則表達式(Regular Expression)作為一種表示語言,定義了自己的一套描述方式,來描述各種的字符類,由普通字符以及特殊字符組成的字符模式,然后將字符模式與所搜索的字符串進行匹配。典型的使用正則表達式進行協議識別的軟件為L-7 Filter,它是基于Linux的Netfilter/Iptables上一個開放源代碼的軟件,實現了應用層協議的識別。它通過對報文的依次解封,直接提取應用層數據內容,利用提供的正則表達式對提取出的數據內容進行匹配,從而識別協議類型。為了降低協議識別的假陽性及提高識別正確性,L-7 Filter也在不斷更新其正則表達式模式。
正則表達式的匹配是建立在自動機的理論基礎上的,正則引擎會按照表達式構建相應的自動機。若輸入一串文本之后,自動機抵達了接受狀態,則這串文本可以匹配用戶指定的正則表達式,否則為不能匹配。正則表達式通常用有限自動機完成匹配,按照轉移函數的不同,有限自動機表示有非確定的有窮狀態自動機(NFA)和確定的有窮狀態自動機(DFA)兩種。
在L-7 Filter中提供了常見應用層協議的正則表達式以及正則式模式編譯轉換成NFA和DFA的實現。我們通過實驗證明流量達到90Mbps時,對幾十種常見協議全部進行NFA匹配,L7-filter系統接近死機。造成系統性能低下的原因主要為使用NFA匹配引擎進行過多的正則表達式匹配。正則表達式匹配引擎必須滿足兩個條件:一是足夠快的處理速度,即每個輸入字符只帶來很少的狀態轉移;二是為每個流維護的中間狀態盡可能少,DFA引擎完全滿足這兩個條件。
因此在系統中,首先通過端口的方法進行協議識別,通過使用基于DFA匹配引擎的正則表達式匹配進行協議識別,這樣不僅能提高系統準確性,還能夠加快協議識別速度。
3.3 正則表達式的簡化
正則表達式的正確性是保證基于正則表達式的應用層協議識別準確率的前提,它在很大程度上影響協議識別的效率。我們也根據實際環境,通過在實際的網絡中統計所需要識別協議的真實流量,修改部分正則表達式以滿足自己的需要,同時也達到了減小DFA的數目和資源消耗的目的。部分協議正則表達式修改示例見表1。
4 實驗結果
本文采用DARPA2000的數據集進行測試,總大小為79M,總報文為394096個。利用測試數據集得到的測試結果如表所示,端口與正則表達式匹配雙重方法進行識別加速,對與Linux的L-7 filter識別結果進行對比見表2。采用本文識別方法比L-7 filter節省了46%的平均消耗時間和38.9% 的平均消耗空間,并且識別率也有提高。
5 結束語
針對傳統協議識別技術的局限性,提出了一種基于端口和正則表達式的雙重特征協議識別方法,并根據網絡中所需要識別協議的真實流量,合理的簡化其正則表達式,基于DFA匹配引擎實現協議的識別過程。實驗證明,該文提出的識別可以在減少系統消耗和匹配時間的基礎上,提高協議的識別效率,具有較好的可用性。
參考文獻
[1] 陳亮,龔儉,徐選.基于特征串的應用層協議識別.計算機工程與應用,2006,24(4):16~19.
[2] Jeffrey E.F.Freidl. Mastering Regular Expressioin. CA:O`Reilly Media,Inc.,2006.
[3] 正則表達式參考文檔[EB/OL]. http://www.regexlab.com/zh/regref.htm.
[4] Wiki protocol info, http://www.protocolinfo.org/wiki/Main_page.
[5] Application Layer Packet Classifier for Linux, http://L7-filter.sourceforge.net.
作者簡介:
王欣(1981-),女,遼寧葫蘆島人,碩士研究生,講師;主要研究方向和關注領域:智能控制、計算機網絡控制。
徐智(1981-),男,南京工業大學,碩士研究生,實驗師;主要研究方向和關注領域:工業自動化、控制理論與控制工程。
黃其新(1980-),女,河海大學,碩士研究生,講師;主要研究方向和關注領域:電力電子與電力傳動。endprint
【 摘 要 】 傳統識別方法難以滿足現實網絡環境的實際需要。文章利用協議的端口和特征串雙重特征進行識別,并且根據實際的網絡統計所需要識別協議的真實流量,正確化簡正則表達式來實現對協議識別的加速。結果證明,與L7-filter正則表達式識別方法比較,采用方法能有效降低資源消耗和匹配時間,提高識別率。
【 關鍵詞 】 協議識別;正則表達式;特征串
1 引言
快速準確地對網絡進行流量控制、網絡計費及內容過濾識別是當今計算機網絡發展面臨的重要問題,這對政府管理部門、網絡管理員、運營商等都有十分重要的意義。協議識別技術解決了這一問題,尤其在網絡安全監控領域,通過協議識別技術對捕獲的數據包進行分析,判斷協議類型,分析其特征,從而在入侵檢測或網絡攻擊等方面起到很大作用。本文在對傳統識別方法分析的基礎上,以識別正確率高、速度快、算法復雜度小為基本原則,提出了一種基于數據分類和正則表達式匹配的應用層協議識別方法。
2 傳統的協議識別算法
2.1 基于端口的協議識別算法
這種識別算法使用IANA規定的固定端口號來進行相應的應用層協議識別,僅能識別固定端口的應用層協議識別率高。但是大量的應用層協議為了避免識別, 逃避防火墻的檢查,使用隨機端口進行通信。大量涌現的新協議都不在IANA中注冊其端口號, 因此算法所能識別的協議在總協議數量中所占的比重越來越少,已不能適應于當前網絡環境。該算法簡單, 消耗系統資源少,時空復雜度是所有算法中最低的。
2.2 基于特征串的協議識別算法
這種識別算法是對檢測到的每一個數據包按照特征串進行搜索,和應用層協議中出現的多個特征串進行精確匹配,此方式在所有識別算法中準確率最高。由于需要逐報文的匹配所有協議的特征以及額外的存儲報文的負載部分,該類算法的時空復雜度是目前所有算法中最高的,并且隨著待識別協議數量的增長而增長。正則表達式是當前比較流行的特征串匹配語言,利用正則表達式進行協議識別可以將原來復雜且繁瑣的報文數據特征串匹配過程變成可自動處理的工作。該類算法通常只被用在需準確識別數量較少的協議時,且需要有相當的工作量,無法應用在高速網絡環境下進行大規模的協議識別。
2.3 基于行為特征的協議識別算法
這種識別方法是利用協議規范的不同所造成的流特征差異區別各個協議。它需要有一個訓練樣本數據集作為輸入,構建一個分類器或者分類模型,該模型能夠把網絡上的數據流映射到指定類別中的一種。該方法較端口識別方法有較高的準確性,較特征串識別方法較小的復雜度,但是由于判別算法不成熟,識別不夠細致,制約了這種識別方法的使用。
3 基于端口與正則表達式匹配的應用層協議識別方法
由于傳統識別方法難以滿足現實網絡環境的實際需要,本文提出利用協議的端口和特征串雙重特征進行識別,并且根據實際的網絡中統計所需要識別協議的真實流量,正確化簡正則表達式來實現對協議識別的加速。在此基礎上按幾個步驟完成識別:第一步基于端口的識別方式,進行初步識別;第二步采用正則表達式的識別方法,將其轉化成DFA完成匹配;第三步如果匹配成功,識別結束。如果不成功,說明該協議采用的隨機端口,放棄第一步篩選模式,轉入第二步,直至識別成功。
3.1 基于端口的數據流初步識別
利用端口進行應用層協議識別,主要原理就是因為存在公認端口和注冊端口,從端口0到1023對應著因特網上常見的服務和應用程序,有確切的定義。HTTP(Web服務器)、POP3/SMTP(電子郵件服務器)以及Telnet等常用應用程序通常使用這些端口號。一旦檢測到網絡中具有這些端口的流量,即可識別出其對應的協議。但是由于很大一部分協議都使用隨機端口,因此,初步識別的正確性要在下面的識別過程中進一步證實。
3.2 正則表達式協議識別方法
正則表達式(Regular Expression)作為一種表示語言,定義了自己的一套描述方式,來描述各種的字符類,由普通字符以及特殊字符組成的字符模式,然后將字符模式與所搜索的字符串進行匹配。典型的使用正則表達式進行協議識別的軟件為L-7 Filter,它是基于Linux的Netfilter/Iptables上一個開放源代碼的軟件,實現了應用層協議的識別。它通過對報文的依次解封,直接提取應用層數據內容,利用提供的正則表達式對提取出的數據內容進行匹配,從而識別協議類型。為了降低協議識別的假陽性及提高識別正確性,L-7 Filter也在不斷更新其正則表達式模式。
正則表達式的匹配是建立在自動機的理論基礎上的,正則引擎會按照表達式構建相應的自動機。若輸入一串文本之后,自動機抵達了接受狀態,則這串文本可以匹配用戶指定的正則表達式,否則為不能匹配。正則表達式通常用有限自動機完成匹配,按照轉移函數的不同,有限自動機表示有非確定的有窮狀態自動機(NFA)和確定的有窮狀態自動機(DFA)兩種。
在L-7 Filter中提供了常見應用層協議的正則表達式以及正則式模式編譯轉換成NFA和DFA的實現。我們通過實驗證明流量達到90Mbps時,對幾十種常見協議全部進行NFA匹配,L7-filter系統接近死機。造成系統性能低下的原因主要為使用NFA匹配引擎進行過多的正則表達式匹配。正則表達式匹配引擎必須滿足兩個條件:一是足夠快的處理速度,即每個輸入字符只帶來很少的狀態轉移;二是為每個流維護的中間狀態盡可能少,DFA引擎完全滿足這兩個條件。
因此在系統中,首先通過端口的方法進行協議識別,通過使用基于DFA匹配引擎的正則表達式匹配進行協議識別,這樣不僅能提高系統準確性,還能夠加快協議識別速度。
3.3 正則表達式的簡化
正則表達式的正確性是保證基于正則表達式的應用層協議識別準確率的前提,它在很大程度上影響協議識別的效率。我們也根據實際環境,通過在實際的網絡中統計所需要識別協議的真實流量,修改部分正則表達式以滿足自己的需要,同時也達到了減小DFA的數目和資源消耗的目的。部分協議正則表達式修改示例見表1。
4 實驗結果
本文采用DARPA2000的數據集進行測試,總大小為79M,總報文為394096個。利用測試數據集得到的測試結果如表所示,端口與正則表達式匹配雙重方法進行識別加速,對與Linux的L-7 filter識別結果進行對比見表2。采用本文識別方法比L-7 filter節省了46%的平均消耗時間和38.9% 的平均消耗空間,并且識別率也有提高。
5 結束語
針對傳統協議識別技術的局限性,提出了一種基于端口和正則表達式的雙重特征協議識別方法,并根據網絡中所需要識別協議的真實流量,合理的簡化其正則表達式,基于DFA匹配引擎實現協議的識別過程。實驗證明,該文提出的識別可以在減少系統消耗和匹配時間的基礎上,提高協議的識別效率,具有較好的可用性。
參考文獻
[1] 陳亮,龔儉,徐選.基于特征串的應用層協議識別.計算機工程與應用,2006,24(4):16~19.
[2] Jeffrey E.F.Freidl. Mastering Regular Expressioin. CA:O`Reilly Media,Inc.,2006.
[3] 正則表達式參考文檔[EB/OL]. http://www.regexlab.com/zh/regref.htm.
[4] Wiki protocol info, http://www.protocolinfo.org/wiki/Main_page.
[5] Application Layer Packet Classifier for Linux, http://L7-filter.sourceforge.net.
作者簡介:
王欣(1981-),女,遼寧葫蘆島人,碩士研究生,講師;主要研究方向和關注領域:智能控制、計算機網絡控制。
徐智(1981-),男,南京工業大學,碩士研究生,實驗師;主要研究方向和關注領域:工業自動化、控制理論與控制工程。
黃其新(1980-),女,河海大學,碩士研究生,講師;主要研究方向和關注領域:電力電子與電力傳動。endprint
【 摘 要 】 傳統識別方法難以滿足現實網絡環境的實際需要。文章利用協議的端口和特征串雙重特征進行識別,并且根據實際的網絡統計所需要識別協議的真實流量,正確化簡正則表達式來實現對協議識別的加速。結果證明,與L7-filter正則表達式識別方法比較,采用方法能有效降低資源消耗和匹配時間,提高識別率。
【 關鍵詞 】 協議識別;正則表達式;特征串
1 引言
快速準確地對網絡進行流量控制、網絡計費及內容過濾識別是當今計算機網絡發展面臨的重要問題,這對政府管理部門、網絡管理員、運營商等都有十分重要的意義。協議識別技術解決了這一問題,尤其在網絡安全監控領域,通過協議識別技術對捕獲的數據包進行分析,判斷協議類型,分析其特征,從而在入侵檢測或網絡攻擊等方面起到很大作用。本文在對傳統識別方法分析的基礎上,以識別正確率高、速度快、算法復雜度小為基本原則,提出了一種基于數據分類和正則表達式匹配的應用層協議識別方法。
2 傳統的協議識別算法
2.1 基于端口的協議識別算法
這種識別算法使用IANA規定的固定端口號來進行相應的應用層協議識別,僅能識別固定端口的應用層協議識別率高。但是大量的應用層協議為了避免識別, 逃避防火墻的檢查,使用隨機端口進行通信。大量涌現的新協議都不在IANA中注冊其端口號, 因此算法所能識別的協議在總協議數量中所占的比重越來越少,已不能適應于當前網絡環境。該算法簡單, 消耗系統資源少,時空復雜度是所有算法中最低的。
2.2 基于特征串的協議識別算法
這種識別算法是對檢測到的每一個數據包按照特征串進行搜索,和應用層協議中出現的多個特征串進行精確匹配,此方式在所有識別算法中準確率最高。由于需要逐報文的匹配所有協議的特征以及額外的存儲報文的負載部分,該類算法的時空復雜度是目前所有算法中最高的,并且隨著待識別協議數量的增長而增長。正則表達式是當前比較流行的特征串匹配語言,利用正則表達式進行協議識別可以將原來復雜且繁瑣的報文數據特征串匹配過程變成可自動處理的工作。該類算法通常只被用在需準確識別數量較少的協議時,且需要有相當的工作量,無法應用在高速網絡環境下進行大規模的協議識別。
2.3 基于行為特征的協議識別算法
這種識別方法是利用協議規范的不同所造成的流特征差異區別各個協議。它需要有一個訓練樣本數據集作為輸入,構建一個分類器或者分類模型,該模型能夠把網絡上的數據流映射到指定類別中的一種。該方法較端口識別方法有較高的準確性,較特征串識別方法較小的復雜度,但是由于判別算法不成熟,識別不夠細致,制約了這種識別方法的使用。
3 基于端口與正則表達式匹配的應用層協議識別方法
由于傳統識別方法難以滿足現實網絡環境的實際需要,本文提出利用協議的端口和特征串雙重特征進行識別,并且根據實際的網絡中統計所需要識別協議的真實流量,正確化簡正則表達式來實現對協議識別的加速。在此基礎上按幾個步驟完成識別:第一步基于端口的識別方式,進行初步識別;第二步采用正則表達式的識別方法,將其轉化成DFA完成匹配;第三步如果匹配成功,識別結束。如果不成功,說明該協議采用的隨機端口,放棄第一步篩選模式,轉入第二步,直至識別成功。
3.1 基于端口的數據流初步識別
利用端口進行應用層協議識別,主要原理就是因為存在公認端口和注冊端口,從端口0到1023對應著因特網上常見的服務和應用程序,有確切的定義。HTTP(Web服務器)、POP3/SMTP(電子郵件服務器)以及Telnet等常用應用程序通常使用這些端口號。一旦檢測到網絡中具有這些端口的流量,即可識別出其對應的協議。但是由于很大一部分協議都使用隨機端口,因此,初步識別的正確性要在下面的識別過程中進一步證實。
3.2 正則表達式協議識別方法
正則表達式(Regular Expression)作為一種表示語言,定義了自己的一套描述方式,來描述各種的字符類,由普通字符以及特殊字符組成的字符模式,然后將字符模式與所搜索的字符串進行匹配。典型的使用正則表達式進行協議識別的軟件為L-7 Filter,它是基于Linux的Netfilter/Iptables上一個開放源代碼的軟件,實現了應用層協議的識別。它通過對報文的依次解封,直接提取應用層數據內容,利用提供的正則表達式對提取出的數據內容進行匹配,從而識別協議類型。為了降低協議識別的假陽性及提高識別正確性,L-7 Filter也在不斷更新其正則表達式模式。
正則表達式的匹配是建立在自動機的理論基礎上的,正則引擎會按照表達式構建相應的自動機。若輸入一串文本之后,自動機抵達了接受狀態,則這串文本可以匹配用戶指定的正則表達式,否則為不能匹配。正則表達式通常用有限自動機完成匹配,按照轉移函數的不同,有限自動機表示有非確定的有窮狀態自動機(NFA)和確定的有窮狀態自動機(DFA)兩種。
在L-7 Filter中提供了常見應用層協議的正則表達式以及正則式模式編譯轉換成NFA和DFA的實現。我們通過實驗證明流量達到90Mbps時,對幾十種常見協議全部進行NFA匹配,L7-filter系統接近死機。造成系統性能低下的原因主要為使用NFA匹配引擎進行過多的正則表達式匹配。正則表達式匹配引擎必須滿足兩個條件:一是足夠快的處理速度,即每個輸入字符只帶來很少的狀態轉移;二是為每個流維護的中間狀態盡可能少,DFA引擎完全滿足這兩個條件。
因此在系統中,首先通過端口的方法進行協議識別,通過使用基于DFA匹配引擎的正則表達式匹配進行協議識別,這樣不僅能提高系統準確性,還能夠加快協議識別速度。
3.3 正則表達式的簡化
正則表達式的正確性是保證基于正則表達式的應用層協議識別準確率的前提,它在很大程度上影響協議識別的效率。我們也根據實際環境,通過在實際的網絡中統計所需要識別協議的真實流量,修改部分正則表達式以滿足自己的需要,同時也達到了減小DFA的數目和資源消耗的目的。部分協議正則表達式修改示例見表1。
4 實驗結果
本文采用DARPA2000的數據集進行測試,總大小為79M,總報文為394096個。利用測試數據集得到的測試結果如表所示,端口與正則表達式匹配雙重方法進行識別加速,對與Linux的L-7 filter識別結果進行對比見表2。采用本文識別方法比L-7 filter節省了46%的平均消耗時間和38.9% 的平均消耗空間,并且識別率也有提高。
5 結束語
針對傳統協議識別技術的局限性,提出了一種基于端口和正則表達式的雙重特征協議識別方法,并根據網絡中所需要識別協議的真實流量,合理的簡化其正則表達式,基于DFA匹配引擎實現協議的識別過程。實驗證明,該文提出的識別可以在減少系統消耗和匹配時間的基礎上,提高協議的識別效率,具有較好的可用性。
參考文獻
[1] 陳亮,龔儉,徐選.基于特征串的應用層協議識別.計算機工程與應用,2006,24(4):16~19.
[2] Jeffrey E.F.Freidl. Mastering Regular Expressioin. CA:O`Reilly Media,Inc.,2006.
[3] 正則表達式參考文檔[EB/OL]. http://www.regexlab.com/zh/regref.htm.
[4] Wiki protocol info, http://www.protocolinfo.org/wiki/Main_page.
[5] Application Layer Packet Classifier for Linux, http://L7-filter.sourceforge.net.
作者簡介:
王欣(1981-),女,遼寧葫蘆島人,碩士研究生,講師;主要研究方向和關注領域:智能控制、計算機網絡控制。
徐智(1981-),男,南京工業大學,碩士研究生,實驗師;主要研究方向和關注領域:工業自動化、控制理論與控制工程。
黃其新(1980-),女,河海大學,碩士研究生,講師;主要研究方向和關注領域:電力電子與電力傳動。endprint