?

基于Snort的邊界數據包安全性檢測

2011-03-14 06:44池水明孫斌
網絡安全技術與應用 2011年3期
關鍵詞:網段攻擊行為數據包

池水明 孫斌

金華利誠信息技術有限公司 浙江 321000

0 前言

監控網絡數據包安全性的網絡監聽技術在網絡安全領域是一把雙刃劍,除了提供黑客截獲網絡數據的功能外,還可以幫助網管人員監視網絡狀態和數據流動、分析網絡的流量以及排除網絡故障。邊界數據包的安全一般而言,是利用網絡監聽技術對從外部網絡進入內部網絡的所有數據包進行安全性的檢查,匹配已建立的惡意數據包規則庫,分析數據包的異常情況,對特征匹配和有異常的數據包進行特殊處理,以杜絕惡意數據包的入侵,保證內網的安全。

網絡入侵檢測系統是提供對網絡傳輸進行實時監控,在發現可疑傳輸時即時發出警報或采取實際措施解決的設備。網管人員可以利用入侵檢測系統主動、實時的發現、防范網絡上各種攻擊行為,維系網絡的正常使用。

在入侵檢測系統中,根據分析方法可分為誤用檢測和異常檢測,Snort屬于基于網絡的誤用IDS。它是基于規則的網絡搜索機制,對數據包進行基于內容的模式匹配,以發現入侵和攻擊行為。目前Snort能夠檢測出諸如緩沖區溢出、端口掃描、CGI攻擊、拒絕服務攻擊等多種常見攻擊類型。

1 Snort

Snort是一款功能強大的輕量級IDS自由軟件,提供實時數據流量分析和檢測IP網絡數據包的能力,能夠進行協議分析,對數據包內容進行搜索/匹配,還可以檢測各種不同的攻擊方式,對攻擊進行實時報警等強大功能。此外,Snort可以使用簡單、可擴展的規則描述語言進行軟件的移植和功能的擴展。

從Snort官網上可以進行規則庫的升級或更改,也可以根據實際網絡環境自定義檢測規則,通過測試成功后,加入到規則庫中使用。當出現新的入侵行為或蠕蟲病毒時,Snort官網沒有及時提供新規則,這時管理員就可以自行提取新入侵行為或蠕蟲病毒的特征碼,建立自己的新規則加入本地規則庫。

Snort的工作原理是對已知各類攻擊的特征模式進行不同方式的匹配,包括利用將網卡設置在混雜模式下的嗅探器被動地進行協議分析,以及對數據報文進行解釋分析其特征。Snort是基于規則檢測的入侵檢測工具,它針對每一種攻擊行為,都提取出它的特征值并利用規則描述語言按照規范寫成檢測規則,從而形成一個規則庫。另外還將捕獲的數據包按照一定的算法在規則庫中進行逐一匹配,若匹配成功,則認為該數據包具有與之匹配規則的攻擊行為,應對其進行特殊處理。

整個Snort系統架構的著眼于性能、簡潔和靈活性3個方面。Snort系統結構由以下模塊構成:數據包解析器、預處理器、檢測引擎、日志/報警模塊、輸出模塊。Snort的體系結構如圖1所示。

圖1 Snort體系結構

2 網絡部署

對于IDS的部署可以根據內部網絡的拓撲結構和實際需要而定??梢愿鶕枰O控的具體需求在一個或多個位置部署,根據攻擊的來源(內部入侵、外部入侵、或者兩個都要檢測)和所要監控的網段等多方面因素來決定IDS放置的位置。為了低成本而又高效的對進入內部網絡的數據包進行檢測,并利用Snort入侵檢測系統作為邊界數據包安全性檢測工具,需要將Snort部署在網絡的邊界位置。

結合我公司的實際網絡情況,將Snort IDS部署在網通線路的邊界位置,以檢測所有來自網通主干網絡的數據包安全性,達到保護內部網絡免受外來惡意數據包的攻擊。如圖2是我公司網通線路下的含有DMZ區域的簡單局域拓撲結構,為了實現對所有進入內部網絡的數據包進行檢查,而無論數據包是訪問DMZ區域的服務器,或者是企業內部網絡,可以將Snort IDS部署在防火墻內部的核心交換機上,通過核心交換機的鏡像功能將DMZ端口和內部網絡端口的數據鏡像給Snort IDS所在的端口,這樣即可實現對來自網絡線路的數據包的監控。

圖2 Snort IDS邊界網絡部署

另外對于交換網絡需要監控一些特殊的網段時,還可以將Snort IDS部署在該網段所在的網段中心交換機的某個端口上,通過交換機的鏡像功能將需要監控的網段鏡像到Snort監控的端口,可以實現對內部特定網段的監控,以保證重要網段的安全運行。當然,也可以接入特定的部門中心交換機,以對重要的部門網段進行監控。

3 數據包檢測方案

數據包安全性的檢測歸根到底就是對現已知的攻擊行為、蠕蟲病毒、木馬等網絡入侵行為的特征進行提取,按照特定的IDS描述語言,建立基于本地IDS的特征規則庫,再對進入內部網絡的數據包進行給定算法進行匹配,當有進入數據包滿足規則庫中的某一特征時,需要對其進行特殊處理,如刪除、發出警告等。

3.1 規則庫結構

構建一個符合Snort IDS 應用、包含當前公開的所有攻擊行為、滿足本地實際用途的規則庫是一項艱巨的任務。當前國際上公開的網絡入侵行為以 CVE列表中列出的漏洞在安全領域普遍認為是最為全面的,在CVE漏洞庫的基礎上,建立IDS規則庫,需要對CVE漏洞特征、體系結構等有一定的了解,建立以 CVE標準為系統規則庫的漏洞數據源,采用Snort 的規則描述語言對漏洞規則加以描述,構建具有CVE 特征的Snort入侵檢測規則庫。

基于CVE 的Snort IDS規則庫可以采用模塊化的規則庫結構加以構建。通過對 CVE 列表中的漏洞按照系統分類,對其級別加以劃分,再根據不同的 CVE 漏洞類別建立子規則庫模塊。本地對邊界網絡數據包進行監控,需要對網絡上流行的漏洞進行分類以建立各類子模塊的規則庫,子規則庫將不同類型的 CVE漏洞特征編寫成規則放入到各個子模塊中。分類的規則庫如:Denial of service、Shellcode detect、Misc activity、Web-IIS、Web-cgi 等,對子規則庫的分類越詳細,系統對惡意數據的處理能力越強。對規則庫的分類不僅可以分類CVE漏洞的類別,方便研究及規則庫的建立管理,同時大大減少了數據包在規則庫中的匹配時間。

結合企業實際運營情況,對部署在邊界的Snort IDS進行規則庫建立,首先對規則庫進行分類,分成的若干子特征規則庫如圖3所示。

圖3 規則庫結構

3.2 Snort規則語法

Snort 的工作過程就是通過解析規則集形成規則樹,再利用 libpcap 對采集到的數據進行模式匹配,若匹配成功,則認為是有攻擊行為發生,做出相應的處理動作。因此,Snort規則是它的核心,為了實現對網絡數據包的安全性檢測,必須擁有一個強大的入侵特征規則庫。規則庫中的每條規則都需要嚴格按照Snort 規則語法進行編輯、測試方可投入使用。

Snort使用一種簡單的、輕量級的規則描述語言,這種語言靈活而強大。在開發snort規則時要遵循在大多數Snort 規則都寫在一個單行上,或者在多行之間的行尾用“/”分隔。Snort 的每條規則由兩部分組成,即規則頭和規則選項,其形式是“規則頭(選項)”模式。

規則頭包含規則動作、協議、源IP 地址、目的IP 地址、網絡掩碼、源端口、目的端口、方向操作符、CVE ID 號等信息。規則頭定義了數據包“來自哪里,去哪里,去做什么”以及發現滿足這個規則所有條件的數據包時Snort應該采取什么措施等信息都可以從規則頭中得知。

規則選項包括報警信息以及用于確定是否觸發規則響應動作而需要檢查的數據包區域位置等諸多信息。規則選項中可能有一個或多個選項,不同選項之間使用“;”分隔開,它們之間為邏輯“與”的關系;選項由關鍵字和參數組成,每個關鍵字和它的參數間使用“:”加以分隔。

Snort規則功能強大靈活,得益于它的選項關鍵字內容很豐富。例如:

Msg ——在警報和記錄的數據中打印消息;

Flags ——檢查tcp flags的值;

Content ——在數據包的有效荷載中搜索特定的模式串;

Offset ——content選項的修飾符,設定開始搜索的位置。

3.3 規則庫建立

作為IDS系統中的出色者——Snort自身也提供了強大的規則庫,注冊用戶可以從 snort的官方網站上免費下載最新的規則庫。但往往企業從業務需求、安全等多方面考慮,保密內部網絡使用的一些安全防護設備和采取的策略措施等一些機密信息,參考Snort官方的規則庫,分析CVE 列表中漏洞特征,自行構建內部網絡的規則庫。

在設計檢測數據包安全性的Snort 規則庫方案時,不僅要盡可能減小檢測的范圍,還要考慮快速地結束一個無效的檢測過程(即證明該數據包是安全的,在特征庫中沒有找到匹配項)。那么為了實現范圍小、時間短的目標,就需要從眾多的規則選項參數中選出最適合的、最容易達到匹配目的的參數先進行匹配。

例如TCP報文,就TCP數據包本身來說,它的特征就是源端口和目的端口。對于一般的連接,可以從保留端口和非保留端口來判斷通信雙方是服務器端和客戶端,因此保留端口可以作為獨特的參數使用在Snort 的規則選項中。Snort可以檢測出保留端口的位置,根據保留端口是源或者目的端口,判斷數據包在服務器和客戶端之間的流向。對 TCP 規則定義可以以端口、標志位、協議字段為特征,或者以某個數據段為字符串特征。

如果對TCP 9876端口發送“GetInfo | 5b |”觸發事件,那么就定義規則為“alert tcp $ EXTERNAL_NET any - >$ HOME_NET 9876 (msg:“BACKDOOR tools getinfo”; flow: to _ server, established; content:“GetInfo | 5b | ”; )”。該規則對端口和字符特征同時進行了匹配,但如果將端口修改了,可能改規則就無效了。

因此,在定義規則時,將漏洞的特征進行組合使用,才會更加有效的提高IDS的工作效率。利用Snort規則檢測數據包的安全性,同時也通過嗅探獲取數據包來分析提取特征來創建規則。當出現新的漏洞或攻擊時,通常都是采用流量分析來創建新規則。對于任何一個新的攻擊,首先要知道其數據包的類型、數據流流向等基本信息用于編寫規則頭部,再從安全報告或者數據抓包中找到威脅數據包的特征,以便更新規則庫,阻止攻擊行為的再次發生影響內部網絡的正常運營。

3.4 環境測試

在內網邊界的核心交換機上,通過鏡像將進出DMZ和內網的所有數據包鏡像給Snort IDS,以檢測數據包安全。這里將Snort IDS 安裝在Centos 5.5 環境下,結合Apache作為Web服務器、Mysql 數據庫以及第三方分析管理工具BASE(Basic Analysis and Security Engine)和Barnyard 建立基于邊界的 IDS snort檢測數據包安全性的實施方案的環境平臺。借助SVC 漏洞庫提取各種攻擊行為的特征,參考Snort本身的規則庫和Snort 規則描述語言進行規則數據庫建立。該Snort IDS投入使用后,對進出網絡數據包的安全性檢測的結果進行報警或作其他處理。

4 結束語

Snort的擴展性和可移植性,可以很方便用戶定身量做自己的規則庫。隨著現在網絡攻擊的日益頻繁,來自網絡的數據包安全性日益讓人擔憂,Snort 的免費、跨平臺等特性,使得不管是企業還是個人,都有機會搭建自己的IDS系統進行網絡數據包的檢測、學習、研究等。利用國際公開的CVE漏洞數據庫和開源的Snort系統,搭建網絡邊界的安全檢測系統無論是研究人員還是企業都是樂見其成的事。同時,目前軟件漏洞日漸頻繁,網絡攻擊日新月異,企業在面對這些日益嚴重的網絡威脅時,必須不斷及時添加新規則以有效的檢測攻擊行為,提高Snort的檢測能力,阻止惡意數據包進入網絡,保護內部網絡免遭破壞。

[1]孫立媛,朱亦寧,孫悅軒.Snort規則的分析與實現[J].計算機安全.2009.

[2]趙蘇驊.Snort規則的分析與制定[J].四川教育學院學報.2008.

[3]黃昆.Snort規則語法在基于 CVE 特征的入侵檢測系統中的應用[J].應用科技.2004.

猜你喜歡
網段攻擊行為數據包
住院精神病人暴力攻擊行為原因分析及護理干預
二維隱蔽時間信道構建的研究*
基于人工蜂群算法的無線網絡攻擊行為的辨識研究
民用飛機飛行模擬機數據包試飛任務優化結合方法研究
中小學生人際寬恕與攻擊行為傾向的發展研究
——以六年級至初三為例
單位遭遇蠕蟲類病毒攻擊
可變編組動車組制動系統TCN網絡信號傳輸需求研究*
網上鄰居跨網段訪問故障
SmartSniff
三層交換技術在大型醫療設備互聯時的應用
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合