文/陳澤生 孫濤 周敏 馮李春
當前網絡安全環境愈加復雜,各領域發生的網絡攻擊行為事件早已屢見不鮮[1-2],針對高校的網絡攻擊行為數量也與日俱增。為有效提升高校應對網絡攻擊行為處理的能力,有關部門要求轄內各高校按要求上報所在單位每日的網絡攻擊詳情和處置方式,通過上報的網絡攻擊數據可以間接反映出各高校的網絡安全建設情況和處置能力。同時,各高校上報的網絡攻擊數據也有益于構建網絡攻擊黑名單庫,以及利用人工智能相關技術,分析挖掘網絡攻擊數據,動態強化網絡攻擊防護模型。
當前高校在網絡安全建設中,普遍的做法是在網絡數據流相關節點設置防護系統。通過預定義的防護規則或大數據和人工智能技術攔截或放行相關的網絡操作數據[3-4]。而在整個網絡拓撲結構中,節點位置主要是進出口防火墻、數據中心和各業務應用系統。因此,大部分高校均在此重要節點位置設置防護系統,記錄網絡數據詳情。然而存在的問題是,不同廠商或相同廠商不同安全設備的安全防護系統所采集到的網絡安全日志在特征數量、特征命名、數據結構形式等方面存在差異。因此,如何將多源異構數據進行融合,并根據攻擊IP地址和被攻擊IP地址唯一確定索引項,統計該索引產生的次數成為網絡安全運維工作中新的難題。
如今,許多科研人員也致力于在網絡安全中解決多源異構數據融合問題[5]。文獻[6]融合多源異質傳感數據。龔儉等人[7]認為原始數據的融合處理是網絡安全態勢感知的重要一環,Zhao Dongmei等人[8]通過提取網絡日志數據的核心屬性來實現網絡安全態勢感知,Zheng Weifa等人[9]將主機防火墻數據、Web 防火墻數據和入侵檢測數據進行融合,實現對網絡安全性進行評估。綜上所述,網絡安全防護體系中的數據融合問題在網絡安全應用中發揮重要作用。本文通過采用Python腳本將異構數據實現程序化融合,通過自定義唯一索引項實現數據統計和去重。結果表明,學校上報網絡攻擊威脅IP的數據經排名之后,位列省內所有高校機構前三名,這表明采用Python腳本化實現網絡安全常態化運維有顯著效果。
目前高校網絡安全防護體系正處于建設當中,以進出口網關、數據中心網關、各應用系統等為網絡防護關鍵點,構建網絡安全防護體系,其邏輯結構如圖1所示。其中,進出口防火墻主要針對外網和內網的數據通訊進行規則掃描,并記錄該通訊日志的詳細信息和所采取的相關動作。數據中心防火墻用于掃描與數據中心進行數據交互的一切網絡操作日志,Web應用防火墻(Web Application Firewall,WAF)用于針對任意Web應用系統的終端防護,并記錄相關日志詳情。

圖1 網絡安全防護體系結構示意
本文基于圖1所示的網絡安全防護體系,采集關鍵節點WAF防火墻、數據中心防火墻和進出口防火墻的網絡日志數據。其中WAF防火墻的數據見表1,數據中心防火墻的數據由于記錄的防護類型不同,分為Web防護數據記錄和入侵防御系統(Intrusion Prevention System,IPS)數據,分別見表2和表3。進出口防火墻記錄的網絡日志見表4。表2、表3和表4由于特征數量過多,因此只列出特征名和單個內容值作為示例。由于網絡日志涉及敏感信息,因此使用符號“*”替換部分數據以防止暴露。

表2 數據中心Web防護日志

表3 數據中心IPS防護日志
為了保證對網絡攻擊日志中的威脅IP實現自動處理和統計,本文設計了一套自動處理流程框架,如圖2所示。其中數據源來自于上述表1~表4所提供的數據集。針對這4種數據源,首先進行特征處理。通過刪除冗余特征,對部分特征進行拆分、統一規范特征命名等操作,實現數據源的特征統一,從而進一步實現數據源的特征級融合。其次,進行數據處理。數據處理主要包括:以攻擊IP和目的IP作為唯一索引項,統計攻擊發生的次數,刪除冗余記錄,此外刪除把內網IP作為攻擊源的記錄、數據內部提到的暴力攻擊次數的內容提取、實現內網IP轉換為對應的外網IP、攻擊類型的轉換、數據的加密編碼等操作。在數據處理完成之后,還需要進行數據格式的美化,以便所處理的數據可直接用于上報而無需人工處理。實驗的關鍵代碼如下所示。

圖2 實驗處理流程框架

表1 WAF防護日志

表4 進出口防火墻防護日志
網絡攻擊威脅IP數據處理算法:定義Fi表示第i個數據文件,定義j表示某數據文件內部的第j條記錄,定義Attr_propose(Fi)表示對Fi進行特征處理的函數,定義Extract_times(j)表示提取第j條記錄中的暴力攻擊次數,定義F表示經過特征級融合后形成的匯總數據集,定義Drop_duplicates(索引列表K)為索引去重函數,刪除索引K的記錄數據,定義Convert_IP(內網IP,外網IP)函數,實現將內網IP轉換為外網IP,定義Convert_attack(原始攻擊類型列表,期望攻擊類型列表),實現將原始攻擊類型列表轉換為期望的攻擊類型列表,定義Base64(特征集)函數,實現將指定的特征集數據執行Base64編碼加密,定義Formatting(數據集F)函數,實現將數據集F按指定格式進行設置。
for each file Fi do:
Attr_propose(Fi)
end for
for j in Fi do:
Fi.Extract_times(j)
end for
產生一個新數據集F
for key, value in dict(F[源IP+目的IP], F[次數]):
追加當前索引j進去重索引列表K
特征“次數”累加當前提取的值
end for
Drop_duplicates(索引列表K)
Convert_IP(內網IP,外網IP)
Convert_attack(原始攻擊類型列表,期望攻擊類型列表)
Base64(特征集)
F=Formatting(F)
為了驗證實驗的有效性,本文在Intel(R) Core(TM) i7-7700 CPU @ 3.60 GHz,8GB內存,64位Windows 10操作系統的環境中進行實驗,采集上述4種數據集18份,按實驗流程和相關算法進行編碼測試,數據集的數據記錄數和程序運行時間分別如圖3和圖4所示。每日網絡攻擊防護日志一般在10萬條數據量以內,程序運行時間在一分鐘左右即可完成,大大提高了網絡攻擊威脅IP的統計效率。此外可以發現,程序運行時間和數據記錄數基本呈線性正相關,隨著數據記錄數的遞增,程序運行時間也相應增加。最終處理完成后的數據見表5。實現源IP和目的IP是唯一索引,且基于該索引自動統計發生的攻擊次數,并對詳細的攻擊描述進行base64編碼。

表5 經處理后的數據

圖3 數據集與其記錄數

圖4 數據集與其運行時間
本文采用Python腳本對網絡攻擊防護日志的處理,實現將多源異構數據進行融合,并且完成特征的統一,基于源IP地址和目的IP地址實現數據記錄的唯一索引,并統計發生的攻擊次數。經實驗驗證,所設計的算法程序能高效處理網絡攻擊日志的威脅IP統計,十萬條左右的數據量可在一分鐘之內完成。同時,對于高校在網絡安全運維工作中的常態化威脅IP上報工作,提供了極大的便利。本文是Python腳本在高校網絡安全運維中的實際應用示例,可為其他網絡安全運維工作提供借鑒與思考。