在學習snort的時候,參考了很多文章,遇到了許多坑。這里是完成搭建的過程。
在Ubuntu 16.04下安裝snort
安裝snort
首先,新建一個文件夾來保存需要的tar包的文件夾
#mkdir ~/snort_src
#cd ~/snort_src
安裝必備的組件
#sudo
apt-get install
-y build-essential libpcap-dev libpcre3-dev libdumbnet-dev bison flex zlib1g-dev liblzma-dev openssl libssl-dev
build-essential:提供用於編譯軟件的構建工具(GCC等)。
bison,flex:DAQ所需的解析器(DAQ將在下面安裝)。
libpcap-dev:Snort所需的網絡流量捕獲庫。
libpcre3-dev:支持Snort所需正則表達式的函數庫。
libdumbnet-dev:libdnet庫為幾個低層網絡例程提供了一個簡化的可移植接口。許多安裝Snort的指南都是從源代碼安裝此庫的,盡管這不是必需的。
zlib1g-dev:Snort所需的壓縮庫。
liblzma-dev:提供對swf文件的解壓縮(adobe flash)
openssl和libssl-dev:提供SHA和MD5文件簽名
Snort所需的最后一個庫是Nghttp2的開發庫
#sudo
apt-get install
-y libnghttp2-dev
在snort官網下載數據采集器(DAQ)來抽象對數據包捕獲庫的調用
#cd ~/snort_src
#wget https://snort.org/downloads/snort/daq-2.0.6.tar.gz
#tar -xvzf daq-2.0.6.tar.gz
#cd daq-2.0.6
#./configure
#make
#sudo make install
源碼安裝snort
#cd ~/snort_src
#wget https://snort.org/downloads/snort/snort-2.9.9.0.tar.gz
#tar -xvzf snort-2.9.9.0.tar.gz
#cd snort-2.9.9.0
#./configure --enable-sourcefire
#make
#sudo make install
更新共享庫
#sudo
ldconfig
Snort安裝會將Snort二進制文件放在/ usr / local / bin / snort,因此,創建到/ usr / sbin / snort的符號鏈接
#sudo
ln
-s /usr/local/bin/snort
/usr/sbin/snort
安裝后輸入snort -V看到以下內容
將snort配置為NIDS
基本配置:出於安全原因, Snort應該以非特權用戶身份運行,創建一個snort用戶和組
#sudo groupadd snort
#sudo useradd snort -r -s /sbin/nologin -c SNORT_IDS -g snort
創建snort需要的文件和文件夾
# 創建Snort目錄:
#sudo mkdir /etc/snort
#sudo mkdir /etc/snort/rules
#sudo mkdir /etc/snort/rules/iplists
#sudo mkdir /etc/snort/preproc_rules
#sudo mkdir /usr/local/lib/snort_dynamicrules
#sudo mkdir /etc/snort/so_rules
# 創建一些存儲規則和ip列表的文件
#sudo touch /etc/snort/rules/iplists/black_list.rules
#sudo touch /etc/snort/rules/iplists/white_list.rules
#sudo touch /etc/snort/rules/local.rules
#sudo touch /etc/snort/sid-msg.map
# 創建日志文件
#sudo mkdir /var/log/snort
#sudo mkdir /var/log/snort/archived_logs
# 調整權限
#sudo chmod -R 5775 /etc/snort
#sudo chmod -R 5775 /var/log/snort
#sudo chmod -R 5775 /var/log/snort/archived_logs
#sudo chmod -R 5775 /etc/snort/so_rules
#sudo chmod -R 5775 /usr/local/lib/snort_dynamicrules
# 改變文件夾的所有權
#sudo chown -R snort:snort /etc/snort
#sudo chown -R snort:snort /var/log/snort
#sudo chown -R snort:snort /usr/local/lib/snort_dynamicrules
將解壓后snort中的文件復制到我們新建的文件夾中
#cd ~/snort_src/snort-2.9.9.0/etc/
#sudo cp *.conf* /etc/snort
#sudo cp *.map /etc/snort
#sudo cp *.dtd /etc/snort
#cd ~/snort_src/snort-2.9.9.0/src/dynamic-#preprocessors/build/usr/local/lib/snort_dynamicpreprocessor/
#sudo cp * /usr/local/lib/snort_dynamicpreprocessor/
基本的文件結構如下:
編輯snort配置文件
注釋掉Snort導入默認規則文件集的行
#sudo
sed
-i 's/include \$RULE\_PATH/#include \$RULE\_PATH/'
/etc/snort/snort.conf
修改snort.conf文件(這里使用gedit編輯器)
#sudo
gedit
/etc/snort/snort.conf
文件中修改如下
#
配置網絡信息,這里的IP是192.168.147.138,所以ip如下
ipvar HOME_NET 192.168.0.0/16
我們需要告訴Snort我們之前創建的所有文件夾的位置。這些設置也是snort.conf文件的一部分
var RULE_PATH /etc/snort/rules # 104行左右
var SO_RULE_PATH /etc/snort/so_rules # 105行左右
var PREPROC_RULE_PATH /etc/snort/preproc_rules # 106行左右
var WHITE_LIST_PATH /etc/snort/rules/iplists # 113行左右
var BLACK_LIST_PATH /etc/snort/rules/iplists # 114行左右
#啟用規則文件
include $RULE_PATH/local.rules #取消注釋,在545行左右
測試snort
#sudo
snort -T -c /etc/snort/snort.conf -i ens33 #ens33
是網卡,可用ifconfig查看
然后我們看到如下結果,配置成功
接下里,編輯規則文件,
#sudo
gedit
/etc/snort/rules/local.rules
編寫兩條基本的規則
保存后退出
開始測試
#sudo
snort -T -c /etc/snort/snort.conf -i ens33
可以看到如下結果
開始檢驗,用一台別的主機ping snort的主機
#sudo
/usr/local/bin/snort
-A console -q -u snort -g snort -c /etc/snort/snort.conf -i ens33
可以看到如下結果
到這里,測試規則就完成了
安裝Barnyard2
下一步,安裝Barnyard2,這是一個專用的后台處理程序,將有助於減少Snort服務器上的負載
安裝一些必備組件
#sudo
apt-get install
-y mysql-server libmysqlclient-dev mysql-client autoconf libtool
安裝mysql時系統會提示輸入root密碼,這里我使用的密碼為123
編輯snort.conf
#sudo
vi
/etc/snort/snort.conf
#添加一行以告訴Snort以二進制形式輸出事件。在snort.conf中的第520行之后(該行為注釋掉的示例),添加以下行並保存文件:
output unified2: filename snort.u2, limit 128
接下來,安裝Barnyard2
去到需要安裝的目錄下
#cd ~/snort_src
#wget https://github.com/firnsy/barnyard2/archive/master.tar.gz -O barnyard2-Master.tar.gz
#tar zxvf barnyard2-Master.tar.gz
#cd barnyard2-master
#autoreconf -fvi -I ./m4
Barnyard2需要訪問dnet.h庫,該庫是我們先前與Ubuntu libdumbnet軟件包一起安裝的,創建一個鏈接
#sudo ln -s /usr/include/dumbnet.h /usr/include/dnet.h
#sudo ldconfig
根據您的系統結構,運行Barnyard2在MySQL的庫(這里時64位的)
#./configure
--with-mysql --with-mysql-libraries=/usr/lib/x86_64-linux-gnu
然后繼續
#make
#sudo make install
測試barnyard2是否安裝成功
#barnyard2
-V
為Snort配置為使用Barnyard2,從源程序包中復制一些文件
#sudo cp ~/snort_src/barnyard2-master/etc/barnyard2.conf /etc/snort/
#sudo mkdir /var/log/barnyard2
#sudo chown snort.snort /var/log/barnyard2
#sudo touch /var/log/snort/barnyard2.waldo
#sudo chown snort.snort /var/log/snort/barnyard2.waldo
創建數據庫
#輸入的密碼為安裝時設定的密碼
#mysql -u root -p
mysql> create database snort;
mysql> use snort;
mysql> source ~/snort_src/barnyard2-master/schemas/create_mysql
mysql> CREATE USER 'snort'@'localhost' IDENTIFIED BY '123';
mysql> grant create, insert, select, delete, update on snort.* to 'snort'@'localhost';
mysql> exit
創建數據庫后,要將信息告訴Baenyard2,編輯barnyard2.conf文件
#sudo
gedit
/etc/snort/barnyard2.conf
在文件的末尾添加(末尾有關於數據庫的配置,可以選擇取消注釋,然后修改)
output database: log, mysql, user=snort password=123 dbname=snort host=localhost sensor name=sensor01
然后運行如下命令:
#sudo
barnyard2 -c /etc/snort/barnyard2.conf -d /var/log/snort
-f snort.u2 -w /var/log/snort/barnyard2.waldo -g snort -u snort
結果如圖
安裝base
創建可視化界面,這里使用的是base,base需要php5,但是ubuntu16中以不可用,轉為了php7(如果配置不對,后面配置base時會出現錯誤,導致有些頁面顯示不出來)
安裝php5軟件包
#sudo add-apt-repository ppa:ondrej/php
#sudo apt-get update
#sudo apt-get install -y apache2 libapache2-mod-php5.6 php5.6-mysql php5.6-cli php5.6 #php5.6-common php5.6-gd php5.6-cli php-pear php5.6-xml
安裝pear圖像圖
#sudo
pear install
-f --alldeps Image_Graph
下載安裝adodb
#cd ~/snort_src
#wget https://sourceforge.net/projects/adodb/files/adodb-php5-only/adodb-520-for-#php5/adodb-5.20.8.tar.gz
#tar -xvzf adodb-5.20.8.tar.gz
#sudo mv adodb5 /var/adodb
#sudo chmod -R 755 /var/adodb
下載base並復制到apache2目錄下
#cd ~/snort_src
#wget http://sourceforge.net/projects/secureideas/files/BASE/base-1.4.5/base-1.4.5.tar.gz
#tar xzvf base-1.4.5.tar.gz
#sudo mv base-1.4.5 /var/www/html/base/
創建和配置base文件
#cd /var/www/html/base
#sudo cp base_conf.php.dist base_conf.php
#sudo
vi
/var/www/html/base/base_conf.php
配置如下
$BASE_urlpath = '/base'; # 50
$DBlib_path = '/var/adodb/'; # 80
$alert_dbname = 'snort'; # 102
$alert_host = 'localhost';
$alert_port = '';
$alert_user = 'snort';
$alert_password = '123'; # 106
修改base文件權限
#sudo chown -R www-data:www-data /var/www/html/base
#sudo chmod o-r /var/www/html/base/base_conf.php
這里也可以不配置base文件,可以在
http://localhost/base中設置
重啟apache
#sudo
service apache2 restart
瀏覽器打開 http://localhost/base/index.php
可以看到如下結果
這樣就基本完成。需要更加完善則需要自定義規則。
不斷的入坑學習,才能不斷進步!