使用Snort1.7
westfox(
[email protected])06/08/2001
1. 簡介
2. 安裝(Linux)及配置
3. 使用Snort
4. 入侵檢測
5. Snort Addons
6. 參考資料
1. 簡介
Snort是一個開放源碼的網絡入侵檢測系統。Snort的功能包括
1) 采用Libpcap捕獲數據鏈路層的分組並進行協議棧分析(TCP/IP協議)。
2) 在內部Snort使用Misused檢測模型進行入侵檢測,即通過一個完整的入侵規則庫來實時匹配並探測入侵行為。這個規則庫非常全面,包含了探測緩沖區溢出,端口掃描,CGI攻擊等等,並處於不斷更新當中。如果你使用nmap或Trin00等進行攻擊,可能你就會被snort輕易的發現。Snort也允許用戶方便的編寫並加入自己的規則。
3) 日志可以存儲成Tcpdump二進制格式,或ASCII格式,或數據庫格式(包括mysql,PostgreSQL),甚至包括XML格式。
2. 安裝(Linux)及配置
以Linux平台為例,安裝很簡單,
$tar xzvf snort-1.7.tar.gz
$cd snort-1.7
$./configure
$make
Make之後,在當前目錄下會產生一個snort可執行文件。
snort的配置文件使snort.conf,配置包含四步
1)設置網絡相關變量,
IDS需要區分“內網”和外網,比如我所在子網IP是202.197.40.91,則配置為
var HOME_NET 202.197.40.0/24 #內網
var EXTERNAL_NET any #外網,關鍵字any這裡表示HOME_NET之外的所有地址
var DNS_SERVERS 202.197.32.12 #DNS 服務器
2)配置預處理器
預處理器是snort在捕獲分組時對分組作的一些"預處理"動作,比如探測過小的IP碎片,重組 IP分組,重組TCP報文等,snort預處理程序為spp_*.c形式,比如spp_defrag.c實現重組IP包。用戶可以預處理配置參數,如
preprocessor minfrag: 128
設置碎片小於128字節為非法。
3) 配置輸出插件(output plugins)
Snort的插件結構允許開發者擴展snort的功能。輸出插件負責信息的輸出,你可以選擇ASCII文本文件存儲日志,也可以選擇存儲到MySQL數據庫中,也可以使用IAP協議將信息傳給管理器Manager(參見snortnet)。
這是一個MySQL的例子
output database: log, mysql, user=westfox dbname=detector host=localhost passWord=t123 port=1234
上面例子表示使用MYSQL RDBMS,數據庫名為detector,用戶名westfox,密碼t123,本地存儲,MySQL Server端口號為1234。
Snort源代碼中contrib目錄下有一個create_mysql文件,可以用來方便的構造snort所需的MySQL庫表結構,假設你已新建了一個名為detector,並將足夠的權限交給westfox,則
$mysql detector -u westfox -p <./contrib/create_mysql
上面的命令就可以建好detector庫的表結構。
4) 定制Snort 規則集(Rule Set)
Snort的規則集是一般的文本文件,命名為*-lib,如backdoor-lib處理backdoor類型的入侵。所有這些*-lib文件都用“include”包含進snort.conf(1.6.3版本中名為snort-lib)中,如果用戶對某種攻擊類型的探測不感興趣,可以簡單將相應的一行注釋掉。如
-------Cut from snort.conf---------
include webcgi-lib
#include webcf-lib 你對ColdFusion並不感興趣
include webiis-lib
include webfp-lib
include webmisc-lib
include overflow-lib
include finger-lib
include FTP-lib
include smtp-lib
include my-lib #用戶自己編寫的規則文件
-------------------------------------
用戶也可以自己編寫規則文件,如My-lib,,Snort規則編寫語法以有人譯出,這裡不再敘述。
3.使用Snort
Snort可以工作在三種模式下:
1) 嗅探器sniffer:
命令:snort -v [-d][-X]
Snort使用Libpcap包捕獲庫,即TCPDUMP使用的庫。在這種模式下,Snort使用網絡接口的混雜模式讀取並解析共享信道中的網絡分組。BPF表達式可用來過濾流量。
-v verbose
-d 轉儲應用層數據
-X 轉儲從鏈路層開始的原始包
2) 分組日志模式
命令:snort -l dir [-h hn][-b]
這種模式下以ASCII格式記錄解析出的分組。
-l Directory snort將把日志放在這個目錄下
-h X.X.X.X 設置本地子網號
-b 日志使用TCPDUMP二進制格式
3) 入侵檢測模式
命令: snort -c snort.conf [-l dir]
必須載入規則庫才能進入入侵檢測模式。即
#./snort -c snort.conf
snort將報警信息放入/var/log/snort目錄下,可以用-l選項來改變目錄
4. 入侵檢測
Snort是一個輕量級的網絡入侵檢測系統(NIDS),采用Misused 模式進行檢測。在1.7裡,新增加的Spade插件使得Snort支持Anormal模式檢測。Snort的檢測規則是二維的,即包含規則頭和規則選項兩部分,這比較其他IDS定義的規則來說簡單的多。Snort新的插件reference可以將確定的攻擊行為同Bugtraq, CVE , arachNIDS, McAfee virus這些標准的攻擊標識庫結合,給出在線的有關此攻擊的URL參考資料。snort的探測規則庫也是時時更新反映上面這些庫的變化,用戶可以到www.snort.org上下載新的規則庫文件。
Snort本身具有良好的擴展性,包含預處理插件,插件和輸出插件三類plugins,snort運行的一個流程如下
------------------------------------------------------------------------
Libpcap捕獲分組---->TCP/IP協議棧分析---->規則探測---->日志和報警
預處理插件 插件 輸出插件
------------------------------------------------------------------------
從上面可以知道,在Snort處理流程的三個重要環節,開發者都可以編寫自己的plugins來擴展功能。
當然,一般用戶僅用snort自帶的探測庫也可以探測絕大多數的攻擊。以端口掃描攻擊為例標准的snort.conf文件有一行配置portscan預處理器(源程序spp_portscan.c):
preprocessor portscan: $HOME_NET 4 3 portscan.log
上一行表示對於目標地址屬於本地子網的IP流,如果在少於三秒內發現連續四次TCP SYN包或UDP的"SYN"包,指示有portscan攻擊,並記錄到portscan.log文件中。
Snort除了統計指定時間內的連接次數外,還根據各種掃描模式的特征來探測,這些規則在scan-lib中,如
alert tcp any any -> $HOME_NET any (msg:"Possible NMAP Fingerprint attempt"; flags: SFPU;)
探測NAMP的Fingerprint掃描,標志是SYN,FIN,PSH,URG全置位。
5. Snort Addons
Snort1.7的contrib目錄下包含了幾個有用的snort工具。
5.1 snort-net
Snort-net是一個建立在snort上的分布式入侵檢測系統(DIDS)。在snort-net裡,多個snort作為感應器(sensor)分布在各網段捕獲信息,snort-net提供一個管理器Manager,Manager負責和這些sensor聯絡,並提供一個管理者界面。Snort-net的Sensor和Manager之間采用IAP協議通信。
Snort-net遠非完善缺陷包括
1) Snort-net所依賴的libiap庫(IAP協議的實現庫)現有的實現沒有達到IAP0.3協議所規定的功能,包括最重要的TLS1.0協議支持。
2) Manager只能做簡單的信息收集和顯示工作,而沒有分析綜合的能力
3) 顯示界面過於簡陋
4)傳遞的消息格式缺乏靈活性
雖然有這些缺點,snort-net給出了snort向DIDS發展的框架。
5.2 Spade
Spade即Statistical Packet Anomaly Detection Engine(統計分組異常檢測引擎),它作為一個預處理插件存在,對Snort捕獲到的包做異常檢測(Anomaly Detection)。Spade僅僅是實驗性質的,並不實用。
5.3 IDMEF-XML
因特網工程任務組織(IETF)設立了一個入侵檢測工作小組(IDWG),他們制定了一個入侵檢測消息交換格式(IDMEF),IDMEF用XML語言描述。Idmef-xml輸出插件將snort報警消息轉換成IDMEF-xml格式。Snort通過這種消息格式可以將報警消息傳遞給別的軟件做進一步,只要對方遵循IDMEF-XML格式即可。
6. 參考資料
Snort Home http://www.snort.org
Bugtrap http://www.securityfocus.com
CVE http://www.cve.mitre.org
arachNIDS http://www.whitehats.com/ids/
IDMEF http://www.silicondefense.com/idwg/idmef/
Bugtrap http://www.securityfocus.com
CVE http://www.cve.mitre.org
arachNIDS http://www.whitehats.com/ids/
IDMEF http://www.silicondefense.com/idwg/idmef/