譚 寧
[摘要]設計一種Windows下的入侵檢測系統,將入侵檢測系統的工作流程和工作模式進行描述,并將Snort與其他工具進行比較。
[關鍵詞]Snort 入侵檢測 系統
中圖分類號:TP3文獻標識碼:A文章編號:1671-7597(2009)0320022-01
目前,我國的局域網建設發展迅速,它已經成為信息交流、信息共享和通信聯絡不可缺少的有力工具,但隨之而來的是局域網的安全問題越來越突出,如果無法解決好這一問題,局域網的積極作用將會受到極大的影響。而Snort作為目前較為成熟的輕量級網絡入侵檢測系統,能夠較好的滿足網絡安全的需要。
一、系統工作流程
系統在Windows 2000 Server平臺下,以Snort為核心和基礎,在MySQL、Apache、ACID等相關組件的共同支持下組建起來。基于Snort的入侵檢測系統可以分為三部分:網絡入侵檢測模塊主要實現對網絡數據包的實時捕獲、監控和對數據進行分析以找出可能存在的入侵;數據存儲模塊主要是從入侵檢測系統中收集報警數據并把它存入關系數據庫中,便于用戶日后查詢;分析員控制臺是IDS分析員的專用工作站,用來對報警日志信息進行管理和查詢,它提供了很好的人機交互界面。
Snort首先利用winpcap組件捕獲并分析數據,然后用output插件將數據儲存在MySQL數據庫中,Apache服務器在ACID等組件的幫助下使連接到服務器的用戶能夠通過瀏覽器查看數據,用戶還可以在網頁上應用不同的查詢來分析、備份、刪除數據或者顯示圖表。
二、Snort三種工作模式的應用
Snort共有三種工作模式:嗅探器模式、數據包記錄器模式、網絡入侵檢測模式,而這三種模式均是通過不同的命
令來實現的。結合網中基于Snort的系統,對以上三種模式分別進行應用與描述。
(一)利用Snort作為數據包嗅探器
利用Snort作為數據包嗅探器就是從網絡上讀出數據包然后顯示在你的控制臺上。從最基本的用法入手,如果只要把TCP/IP包頭信息打印在屏幕上,只需要在命令提示符的c:snortin路徑下輸入以下命令:snort-v
使用這個命令將使Snort只輸出IP和TCP/UDP/ICMP的包頭信息。如果要看到應用層的數據,可以使用命令:snort -vd
這條命令使Snort在輸出包頭信息的同時顯示包的數據信息。如果還要顯示數據鏈路層的信息,就使用命令:snort -vde
(二)利用Snort作為數據包記錄器
如果要把所有的數據包記錄到硬盤上,使用以下命令指定一個日志目錄,Snort就會自動記錄數據包:snort -dev -l c:snortlog
當然,c:snortlog目錄必須存在,否則Snort就會報告錯誤信息并退出。當Snort在這種模式下運行時,它會記錄所有捕獲到的包并將其放到一個目錄中,這個目錄以數據包目的主機的IP地址命名。
如果只指定了命令選項,而沒有設置目錄名,Snort也可使用遠程主機的IP地址作為目錄,或者會使用本地主機 IP地址作為目錄名。為了對子網進行日志,需要給出本地網絡:snort -dev -l c:snortlog -h 10.3.2.0/24
這條命令告訴Snort把進入其重要子網10.3.2.0/24的所有數據包的數據鏈路層、TCP/IP以及應用層的數據記錄到目錄c:snortlog中。
如果網絡速度很快,或者想使日志更加緊湊,方便以后的分析,那么應該使用二進制的日志文件格式,即Tcpdump程序使用的格式。使用下面的命令可以把所有的數據包信息記錄到一個單一的二進制文件中:snort -l c:snortlog-b
注意此處的命令行和上面的命令有很大不同。不需要指定本地網絡,也不必使用-dev等功能選項,因為數據包中的所有內容都會被記錄到單一的二進制日志文件中。可以使用支持Tcpdump二進制格式的嗅探器程序從該文件中讀出數據包相關信息,例如Tcpdump或者Etherea1。
(三)利用Snort作為網絡入侵檢測系統
Snort最重要也是最常用的用途是作為網絡入侵檢測系統(NIDS),可以使用以下命令行啟動這種工作模式:
snort -dev -l c:snortlog -h 10.3.2.0/24 -c c:snortetcsnort.conf
snort.conf是Snort的規則集文件,Snort會將每一個數據包與規則集文件進行匹配,匹配成功便根據規則采取相應的行動,同時將日志文件輸出到指定的目錄中。
由于準備長期使用Snort作為重要子網入侵檢測系統,為了提高Snort的處理速度,以免在向顯示器輸出的過程中丟棄某些數據包,可以不必使用功能選項-ve,因此可在c:snortin目錄下新增runsnort.bat文件并運行。
三、Snort與其他工具的比較
Snort的主要用途就是網絡監視、數據包的記錄和檢測入侵行為,經過實際應用,將Snort分別與具有上述兩種功能的典型工具進行比較。
(一)Snort與Tcpdump的比較
Tcpdump是一種經典的網絡嗅探工具,主要用于記錄網絡數據、網絡故障的探測診斷工具。Snort與它的最大的共同之處在于都是基于libpcap并且支持BPF過濾機制,所以本質上都是調用數據包捕獲庫函數,但是Snort的目的不僅僅在于記錄某個數據包,而是從安全的角度出發去解析它,同時Tcpdump主要通過分析第二層或者第三層的報文來進行網絡故障診斷,而Snort則主要針對應用層的數據進行分析從而實現入侵檢測行為。除此之外,由于Tcpdump旨在快速完整地記錄流量,所以它制定了特殊的輸出格式,速度快但是不易讀懂,而Snort提供了更為友好的輸出格式,有利于系統管理員的直接分析。
(二)Snort與NFR的比較
NFR作為一種商用網絡入侵檢測工具,其綜合性能指數高于ISS公司的RealSecure和CA公司的SessionWall,代表了目前國際上IDS的最高水準,是一個比較成熟的商業產品。Snort的許多設計思想類似于NFR,當然作為輕量級入侵檢測系統,必然在某些方面會有不足之處,但是Snort的最大優勢在于它是源代碼公開的軟件,全世界的愛好者都可以參與它的開發與升級工作,其發展前景是不可估量的。
參考文獻:
[1]金衛,入侵檢測技術的研究[J].山東師范大學學報(自然科學版),2005.4.
[2]遲向陽、張華忠、楊玉鵬,稅務網絡安全系統的設計[J].計算機工程與設計,2007.2.
[3]婁志剛、張同光,Snort及其在網絡入侵檢測中的應用[J].軟件導刊,2007.13.
作者簡介:
譚寧,男,漢族,淄博職業學院信息工程系,副教授,研究方向:計算機網絡。