自:https://www.newbyter.net/?p=1403
一、編譯
編譯是在Ubuntu 11.04 (32bit)下完成的,Ubuntu采用默認安裝方式。
Snort本身用到了一些第三方的庫,這些庫默認在Ubuntu下并沒有安裝,因此需要我們自己手動安裝。具體包括:libdnet-1.12、libpcap-1.0.0、pcre-8.12、zlib-1.2.5等,除此之外,還需要安裝build-essential、flex和bison包。
這些第三方庫的編譯安裝比較簡單,一般只需要執行以下三個命令即可:
./configure
make
sudo make install
當所依賴的包和庫均已安裝完畢后,就可以編譯安裝snort了。
Snort的源碼可以從www.snort.org獲得,本文使用的snort源碼版本為2.9.0.5,下載后的壓縮包名為snort-2.9.0.5.tar.gz。另外,還應下載daq源碼,因為snort在編譯時需要用到該庫。daq在snort的官方站點也直接提供了源碼下載。本文使用的daq版本為0.5,下載后的壓縮包名為daq-0.5.tar.gz。最后,需要下載snort的規則庫,因為我們需要snort工作在IDS模式下,這需要提供相應的入侵檢測規則庫。幸運的是,snort官方同樣提供了規則庫下載,不過分為收費版本和免費版本。只需要注冊一個免費的賬戶就可以下載免費版本的規則庫了。本文使用的版本庫下載后的壓縮包名為snortrules-snapshot-2905.tar.gz。編譯時并不需要用到規則庫,運行時才會用到。
接下來是snort的編譯過程,直接./configure是可以的,但是這樣編譯出來的snort一些功能沒有啟用,不能滿足我們的需要,所以必須使用一些配置選項,具體如下:
./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 命令進行編譯,編輯完畢后使用 sudo make install 完成安裝。
下面是編譯過程中的截圖:

【圖1】snort編譯中

【圖2】snort編譯完畢
二、安裝和運行
編譯snort成功后,執行 sudo make install 就順利安裝了。snort將會被安裝到 /usr/local 目錄下。
接下來要讓snort運行起來。現在需要解壓出剛才下載的snort規則庫壓縮包,假設解壓后的文件夾名字叫做snort-rules-2905,該文件夾下的etc目錄下有一個snort.conf文件,這個文件里面提供了一些默認配置,對本文來說是足夠了,但是要運行起來,還有一個細節需要修改:
查找 compress_depth 20480 decompress_depth 20480 并將其中的兩個20480 都替換為 65535
修改后記得保存一下。然后還需要將 snort-rules-2905/so_rules/precompiled/Ubuntu-10-4/i386/2.9.0.5 文件夾拷貝到 /usr/local/lib 下,并更名為 snort_dynamicrules。
完成上面的步驟后,就可以準備開始運行snort了。
打開控制臺,切換到 /usr/local/bin 目錄下,執行:
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 參數指明了日志文件的存放位置,-h 參數指明了檢測的網段,-c 參數指明了配置文件的位置。
如果運行成功,將會顯示類似下面的畫面:

【圖3】成功運行snort
三、調試
為了方便分析snort的源碼,以及進行后續開發,一個方便的調試和開發環境是相當重要的。本文選擇采用Eclipse IDE for C/C++ Developers (下文簡稱Eclipse)作為調試和開發環境。
首先打開Eclipse,不過需要以管理員權限打開,原因是snort在以IDS模式運行時需要管理員權限,如果直接打開則Eclipse運行在普通用戶權限下,雖然能編譯,但是運行snort將失敗。解決這一問題有多種方法,但是直接以管理員權限運行Eclipse是一個比較簡單直接的解決辦法。
具體為:切換到eclipse所在的目錄下,執行 sudo ./eclipse 即可。
打開Eclipse后,依次選擇菜單 File → New → Project,然后在彈出的對話框中,選擇C/C++ 分類下的Makefile Project with Existing Code,如下圖:

【圖4】選擇項目類型
然后點擊 Next,進入下一步。這一步需要告訴Eclipse我們的snort源碼在哪個位置,并選擇編譯器類型。編譯器類型我們選擇Linux GCC,如下圖所示:

【圖5】定位snort源碼位置并選擇編譯器類型
完畢后點擊Finish,Eclipse就會立刻開始編譯Snort的源碼。
Eclipse編譯源碼是直接根據我們之前在控制臺下切換到snort源碼目錄執行的./configure(帶相應參數)后生成的makefile文件來編譯的,因此需要確保Eclipse在編譯之前我們就已經手動調用了./configure(帶相應參數)已經生成了正確的makefile文件。
完成至此,已經離最后的成功之差一步了:
打開Debug Configurations,并切換到Arguments選項卡,輸入:
-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
好了,點擊Apply按鈕,然后Close即可。
同樣的,也應該配置Run Configurations,這里不再贅述。
通過以上配置,我們就可以開始調試snort源碼了。也能夠隨心所欲的修改snort中的源碼并重新編譯,進行各種實驗了。
posted on 2012-05-22 11:09
老馬驛站 閱讀(3385)
評論(0) 編輯 收藏 引用 所屬分類:
linux 、
snort