?

基于Snort的入侵檢測系統的研究

2008-07-14 10:05張治國秦國亮駱德全
電腦知識與技術 2008年18期

張治國 秦國亮 駱德全

摘要:隨著互聯網的不斷發展,入侵檢測系統已變成計算機網絡安全防范體系的重要組成部分之一。本文是在介紹了入侵檢測系統的基本原理的基礎上,從體系結構、工作原理兩個方面分析了Snort入侵檢測系統,并介紹了怎樣根據自己的網絡環境,編寫規則來保護網絡的安全。

關鍵詞:入侵檢測系統;Snort;編寫規則

中圖分類號:TP393文獻標識碼:A文章編號:1009-3044(2008)18-20ppp-0c

Research of Snort-based Intrusion Detection System

ZHANG Zhi-guo, QIN Guo-liang, LUO De-quan

(Computer school, Sichuan University, Chengdu 610065, China)

Abstract: With the development of Internet, IDS has become one important part of network security system. This paper analyzes IDS Snort in structure and working principle aspects, which based on introduction of basic principle of IDS, then we introduce how to create Snort rule to protect our network according to our network environment.

Key words: IDS; Snort; Writing rule

1 引言

互聯網的不斷發展,網上不斷增多的服務種類,使得網絡的安全問題變得越來越突出。要保證網絡的安全,首先要防范對網絡的攻擊行為,通常采用防火墻技術。但是,防火墻存在很多的缺陷。因此,通過使用入侵檢測系統來加強網絡的安全已變得很重要了。而Snort是一種開放的源代碼的入侵檢測工具,這使得基于Snort的入侵檢測系統應用得很廣泛。本文就是在這些的基礎上,對基于Snort入侵檢測系統進行了分析和研究。

2 入侵檢測系統

入侵檢測(Intrusion Detection,ID),是在有內部非授權行為或外部攻擊行為時,及時發現并進行記錄和報告,以便有可能采取進一步措施以保護網絡的技術,把入侵檢測的軟件和硬件的組合便構成了入侵檢測系統(Intrusion Detection System, IDS)。入侵檢測系統主要完成以下功能:監視、分析用戶及系統活動;系統構造和弱點的審計;識別反映已知攻擊的活動模式并向相關人士報警;異常行為模式的統計分析;評估重要系統和數據文件的完整性;操作系統的審計跟蹤管理,并為識別用戶違反安全策略的制定提供指南。其通用的模型如圖1。

圖1入侵檢測系統的通用模型

3 Snort入侵檢測系統的簡介

在市面上有很多的入侵檢測系統,比如有ISS公司的Real Secure入侵檢測系統、NFR公司的NID入侵檢測系統、NAI公司的Cyber Cop Monitor入侵檢測系統、Cisco公司的Cisco Secure IDS入侵檢測系統等。但是這些商業軟件許多都是昂貴而龐大的系統,而基于Snort的入侵檢測系統具有便于配置、功能強大、使用靈活等諸多優點,這使得基于Snort的入侵檢測系統使用得非常廣泛,在業內被喻為“瑞士軍刀”。在這里我們主要介紹一下基于Snort的入侵檢測系統工作原理以及在網絡中應用。

Snort是一個強大的輕量級的網絡入侵檢測系統. 它是一個跨平臺、開放源代碼(Open Source)的免費軟件,它運行在Libpcap庫函數基礎上,并支持多種系統軟硬件平臺,如RedHat Linux、Debian Linux、HP-UX、NetBSD以及MacOSX等。不僅能夠進行協議分析、內容檢索、內容匹配,而且能夠用于檢測緩沖區溢出、隱蔽端口掃描、CGI攻擊、OS指紋識別等大量的攻擊和探測,Snort使用基于規則的匹配模式來檢測這些攻擊,并提供了模塊化的檢測引擎,從而使它能夠檢測出各種不同的攻擊方式,并對攻擊進行實時報警。

4 Snort的體系結構

Snort使用一種易于擴展的模塊化體系結構,開發人員可以加入自己編寫的模塊來擴展Snort的功能。Snort的體系結構由四部分組成:數據包解碼器(嗅探器)、預處理器、檢測引擎、日志記錄與告警系統,其體系結構如圖2所示,首先Snort通過數據解碼器從網絡中捕獲數據包,然后交由預處理器進行處理,然后從檢測引擎的所有規則鏈中進行匹配,若匹配成功,則說明檢測到可疑數據,通過告警日志子模塊進行記錄,告警信息也可存入SQL數據庫中。

圖2Snort的體系結構

5 Snort的工作流程

基于規則的匹配的是Snort的核心檢測機制,其工作流程為:Snort首先讀取規則文件,從規則文件中讀取每一條規則并對其進行解析,用對應的語法表示出來,然后在內存中建立規則語法樹,并初始化和解析規則樹,分別生成TCP 、UDP 、ICM和IP四個不同的規則樹,每一個規則樹包含獨立的三維鏈表:RTN(規則頭),OTN(規則選項)和指向匹配函數的指針。當Snort捕獲一個數據包時,首先分析該數據包使用哪個IP協議以決定將與某個規則樹進行匹配;然后與RTN結點依次進行匹配,當與一個頭結點相匹配時,向下與該頭結點的OT N結點進行匹配。每個OT N結點包含一條規則所對應的全部選項,同時包含一組函數指針,用來實現對這些選項的匹配操作。當數據包與某個OT N結點相匹配時,即判斷此數據包為攻擊數據包,而規則匹配流程圖如圖3。

圖3Snort的工作流程

6 Snort的應用實例

Snort是一種開放源代碼的網絡入侵檢測系統,因此我們可以根據網絡的變化,編寫新的規則來實現對網絡的保護。

在命令行中輸人啟動Snort的命令C:snortin>snort-dev-1 c:snortlog -h 222.18.28.53/24 -c c:snortetcsnort.conf,這個命令以網絡人侵檢測系統的工作模式啟動Snort,并捕獲網絡的所有數據包,存放到Mysql數據庫中。

然后,我們就可以根據網絡的實際情況來編寫規則。例如我們想監控某種特定的Web內容,就可以按下面的步驟來編寫一條規則以實現對網絡的監控。

首先,因為HTTP流量是建立在TCP之上的,所以我們需要為該規則建立它使用的TCP協議。

其次,根據你想監控的目標地址來建立規則。比如,你想監控你指定的任何外部地址和它的整個內部網絡,這樣你需要在規則頭中使用﹩EXTERNAL_NET變量和﹩HOME_NET變量;同時你還想讓該規則應用到Web服務器,你還需要用到﹩HTTP_PORTS來標志與HTTP連接相關的段端口。這樣,形成的規則頭為

Alert tcp ﹩EXTERNAL_NET﹩HTTP_PORTS ->﹩HOME_NET any

其中,﹩HOME_NET any是指HTTP請求可以選擇目標地址中的任意的端口。

然后,就是編寫規則選項來指定你想要監控的內容。假如你想對上面地址中的某個網站的所有的訪問進行監控,你就可以把規則選項設置如下:

(msg:"POSSIBLE B-HAT packetstrom content";content:"packetstorm";nocase; flow: to_client; priority:3; rev:1; sid:1000001;)

該規則就是對任何包含“packetstorm”的內容報警。該規則分配了的優先級為3,將它設置為當TCP會話中出現ACK數據包時觸發。

通過以上的例子,我們可以看出,只要我們只要懂得了Snort的規則的基本原理后,我們就可以根據我們所在的網絡的實際情況,編寫規則來保護網絡的安全。

7 結束語

Snort作為一個簡潔、高性能、易于擴展的網絡入侵檢測系統,這使得它廣泛應用到中小企業的網絡防御系統中。而今由網絡入侵檢測系統、防火墻、病毒防護軟件等一起構成多層次的、全面的網絡安全防御體系受到越來越多的企業的歡迎,因此我們可以預言基于Snort的入侵檢測系統將會被應用得越來越廣泛。

參考文獻:

[1] 宋勁松.網絡入侵檢測——分析、發現和報告攻擊[M].北京:國防工業出版社,2004:30.

[2] 唐正軍,李建華.入侵檢測技術[M].北京:清華大學出版社,2004:7-8.

[3] 楊延玉,張同光.入侵檢測系統Snort的研究和應用[J].平原大學學報,2007(4):105-106.

[4] 唐正軍.入侵檢測技術導論[M].北京:機械工業出版社,2004:16-17.

收稿日期:2008-04-05

作者簡介:張治國(1983-),男, 重慶萬州人,碩士研究生,研究方向:網絡技術、網絡安全;秦國亮,男,河南安陽人,碩士研究生;駱德全,男,四川攀枝花人,碩士研究生。

91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合