snort 2的新特性
在snort 2出現(xiàn)之前,由于snort本身存在的缺陷及網(wǎng)絡(luò)入侵檢測系統(tǒng)的先天不足,使snort在對抗使用了IDS躲避技術(shù)的網(wǎng)絡(luò)攻擊時完全處于下風。在這種背景下,以Martin Roesch為首的snort開發(fā)團隊開始了snort 2的開發(fā)。snort 2采用了很多新的技術(shù),大量代碼被重寫,體系結(jié)構(gòu)也發(fā)生了根本性的變化。與snort-1.x(不包括snort-1.9,因為snort-1.9屬于snort 2)相比,snort 2具有以下優(yōu)點:
◆采用更高效的檢測和模式匹配算法,使性能比舊版本提高了5倍以上。
◆具有更好的擴展性,采用插入式檢測引擎,可以作為標準的網(wǎng)絡(luò)入侵檢測系統(tǒng)、主機入侵檢測系統(tǒng)使用;與netfilter結(jié)合使用,可以作為網(wǎng)關(guān)IDS(Gateway IDS,GIDS);與nmap等系統(tǒng)指紋識別工具結(jié)合使用,可以作為基于目標的IDS(Target-based IDS)。
◆開發(fā)人員重寫了協(xié)議分析代碼,使snort 2具備出色的協(xié)議分析能力。
◆支持多種格式的特征碼規(guī)則輸入方式,如數(shù)據(jù)庫、XML等。
◆把輸出部分從主體代碼中分離出來,由單獨的程序barnyard處理snort的輸出。
除了上面所敘述的特點之外,snort 2還有一個商業(yè)入侵檢測系統(tǒng)所不具備的優(yōu)點:費用低廉。這對于預算比較緊張的企業(yè),無疑非常具有吸引力。而且,自由軟件開發(fā)人員陸續(xù)開發(fā)了眾多輔助性的軟件。這些軟件包括圖形化的管理系統(tǒng)、日志分析工具、檢測插件、圖形化的規(guī)則編寫軟件,以及規(guī)則自動升級軟件等。對這些軟件進行合理地選擇、集成,可以形成一套比較完善的分布式入侵檢測系統(tǒng)。
分布式snort入侵檢測系統(tǒng)
分布式snort入侵監(jiān)測系統(tǒng)的主要組成部分包括中央分析服務器、IDS探針和協(xié)同代理。一般情況下,一個企業(yè)的網(wǎng)絡(luò)可以分為外部網(wǎng)絡(luò)、企業(yè)內(nèi)部網(wǎng)絡(luò)和DMZ區(qū)等。入侵監(jiān)測系統(tǒng)既可以部署在防火墻之外,也可以部署于防火墻之內(nèi)。部署于防火墻之外,可以獲得更多攻擊數(shù)據(jù),但是誤報警率也高。因此一般情況下,入侵檢測系統(tǒng)部署于防火墻之后是比較明智的。
中央分析服務器
中央分析服務器是整個系統(tǒng)的心臟和靈魂。它一般由一個數(shù)據(jù)庫系統(tǒng)和一個Web服務器組成,為系統(tǒng)管理員提供交互式Web管理界面。在中央分析服務器上,管理人員可以進行遠程IDS探針管理、攻擊數(shù)據(jù)查詢、實時監(jiān)視網(wǎng)絡(luò)攻擊及深入分析,如攻擊方向的遷移、識別攻擊模式等。MySQL數(shù)據(jù)庫、Apache服務器、SnortCenter和ACID(Analysis Console for Incident Databases)是一個不錯的snort平臺系統(tǒng)組合。
SnortCenter是一個基于Web的snort探針和規(guī)則管理系統(tǒng),用于遠程修改snort探針的配置,起動、停止探針,編輯、分發(fā)snort特征碼規(guī)則。如果與cron和curl結(jié)合使用,SnortCenter還可以定時為每個探針進行規(guī)則升級,自動從snort官方站點獲得最新特征碼規(guī)則 ()。SnortCenter的下載地址為。ACID(Analysis Console for Incident Databases)是一個基于PHP的分析引擎,用于查詢、管理snort探針產(chǎn)生的數(shù)據(jù)庫。ACID的下載地址為。
IDS探針和協(xié)同代理
代理是向中央分析服務器報告攻擊信息的軟件,是分布式入侵檢測系統(tǒng)的一個重要部件。SnortCenter Agent和普通意義上的協(xié)同代理軟件有些不同,它只是一個SnortCenter進行探針管理的代理工具。通過SnortCenter Agent,SnortCenter能夠起動、關(guān)閉受保護主機上的snort探針;修改探針的配置和使用的特征碼規(guī)則。SnortCenter Agent是用Perl語言編寫的,可以在不同的平臺上使用。為了防止登錄過程中賬戶和密碼的泄漏,它使用SSL和SnortCenter之間進行通信。snort探針是真正進行入侵檢測的組件,其源代碼可以從獲得。
系統(tǒng)安裝及部署
數(shù)據(jù)庫的安裝和設(shè)置
在分析服務器上,首先要建立記錄snort報警和日志數(shù)據(jù)庫及SnortCenter、ACID需要的數(shù)據(jù)庫。在臨時目錄中解壓縮snort的源代碼,進入contrib目錄,建立數(shù)據(jù)庫,并進行相關(guān)的配置。代碼如下:
# mysql -u root -p
create database snort;
connect snort
source create_mysql
grant CREATE, INSERT, SELECT, DELETE, UPDATE on snort.* to snort;
grant CREATE, INSERT, SELECT, DELETE, UPDATE on snort.* to snort@localhost;
grant CREATE, INSERT, SELECT, UPDATE on snort.* to acidviewer;
grant CREATE, INSERT, SELECT, UPDATE on snort.* to acidviewer@localhost;
connect mysql
set password for 'snort'@'localhost' = password('yourpassword');
set password for 'snort'@'%' = password('yourpassword');
flush privileges;
安裝SnortCenter
把最新版的SnortCenter源代碼解壓縮,將目錄里面的文件復制到Apache的DocumentRoot目錄(如/usr/local/apache/htdocs)。下載SnortCenter需要的adodb(),安裝到SnortCenter所在的目錄,然后建立SnortCenter數(shù)據(jù)庫。代碼如下:
$ tar zxvf snortcenter-v0.9.6.tar.gz
$ cp snortcenter-v0.9.6/* /usr/local/apache/htdocs/
$ tar zxvf adodb250.tgz
$ cp -R ./adodb /usr/local/apache/htdocs/
$ echo "CREATE DATABASE snortcenter;" | mysql -u root -p
完成了基本的安裝之后,需要根據(jù)系統(tǒng)的情況手工編輯/usr/local/apache/htdocs/config.php文件,從而結(jié)束SnortCenter的配置。一般情況下需要修改的參數(shù)見表1。
表1 /usr/local/apache/htdocs/config.php文件需要修改的參數(shù)

完成上面的配置后,啟動Apache服務器,在瀏覽器的地址欄輸入分析中心服務器的地址,將會得到圖1所示的登錄畫面。
圖1 SnortCenter登陸界面

系統(tǒng)缺省賬戶是admin,密碼為change。登錄進入系統(tǒng)以后,點擊admin→Create DB Tables選單,完成SnortCenter的安裝,如圖2所示。
圖2 創(chuàng)建SnortCenter數(shù)據(jù)庫

安裝ACID
ACID需要PHP支持gd,并對PHPLot()、ADODB進行支持。新版本的ACID(0.9.6b22以后版本)還需要JpGraph()的支持。ACID及相關(guān)軟件安裝到指定位置之后,編輯配置文件acid_conf.php完成其配置,參數(shù)設(shè)置如表2所示。

另外,ACID本身缺乏必要的訪問控制機制,需要設(shè)置Apache對訪問ACID的用戶提供驗證。
安裝snort探針和SnortCenter Agent
分別進入需要保護主機,安裝snort和SnortCenter Agent。SnortCenter Agent需要SSL的支持,所需模塊可以從得到。安裝代碼如下:
$ ./configure -with-mysql
$ make
$ make install
$ tar -zxvf Net_SSLeay.pm.1.21.tar.gz
$ cd Net_ SSLeay.pm.1.21
$ perl Makefile.PL
$ make install
$ mkdir /opt/snortagent/
$ cp snortcenter-agent-v0.1.6.tar.gz /opt/snortagent
$ cd /opt/snortagent
$ tar -zxvf snortcenter-agent-v0.1.6.tar.gz
$ cd sensor
$ ./setup.sh
需要注意的問題
系統(tǒng)涉及到網(wǎng)絡(luò)中的很多主機,各個snort探針需要通過網(wǎng)絡(luò)時間協(xié)議(Network Time Protocol)實現(xiàn)時間的精確同步。有關(guān)NTP服務器的配置請參考相關(guān)的文檔,這里就不贅述了。