刁振軍,張琦,曹子建
(西安工業大學計算機科學與工程學院,陜西西安710021)
互聯網技術得到越來越好的發展環境,從國家到地方,所有與社會息息相關的一切慢慢都靠互聯網進行連接,所有的一切看起來都變得高效而且有序。互聯網也經歷了信息互聯網到工業互聯網的慢慢轉型,我們身邊的一切變得智能也變得方便,微信、支付寶、共享單車等,都是互聯網的產物我們身處其中,享受著互聯網帶給我們的高效和便利。同時,我們又像在這個互聯世界里裸奔,我們如今的一切都與信息打交道,而我們幾乎所有的信息都暴露于互聯網之上,無論是快遞外賣,還是網銀報名等等,信息不但存在故意泄露的問題,更為嚴重的是非法的信息收集,也就是常說的網絡入侵[1]。
入侵的目的更多是為了個人數據,企業數據,甚至國家機密,高風險往往伴隨著高收益,抱著這些想法,越來越多不法分子鋌而走險,開始將黑手伸向了這樣的互聯網世界,所以在網絡威脅愈加嚴重的今天我們需要重視網絡安全問題,需要有效的防護措施來應對這種威脅,保護我們每一個公民的信息數據乃至生命財產的安全[2]。
在過去的十幾年間,入侵檢測作為網絡安全的主要技術,受到了研究者的廣泛關注,主要的方法有:遺傳算法[3]、淺層神經網絡[4]、支持向量機[8-10]、群智能算法[7]、極限學習機[12]、信息熵[14]、獨立成分分析[13]、主成分分析[15]、深度神經網絡[5-6]以及新的特征提取[16]等方法。雖然檢測方法日益增多,但提出主動入侵防御思想的方法還不多見,本文在使用開源Snort技術搭建入侵檢測平臺的基礎上,對入侵檢測的規則集進行管理和分析,采用代理技術構建安全的網絡入侵防御系統。
入侵檢測(Intrusion Detection,ID)是入侵防御系統的關鍵環節,主要由以下3種方式實現:模式匹配、統計分析和完整性分析。模式匹配是對捕獲到的數據和已發現的入侵系統誤用模式數據庫進行相對比,去發現是否存在違背安全策略的動作。統計分析方法為先給信息描述對象創建一個統計描述,統計正常使用的一些屬性,如果測量值超過了正常偏差,可以判定有異常行為產生。完整性分析則更關注對象是否被修改,主要包括目錄、內容及屬性,在發現被修改,感染病毒的應用程序有很好的效果。
入侵防御系統(Intrusion Prevention System,IPS)通過監視網絡資源的傳輸行為,可以對一些異常或具有攻擊性的行為進行實時響應。主要特點如下:1)嵌入式運行。IPS以嵌入模式運行,實時阻攔有問題數據包,對該數據流的剩余流量進行過濾。2)深入分析和控制。IPS深入應用層對流量進行抓取和分析,可以精確控制每一條鏈接的流量是否放行還是過濾。3)入侵特征庫。入侵特征庫是IPS的靈魂所在,通過一條條規則來約定流量的正常與否,特征庫必須時常更新,涵蓋最新的惡意行為特征。4)高效處理能力。IPS必須具有特別高效的處理數據能力,盡可能減少對用戶正常的流量使用產生影響。
為了增強入侵檢測技術的主動防范能力,代理技術通常被利用作為主動防御的插件,代理相當于運行與后臺的一個守護進程,一旦Snort檢測到入侵行為后,代理就被觸發,通知防御設備進行相應的攔截以及相應的處理。比較常用的是Guardian和Snortsam代理。本文采用Snort和Guardian代理技術融合的方式設計和開發入侵防御系統。
系統總體設計需要滿足入侵檢測與防御的需要,既要安全可靠,又要具有一定的先進性。在架構設計和功能模塊的劃分上,應充分的分析和整合項目的總體需求和預期的目標,盡量遵循高內聚、低耦合的設計原則,既要保證各個模塊的獨立性,也要保證模塊間聯系的簡單性和易擴展性。
入侵檢測模塊從最基本的功能上講,至少要包括檢測功能和顯示功能。入侵檢測使用Snort+Base結合實現:Snort利用libpcap從網絡層抓取數據包,數據包經過Snort解碼引擎解析到鏈路層協議的結構體中,對應用層協議進行解碼操作。然后,數據包會被送至預處理器中進行檢查和操作。在檢測引擎處理之前預處理器會檢查數據包是否會有什么行為產生。最后,數據包被送到Snort檢測引擎。檢測引擎則會通過規則鏈中的特征對應用層數據內容進行規則匹配。Snort通過檢測引擎、預處理器和解碼引擎輸出報警。網絡入侵檢測原理如圖1所示。

圖1 網絡入侵檢測原理圖
入侵防御模塊是最終要實現的目的模塊,體現整個系統的最終價值,實現功能為對惡意流量的應對措施,采取的方法為IP屏蔽定向阻止訪問,過濾惡意訪問流量,具體設計思想為處理Snort日志,提取報警流量的源IP地址,并通過調用iptables添加進防火墻的DROP策略,使用防火墻阻斷掉此源IP地址的連接,設定屏蔽時間為86 400秒,達到對入侵行為的防御目的。網絡入侵防御的原理如圖2所示。

圖2 網絡入侵防御原理圖
Snort捕獲數據包主要通過數據包捕獲函數庫libpcap,將網卡設置為混雜模式可以監聽通過網絡的所有流量,libpcap工作在數據鏈路層,Snort通過調用libpcap函數庫可以直接從網卡上獲取數據流量,對于被捕獲的數據流量包,調用解碼引擎對數據鏈路層的原始數據開始解碼,將解析后的數據包存儲到內存指針指向的數據結構。
Snort通過預處理器實現規則匹配的高效性,影響匹配效率的主要問題,簡單規則的匹配,攻擊模式常見會產生較高的誤報率,模式復雜又會產生漏報,根本原因還是在于特征語言表達能力是有限的,還有對協議的解析不夠Snort含有多個預處理器,主要功能是用來進行包重組、協議解析和異常檢測。
Snort規則是具有有特定語法的代碼程序,以文本的形式書寫,然后保存在一種特殊的.rule格式文件中,Snort檢測引擎啟動時,所有的Snort規則會根據規則頭和規則選項生成一種三維鏈表方便以最大的檢索速率進行特征匹配。
網絡數據流量通過抓包引擎捕獲然后提交給分析引擎,如果數據流量匹配到了規則集中的特征那么就會觸發報警,并生成相應的日志文件,緊接著會被提交給相應的輸出插件進行處理。輸出插件會在數據包捕獲,預處理器處理,檢測引擎全部處理完之后進行輸出處置,也就是Snort的全部工作流程。如圖3所示。

圖3 Snort工作流程
值得注意的是,本文采用Base對Snort進行管理。Base是一個基本安全分析引擎,它可以被用來處理檢測到的安全事件數據,使用Base連接MySQL數據庫可以將入侵信息直觀的表現在Web應用程序中,方便管理員及時了解到入侵信息。
基于上述分析,入侵防御功能主要由以下7個步驟組成。
1)在虛擬機里搭建服務器模擬所在校園內網的服務器,從主機向虛擬機發送請求。
2)模擬入侵者對服務器進行出于信息搜集目的的惡意掃描。
3)同時啟動Wireshark對掃描過程進行抓報分析。
4)分析數據流量的報文內容,再Nmap進行掃描的時候會發送UDP探測包,內容為300個字節的字符C,以此為特征書寫可匹配的Snort規則,添加進入侵防御系統的Snort規則庫中。
5)使用命令開啟入侵檢測,執行入侵防御功能。
6)再次使用Nmap對校園服務器進行端口掃描測試,惡意行為被檢測到發出報警信息。入侵者IP地址被加入iptables的DROP策略。
7)入侵者訪問被阻止,切斷網絡連接,防止進一步的惡意行為。
本部分采用Snort和iptables結合的方式對入侵防御功能模擬。首先修改Snort配置文件,配置輸出插件為output alert_fast:alert,以alert_fast的格式輸出Snort日志,接著讀取日志信息,Guardian處理Snort日志,提取報警流量的源IP地址,并通過調用iptables添加進防火墻的DROP策略,使用防火墻阻斷掉此源IP地址的連接,設定屏蔽時間為86 400秒,達到對入侵行為的防御目的。
1)添加一條Snort測試規則,內容為全匹配。如圖4所示。

圖4 添加Snort規則
2)獲取服務器的網卡信息。如圖5所示。
3)開啟 Apache、PHP、MySQL、iptables、入侵防御系統服務。如圖6所示。
4)Snort檢測到的匹配了規則的訪問服務器信息。如圖7所示。

圖5 獲取服務器網卡信息

圖6 開啟入侵防御相關服務

圖7 Snort檢測到匹配信息
5)模擬入侵者訪問源被添加進Iptables的DROP策略中。如圖8所示。

圖8 iptables的DROP策略
6)入侵者IP被屏蔽,不能正常連接服務器,實現入侵防御的功能。如圖9所示。

圖9 入侵者不能訪問服務器
通過上述模擬測試,系統可以完成入侵檢測及入侵防御的主要功能。但是在效率上還不夠完善,還需細化和改進。后續需要改進的問題有:1)檢測功能只對已知威脅有用;2)研究更有效的模式匹配算法的實現;3)在防御時,若能從應用層進行防御,效果更好,并能減小誤報。
文中針對日益復雜的網絡入侵威脅[17-18],在對非法入侵和異常流量進行研究的基礎上,提出了對異常流量檢測并防御的一些方法。文中重點討論了兩個問題:第一,入侵檢測的實現。討論了流量的抓取和分析關鍵因素并給出了本系統的解決方案。使用Snort規則鏈,提高對惡意流量的匹配速度。第二,入侵防御的實現。在入侵檢測的基礎上,給出了具體的防御措施,實驗結果證明了防御方法的可行性。實驗證明,使用本文中的思想可以完成對網絡環境提供一定的保護措施。此外,在系統設計過程中,通過學習防御手段。了解了網絡入侵手段的豐富多樣性。Snort規則集提供遇到的惡意流量規則,提高了對異常流量的精確匹配。
[1]李威,楊忠明.入侵檢測系統的研究綜述[J].吉林大學學報:信息科學版,2016,34(5):657-662.
[2]徐鑫.入侵防御系統攻擊特征庫的建立方法研究[D].成都:電子科技大學,2011.
[3]朱紅萍,鞏青歌,雷戰波.基于遺傳算法的入侵檢測特征選擇[J].計算機應用研究,2012,29(4):1417-1419.
[4]楊雅輝,黃海珍,沈晴霓,等.基于增量式GHSOM神經網絡模型的入侵檢測研究[J].計算機學報,2014(5):1216-1224.
[5]高妮,高嶺,賀毅岳,等.基于深度信念網絡的入侵檢測模型[J].東南大學學報(英文版),2015(3):339-346.
[6]王聲柱,李永忠.基于深度學習和半監督學習的入侵檢測算法[J].信息技術,2017(1):101-104.
[7]肖立中,劉云翔,陳麗瓊.基于改進粒子群的加速K均值算法在入侵檢測中的研究[J].系統仿真學報,2014,26(8):1652-1657.
[8]譚愛平,陳浩,吳伯橋.基于SVM的網絡入侵檢測集成學習算法[J].計算機科學,2014,41(2):197-200.
[9]武小年,彭小金,楊宇洋,等.入侵檢測中基于SVM的兩級特征選擇方法[J].通信學報,2015,36(4):19-26.
[10]劉銘,黃凡玲,傅彥銘,等.改進的人工蜂群優化支持向量機算法在入侵檢測中的應用[J].計算機應用與軟件,2017(1):230-235.
[11]江頡,王卓芳,陳鐵明,等.自適應AP聚類算法及其在入侵檢測中的應用[J].通信學報,2015,36(11):118-126.
[12]康松林,劉樂,劉楚楚,等.多層極限學習機在入侵檢測中的應用[J].計算機應用,2015,35(9):2513-2518.
[13]杜曄,張亞丹,黎妹紅,等.基于改進FastICA算法的入侵檢測樣本數據優化方法[J].通信學報,2016,37(1):42-48.
[14]魏琴芳,成勇,胡向東.基于信息熵的無線傳感網入侵檢測遺傳算法[J].重慶郵電大學學報:自然科學版,2016(1):107-112.
[15]劉珊珊,謝曉堯,徐洋,等.基于PCA的PSO-BP入侵檢測研究[J].計算機應用研究,2016,33(9):2795-2798.
[16]吳麗云,李生林,甘旭升,等.基于PLS特征提取的網絡異常入侵檢測CVM模型[J].控制與決策,2017,32(4):755-758.
[17]許學添.基于模糊約束的網絡入侵檢測方法[J].西安工程大學學報,2016,30(5):627-632.
[18]張耀元,郭淑明,汪小雨.基于入侵檢測技術的MANET安全研究[J].電子科技,2016,30(5):627-632.