自:https://www.newbyter.net/?p=1403
一、編譯
編譯是在Ubuntu 11.04 (32bit)下完成的,Ubuntu采用默認(rèn)安裝方式。
Snort本身用到了一些第三方的庫(kù),這些庫(kù)默認(rèn)在Ubuntu下并沒(méi)有安裝,因此需要我們自己手動(dòng)安裝。具體包括:libdnet-1.12、libpcap-1.0.0、pcre-8.12、zlib-1.2.5等,除此之外,還需要安裝build-essential、flex和bison包。
這些第三方庫(kù)的編譯安裝比較簡(jiǎn)單,一般只需要執(zhí)行以下三個(gè)命令即可:
./configure
make
sudo make install
當(dāng)所依賴的包和庫(kù)均已安裝完畢后,就可以編譯安裝snort了。
Snort的源碼可以從www.snort.org獲得,本文使用的snort源碼版本為2.9.0.5,下載后的壓縮包名為snort-2.9.0.5.tar.gz。另外,還應(yīng)下載daq源碼,因?yàn)閟nort在編譯時(shí)需要用到該庫(kù)。daq在snort的官方站點(diǎn)也直接提供了源碼下載。本文使用的daq版本為0.5,下載后的壓縮包名為daq-0.5.tar.gz。最后,需要下載snort的規(guī)則庫(kù),因?yàn)槲覀冃枰猻nort工作在IDS模式下,這需要提供相應(yīng)的入侵檢測(cè)規(guī)則庫(kù)。幸運(yùn)的是,snort官方同樣提供了規(guī)則庫(kù)下載,不過(guò)分為收費(fèi)版本和免費(fèi)版本。只需要注冊(cè)一個(gè)免費(fèi)的賬戶就可以下載免費(fèi)版本的規(guī)則庫(kù)了。本文使用的版本庫(kù)下載后的壓縮包名為snortrules-snapshot-2905.tar.gz。編譯時(shí)并不需要用到規(guī)則庫(kù),運(yùn)行時(shí)才會(huì)用到。
接下來(lái)是snort的編譯過(guò)程,直接./configure是可以的,但是這樣編譯出來(lái)的snort一些功能沒(méi)有啟用,不能滿足我們的需要,所以必須使用一些配置選項(xiàng),具體如下:
./configure –enable-ipv6 –enable-gre –enable-mpls –enable-targetbased –enable-decoder-preprocessor-rules –enable-ppm –enable-perfprofiling –enable-zlib –enable-active-response –enable-normalizer –enable-reload –enable-react –enable-flexresp3
完畢后,使用 make 命令進(jìn)行編譯,編輯完畢后使用 sudo make install 完成安裝。
下面是編譯過(guò)程中的截圖:

【圖1】snort編譯中

【圖2】snort編譯完畢
二、安裝和運(yùn)行
編譯snort成功后,執(zhí)行 sudo make install 就順利安裝了。snort將會(huì)被安裝到 /usr/local 目錄下。
接下來(lái)要讓snort運(yùn)行起來(lái)。現(xiàn)在需要解壓出剛才下載的snort規(guī)則庫(kù)壓縮包,假設(shè)解壓后的文件夾名字叫做snort-rules-2905,該文件夾下的etc目錄下有一個(gè)snort.conf文件,這個(gè)文件里面提供了一些默認(rèn)配置,對(duì)本文來(lái)說(shuō)是足夠了,但是要運(yùn)行起來(lái),還有一個(gè)細(xì)節(jié)需要修改:
查找 compress_depth 20480 decompress_depth 20480 并將其中的兩個(gè)20480 都替換為 65535
修改后記得保存一下。然后還需要將 snort-rules-2905/so_rules/precompiled/Ubuntu-10-4/i386/2.9.0.5 文件夾拷貝到 /usr/local/lib 下,并更名為 snort_dynamicrules。
完成上面的步驟后,就可以準(zhǔn)備開(kāi)始運(yùn)行snort了。
打開(kāi)控制臺(tái),切換到 /usr/local/bin 目錄下,執(zhí)行:
sudo ./snort -dev -l /home/jian/tmp/log -h 192.168.1.0/24 -c /home/jian/soft/snort-rules-2905/etc/snort.conf
其中 -l 參數(shù)指明了日志文件的存放位置,-h 參數(shù)指明了檢測(cè)的網(wǎng)段,-c 參數(shù)指明了配置文件的位置。
如果運(yùn)行成功,將會(huì)顯示類(lèi)似下面的畫(huà)面:
行snort-未修改.png)
【圖3】成功運(yùn)行snort
三、調(diào)試
為了方便分析snort的源碼,以及進(jìn)行后續(xù)開(kāi)發(fā),一個(gè)方便的調(diào)試和開(kāi)發(fā)環(huán)境是相當(dāng)重要的。本文選擇采用Eclipse IDE for C/C++ Developers (下文簡(jiǎn)稱Eclipse)作為調(diào)試和開(kāi)發(fā)環(huán)境。
首先打開(kāi)Eclipse,不過(guò)需要以管理員權(quán)限打開(kāi),原因是snort在以IDS模式運(yùn)行時(shí)需要管理員權(quán)限,如果直接打開(kāi)則Eclipse運(yùn)行在普通用戶權(quán)限下,雖然能編譯,但是運(yùn)行snort將失敗。解決這一問(wèn)題有多種方法,但是直接以管理員權(quán)限運(yùn)行Eclipse是一個(gè)比較簡(jiǎn)單直接的解決辦法。
具體為:切換到eclipse所在的目錄下,執(zhí)行 sudo ./eclipse 即可。
打開(kāi)Eclipse后,依次選擇菜單 File → New → Project,然后在彈出的對(duì)話框中,選擇C/C++ 分類(lèi)下的Makefile Project with Existing Code,如下圖:
目.png)
【圖4】選擇項(xiàng)目類(lèi)型
然后點(diǎn)擊 Next,進(jìn)入下一步。這一步需要告訴Eclipse我們的snort源碼在哪個(gè)位置,并選擇編譯器類(lèi)型。編譯器類(lèi)型我們選擇Linux GCC,如下圖所示:

【圖5】定位snort源碼位置并選擇編譯器類(lèi)型
完畢后點(diǎn)擊Finish,Eclipse就會(huì)立刻開(kāi)始編譯Snort的源碼。
Eclipse編譯源碼是直接根據(jù)我們之前在控制臺(tái)下切換到snort源碼目錄執(zhí)行的./configure(帶相應(yīng)參數(shù))后生成的makefile文件來(lái)編譯的,因此需要確保Eclipse在編譯之前我們就已經(jīng)手動(dòng)調(diào)用了./configure(帶相應(yīng)參數(shù))已經(jīng)生成了正確的makefile文件。
完成至此,已經(jīng)離最后的成功之差一步了:
打開(kāi)Debug Configurations,并切換到Arguments選項(xiàng)卡,輸入:
-dev -l /home/jian/tmp/log -h 192.168.1.0/24 -c /home/jian/soft/snort-rules-2905/etc/snort.conf
如圖:

【圖6】配置Debug Configurations
好了,點(diǎn)擊Apply按鈕,然后Close即可。
同樣的,也應(yīng)該配置Run Configurations,這里不再贅述。
通過(guò)以上配置,我們就可以開(kāi)始調(diào)試snort源碼了。也能夠隨心所欲的修改snort中的源碼并重新編譯,進(jìn)行各種實(shí)驗(yàn)了。
posted on 2012-05-22 11:09
老馬驛站 閱讀(3357)
評(píng)論(0) 編輯 收藏 引用 所屬分類(lèi):
linux 、
snort