現網傳輸文件的高性能還原技術方案
Part 01
● 網絡拓撲簡述 ●
通過分光器將流量引流到流量檢測設備(即DPI設備,DPI 是一種基于數據包的深度檢測技術),針對不同的網絡層協議的應用層載荷進行深度檢測,通過對報文的有效載荷掃描檢測從而達到檢測攻擊流量和惡意文件提取的功能,部署圖如圖1所示。
圖1 DPI網絡拓撲圖?
Part 02
● 開源文件還原技術方案 ●
Zeek(NIDS)是由Vern Paxson開發的一種被動的,開源的網絡流量分析器,用于收集網絡測量數據,進行流量調查等等。Zeek包含一組日志文件,用于記錄網絡活動,如HTTP會話,包括URI,密鑰標頭,MIME類型,服務器響應,DNS請求,SSL證書,SMTP會話等。
Zeek 是一個功能強大的網絡分析框架,也提供了文件還原的功能,默認僅支持HTTP、FTP、SMTP 3種協議,可以根據Zeek腳本全局配置,配置還原文件的類型,Zeek配置文件還原腳本文件(file_extraction.zeek)
示例如下:
使用4元組(源ip、目的ip、源端口、目的端口)和協議類型區別會話,利用端口或者協議的特征識別具體協議。Zeek不是多線程的,所以一旦達到了單核的處理瓶頸會導致文件還原失敗,目前采用的方法是將負載分配到多個核心上,或者甚至多臺物理機器上進行處理。
Worker 是 Zeek 進程,它嗅探網絡流量并對重組的流量進行協議分析。Zeek分為事件引擎和策略腳本兩層:
- 事件引擎:當網絡上流量發生異常時,它執行使用C ++分析實時或記錄的網絡流量包的事件。
- 策略腳本:這些策略分析事件以創建操作策略,使用策略腳本處理事件,例如發送電子郵件,發出警報,執行系統命令,甚至調用緊急號碼。
Part 03
● 高性能文件還原技術方案 ●
3.1 文件還原架構
文件還原架構包括報文解析、流重組、應用層協議識別、應用層協議會話建立、文件還原等過程(如圖2)。首先根據五元組即源端口、目的端口、源IP、目的IP、協議類型建立四層會話,流重組對亂序報文進行處理。重組報文后進行應用層協議識別,比如:HTTP、STMP、POP3、IMAP、SMB、NFS等常見的傳輸文件協議。
圖2 文件還原架構圖
根據五元組通過哈希算法生成會話ID, 依據會話ID把分發到不同的文件還原核,從而提高文件還原的性能。相比于傳統的多臺文件還原服務器,該方案節約了網絡分發傳輸時間,并重組解包功能,在相同的吞吐和硬件配置下性能提升3倍。
數據流分發圖,如圖3所示。
圖3 數據流分發圖
3.2 七層會話流程
通過識別七層的協議類型,識別文件目錄、文件名字、文件大小、文件ID、編碼格式等相關信息,記錄文件還原的開始狀態、還原狀態、結束狀態。當還原結束時,通過redis發送文件路徑、文件名字、文件ID到分析平臺。首先識別應用層協議,識別應用層協議的開始傳輸字段,更改會話狀態,識別相關的文件名字、編碼格式、文件長度等,更新會話狀態。當會話結束時,進行保存文件操作,同時釋放會話。
七層會話流程圖見圖4 所示。支持50Gb/s 吞吐的文件還原,支持SMTP、AFP、POP3、HTTP、NFS、SMB、FTP等9種協議的應用層協議,實現全流量檢測惡意文件的高性能處理機制。使用單機多核技術,降低服務器資源,CPU資源,網絡資源、內存資源。
圖4 會話流程圖
3.3 技術創新優勢
相比于業界傳統開源方案,智慧家庭運營中心自研的高性能文件還原技術方案具備以下優勢:
1. 方案使用Dpdk技術,繞開內核協議棧直接從應用層收發報文,性能得到極大提升;
2. 開源軟件Zeek文件還原采用單核架構圖,該方案使用多核架構,從而提升文件還原的處理性能;
3. 開源軟件文件還原文件類型不支持配置,該方案文件還原后綴支持動態配置;
4. 具備AFP蘋果協議的支持;
5. Zeek是單線程處理框架,總體的文件還原系統處理能力約300Mb/s,該方案文件還原吞吐可以達到10Gb/s。