hyperscan作為一款高效能的正規表示式匹配庫,非常適用於部署在諸如dpi/ips/ids/ngfw等網路解決方案中。snort ( 是目前應用最為廣泛的開源ids/ips產品之一,其核心部分涉及到大量純字串及正規表示式的匹配工作。本文將重點介紹如何將hyperscan整合到snort中來顯著提公升snort的總體效能。具體整合**已公開在
如圖1所示,snort主要分成五個部分。報文解析器負責從不同的網路介面接收到報文,並對報文內容進行初步的解析。預處理器是對解析過的報文進一步處理的外掛程式,其功能包括http uri歸一化,報文整合,tcp流重組等。檢測引擎是snort當中最為核心的部分。它根據現有的規則,對報文資料進行匹配。匹配的效能對snort總體效能起著至關重要的作用。假如匹配成功,則依據規則中定義的行為通知日誌及報警系統。該系統可輸出相應的警報或者日誌。使用者也可以定義輸出模組來以特定形式(例如資料庫,xml檔案)儲存警報或日誌。
如圖2所示,hyperscan與snort的整合主要集中在以下四個方面:
使用者可以在snort規則中定義匹配特定的字串,並在相應報文中尋找該字串。snort中採用了boyer-moore演算法進行匹配。我們用hyperscan對這一演算法進行替換以提公升匹配效能。
snort中使用了pcre來作為正規表示式匹配的引擎。hyperscan相容了pcre的語法規則,但不支援少數回溯及斷言語法。但是hyperscan本身自帶有pcre的預處理功能(pcre prefiltering),可以通過對pcre規則進行變換以相容hyperscan。實際規則產生的匹配是變換後的規則所產生匹配的子集。因此可以使用hyperscan進行預先掃瞄,若不產生匹配則實際規則也無匹配。若產生了匹配,可以通過pcre的掃瞄來確認是否有真正的匹配。由於hyperscan的總體效能高於pcre,hyperscan的預先過濾可以避免pcre匹配帶來的過大時間開銷。
snort中另外乙個重要的匹配過程是多字串的匹配。多字串的匹配可以快速過濾掉無法匹配的規則以減少需要逐條匹配的規則數從而提公升匹配的效能。snort中使用了aho-corasick演算法進行多字串的匹配。我們用hyperscan替代了這一演算法並且帶來了顯著的效能提公升。
除了引擎的匹配演算法的整合,我們在預處理器中也新增了hyperscan。在做http預處理時,我們利用了hyperscan搜尋相關關鍵字來進一步加速預處理的流程。
我們選取了snort自帶的vrt 規則(8683條)作為測試規則,同時以存有真實網路流量資訊的pcap檔案作為輸入進行測試。圖3展示了在broadwell-ep平台下,原生snort和經過hyperscan加速的snort在單核單執行緒下的效能對比。我們可以看到,hyperscan極大提公升了snort的匹配效能,總體效能約是原始snort效能的6倍。另外,我們對原生snort與經過hyperscan優化後的snort在記憶體消耗方面進行了比較。由於原生snort依賴於aho-corasick演算法,需要將所有規則轉化成trie樹結構,因此占用較大的記憶體。而hyperscan擁有自身優化過的匹配引擎進行匹配,大量減少了匹配過程中對記憶體的消耗。如圖4所示,在這個測試中,總體上原始snort所占用的記憶體是經過hyperscan優化後的snort的12倍。
經過hyperscan整合後的snort不管在總體效能還是記憶體消耗上都遠遠優於原始snort。由此,hyperscan展現了大規模規則匹配的強大能力,非常適用於以規則匹配為核心的dpi/ids/ips/ngfw等產品中。
原文:dpdk開源社群
hyperscan安裝步驟
s udo yum install cmake ragel sudo yum install boost devel 1.安裝gcc,g make 等開發環境 yum groupinstall developmenttools 2.安裝boost yum install boost boost de...
snort文章整理
很久沒有接觸snort了,由於工作的原因,和它打了兩年多的交道,雖然有不少的認識,但缺少深入的研究。閒來時翻的幾篇手冊,原來放在163上,偷懶放個總的上來。snort2.6 usage 中文 snort2.6 problems 中文 snort2.6 wisnlist 中文 snort.spade ...
snort 命令解析
snort 命令解析 snort有三種工作模式 嗅探器 資料報記錄器 網路入侵檢測系統。嗅探器模式僅僅是從網路上讀取資料報並作為連續不斷的流顯示在終端上。資料報記錄器模式把資料報記錄到硬碟上。網路入侵檢測模式是最複雜的,而且是可配置的。我們可以讓snort分析網路資料流以匹配使用者定義的一些規則,並...