Snort:Barnyard2+MySQL+BASE 基於Ubuntu 14.04SNORT


首先明白操作系統平台是Ubuntu 14.04 LTS

如今我們要在Ubuntu 14.04上部署snort NIDS(入侵檢測系統)。

須要這些東西:

SNORT / Barnyard2 / Mysql / Apache2 / BASE

在進行全部工作之前,請運行下面命令,確保安裝必要的軟件(工具鏈)

sudo apt-get install -y build-essential libpcap0.8-devlibpcre3-dev libdumbnet-dev bison flex zlib1g-dev


 
        

SNORT

在Ubuntu 14.04安裝snort能夠有兩種方式
一種:
sudo apt-get install snort
第二種是從源碼安裝。

既然有簡單地方法。那就選擇從軟件源安裝。即選擇第一種。
假設這樣的方式出錯的話,你可能須要依次運行:

 sudo apt-get update

 sudo apt-get upgrade

測試看看。運行:

snort -V
假設顯示出下面:

   ,,_     -*> Snort! <*-
  o"  )~   Version 2.9.7.0 GRE (Build 149)
   ''''    By Martin Roesch & The Snort Team: http://www.snort.org/contact#team
           Copyright (C) 2014 Cisco and/or its affiliates. All rights reserved.
           Copyright (C) 1998-2013 Sourcefire, Inc., et al.
           Using libpcap version 1.5.3
           Using PCRE version: 8.31 2012-07-06
           Using ZLIB version: 1.2.8

說明成功安裝了!祝賀。

接着我們要改動snort的配置文件(注意我們使用的軟件源方式,故配置文件路徑較為固定)

sudo vim /etc/snort/snort.conf

將115行(大概位置)改動例如以下(假設一樣的話則不改動)

var RULE_PATH /etc/snort/rules
var SO_RULE_PATH /etc/snort/so_rules
var PREPROC_RULE_PATH /etc/snort/preproc_rules
目的在於指定規則文件存放的路徑。
在第51行 :

ipvar HOME_NET 192.168.1.0/24
第536行。改動成例如以下所看到的 :
output unified2: filename snort.log, limit 128, mpls_event_types, vlan_event_types
(假設文件本身就和我這里改動后的一樣則不是必需改動)

 

如今啟動測試SNORT :

 

sudo service snort restart
刪除之前日志中得內容(我們改變了日志格式,使用了時間戳格式)

sudo rm /var/log/snort/snort.log

(題外話:第51行不是必需改動,由於被/etc/snort/ snort.debian.conf覆蓋了

 如今我們要測試下snort的規則。

/etc/snort/rules是我們的用於存放規則文件的路徑。以后snort就是依據諸多的規則文件給我們提供預警和提示。

打開規則文件:

sudo vim /etc/snort/rules/local.rules
local.rules是用於自己定義規則的規則文件。

然后加入自己的規則到local.rules

alert icmp any any -> $HOME_NET any (msg:"ICMP Test NOW!!!"; classtype:not-suspicious; sid:1000001; rev:1;)
alert tcp any any -> $HOME_NET 80 (msg:"HTTP Test NOW!!!"; classtype:not-suspicious; sid:1000002;  rev:1;)
這兩條規則大概就是說不論什么發往本機的ICMP和HTTP數據包都會觸發警告!


保存退出。

為了便於測試。繼續改動snort.conf文件。

大概在573行的位置。作例如以下操作:

將除了local.rules之外的規則文件所有去除(不包括進來)。

(也就是接下來數十行的include)。

終於這樣:

# site specific rules
include $RULE_PATH/local.rules

(這是為了便於測試)


sudo snort -T -c /etc/snort/snort.conf

假設看到顯示結果例如以下:

...
Snort successfully validated the configuration!
Snort exiting
而且還能在諸多輸出信息中找到例如以下輸出:

+++++++++++++++++++++++++++++++++++++++++++++++++++
Initializing rule chains...
1 Snort rules read
    1 detection rules
    0 decoder rules
    0 preprocessor rules
1 Option Chains linked into 1 Chain Headers
0 Dynamic rules
+++++++++++++++++++++++++++++++++++++++++++++++++++
 
+-------------------[Rule Port Counts]---------------------------------------
|             tcp     udp    icmp      ip
|     src       0       0       0       0
|     dst       0       0       0       0
|     any       0       0       1       0
|      nc       0       0       1       0
|     s+d       0       0       0       0
+----------------------------------------------------------------------------

再次祝賀!規則成功載入。測試通過!

作了以上改動之后,以下開始真正的測試。

sudo snort -A console -q -u snort -g snort -c /etc/snort/snort.conf -i eth0
隨后。你能夠使用還有一台電腦或者開另外一個terminal使用ping命令。ping測試主機。

比方:ping localhost

你應該能在測試主機上看到相似的例如以下輸出:

10/31-02:27:19.663643  [**] [1:10000001:1] ICMP test [**] [Priority: 0] {ICMP} 10.0.0.74 -> 10.0.0.64
10/31-02:27:19.663675  [**] [1:10000001:1] ICMP test [**] [Priority: 0] {ICMP} 10.0.0.64 -> 10.0.0.74
10/31-02:27:20.658378  [**] [1:10000001:1] ICMP test [**] [Priority: 0] {ICMP} 10.0.0.74 -> 10.0.0.64
10/31-02:27:20.658404  [**] [1:10000001:1] ICMP test [**] [Priority: 0] {ICMP} 10.0.0.64 -> 10.0.0.74
10/31-02:27:21.766521  [**] [1:10000001:1] ICMP test [**] [Priority: 0] {ICMP} 10.0.0.74 -> 10.0.0.64
10/31-02:27:21.766551  [**] [1:10000001:1] ICMP test [**] [Priority: 0] {ICMP} 10.0.0.64 -> 10.0.0.74
10/31-02:27:22.766167  [**] [1:10000001:1] ICMP test [**] [Priority: 0] {ICMP} 10.0.0.74 -> 10.0.0.64
10/31-02:27:22.766197  [**] [1:10000001:1] ICMP test [**] [Priority: 0] {ICMP} 10.0.0.64 -> 10.0.0.74
^C*** Caught Int-Signal

(按ctrl+c結束)

然后你去查看/var/log/snort,你也會發現有被命令為snort.log.nnnnnn(nnnn代表數字),這些文件里包括的和屏幕上打印出來的是一樣的信息。

 祝賀。如今我們已經可以依據自己的規則顯示警告信息了。

Barnyard

這是來干嘛的?簡單地說,他將讀取snort的二進制文件,並將其存儲在MySQL數據庫中。

運行下面命令會安裝一些必要的軟件。還會用到LAMP,怎樣高速安裝?
(請確保之前沒有安裝過LAMP組件中不論什么一個)請參考:點擊打開鏈接
sudo apt-get install -y libmysqlclient-dev autoconf libtool

在/etc/snort/snort.conf文件的520行附近(大概位置)加入例如以下並保存文件。

output unified2: filename snort.u2, limit 128

接下來安裝和配置Barnyard:
下載Barnyard:
wget https://github.com/firnsy/barnyard2/archive/v2-1.13.tar.gz -O barnyard2-2-1.13.tar.gz
依次運行:
tar zxvf barnyard2-2-1.13.tar.gz
cd barnyard2-2-1.13
autoreconf -fvi -I ./m4

64bit和32bit機器分別運行下面:

./configure --with-mysql --with-mysql-libraries=/usr/lib/x86_64-linux-gnu --with-mysql-includes=/usr/include/
./configure --with-mysql --with-mysql-libraries=/usr/lib/i386-linux-gnu --with-mysql-includes=/usr/include/

繼續:

make
sudo make install

sudo cp /usr/local/etc/barnyard2.conf /etc/snort

sudo mkdir /var/log/barnyard2
sudo chown snort.snort /var/log/barnyard2

sudo cp schemas/create_mysql /usr/src

編輯:
sudo gedit /etc/snort/barnyard2.conf
 #227行 改為:
output alert_fast                                      ( instead of output alert_fast: stdout )
 
#348行, 去掉凝視:
output database: log, mysql, user=snort password=secret2 dbname=snort host=localhost

( 用你的snort用戶的password取代secret2 ,接下來在MySQL中會用到secret2)

MySQL

登錄MySQL,使用你在安裝lamp時設置的MySQL的rootpassword登錄。


sudo mysql -u root -p

    [ 輸入MySQL的rootpassword ]

在MySQL控制台依次輸入下面內容(注意分號結尾):

create database snort;
create database archive;

grant usage on snort.* to snort@localhost;
grant usage on archive.* to snort@localhost;

set password for snort@localhost=PASSWORD('secret2');

grant all privileges on snort.* to snort@localhost;
grant all privileges on archive.* to snort@localhost;

flush privileges;

exit
又一次登錄MySQL控制台,依次鍵入:

use snort;

source /usr/src/create_mysql;

show tables;                                                 

exit

Snort 和Barnyard 測試

執行:
<span style="font-size:12px;">sudo snort -q -u snort -g snort -c /etc/snort/snort.conf -i eth0 -D</span>

你不會看到輸出結果。由於程序在后台執行的。
相同ping你的主機。

繼續執行下面:
<span style="font-size:12px;">sudo barnyard2 -c /etc/snort/barnyard2.conf -d /var/log/snort -f snort.u2 -w /var/log/snort/barnyard2.waldo -g snort -u snort</span><span style="font-size: 18.6666660308838px;">
</span>

應該能看到下面輸出:
--== Initialization Complete ==--
 
  ______   -*> Barnyard2 <*-
 / ,,_  \  Version 2.1.13 (Build 327)
 |o"  )~|  By Ian Firns (SecurixLive): http://www.securixlive.com/
 + '''' +  (C) Copyright 2008-2013 Ian Firns <firnsy@securixlive.com>
 
Using waldo file '/var/log/snort/barnyard2.waldo':
    spool directory = /var/log/snort
    spool filebase  = snort.u2
    time_stamp      = 1412527313
    record_idx      = 16
Opened spool file '/var/log/snort/snort.u2.1412527313'
Closing spool file '/var/log/snort/snort.u2.1412527313'. Read 16 records
Opened spool file '/var/log/snort/snort.u2.1412528990'
Waiting for new data
使用ctrl+c結束。
假設你好奇數據庫發生了什么?能夠檢測下:
mysql -u snort -p -D snort -e "select count(*) from event"

應該會出現下面結果:
+----------+
| count(*) |
+----------+
|       4  |
+----------+

***假設出現少了一個 sid-msg.map文件的錯誤。下面方式修復:
cd /usr/share/oinkmaster

sudo bash -c "sudo ./create-sidmap.pl /etc/snort/rules > /etc/snort/sid-msg.map"

BASE

首先:
sudo apt-get install libphp-adodb

繼續改動配置文件:

編輯 "/etc/php5/apache2/php.ini", 找到這一行"error_reporting" ,改動它:

error_reporting = E_ALL & ~E_NOTICE


編輯/etc/apache2/apache2.conf 加入許可www/base :

 

-----------------------------------------------------------------------------------------------------
<Directory /var/www/html/base>
    AllowOverride All
    Require all granted
</Directory>
-----------------------------------------------------------------------------------------------------

重新啟動apache2 :


sudo service apache2 restart

安裝BASE依賴:

sudo apt-get install php-pear

sudo apt-get install libwww-perl                                                       

sudo apt-get install php5-gd



sudo pear config-set preferred_state alpha

sudo pear channel-update pear.php.net

sudo pear install --alldeps Image_Color Image_Canvas Image_Graph


假設得到下面錯誤:  ' could not extract the  package.xml  file ' 。那么下面方法能夠修復這個錯誤。

當下載了這6個pear包之后,我們手動安裝 ( 3 + 3 dependencies ).

例如以下:

 

cd /build/buildd/php5-5.5.9+dfsg/pear-build-download
ls

 這里應該有6個 .tgz 包. 手動安裝:

 sudo tar zxf Image_Color*.tgz

sudo cp package.xml ./Image_Color*/
cd Image_Color*
sudo pear install package.xml
cd ..
依照上面方法依次安裝其余的五個包。

Image_Canvas

Numbers_Roman

Math_BigInteger

Numbers_Words

Image_Graph


BASE的安裝:

cd /usr/src

sudo wget http://sourceforge.net/projects/secureideas/files/BASE/base-1.4.5/base-1.4.5.tar.gz

sudo tar -zxf base-1.4.5.tar.gz

sudo cp -r base-1.4.5 /var/www/html/base

sudo chown -R www-data:www-data /var/www/html/base

sudo service apache2 restart

BASE設置:

瀏覽器輸入:http://localhost/base

(語言就選擇默認的英文)

Step 1) 輸入路徑 : /usr/share/php/adodb

Step 2)  Database Name :                                         snort

               Database Host :                                         localhost


               Database User Name:                                 snort

               Database Password :                                  secret2(之前輸入的)


       ( tick 'Use Archive Database' )

               Archive Database Name :                            archive

               Archive Database Host :                              localhost


               Archive Database User Name :                    snort

               Archive Database Password :                     secret2(之前輸入的)

Step 3)    

    Full admin name ( xxx )

    [GUI password]    ( Secret3 )

    Full admin name ( XXXX )

Step 4)    點擊 ' Create baseAG'

Step 5)    點擊 ' Now continue to Step 5 ' and login ( XXX/ secret3 )  

 

 然后ping主機的話。不出意外每3min就會跟新顯示snort的信息。

 


 





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM