CentOS6.6下搭建基於snort+barnyard2+base的入侵檢測系統
個人轉載請注明出處
2016-04-11更新
安裝好基於hyper-v的ids虛擬系統已上傳至鏈接:http://pan.baidu.com/s/1nuLs4rB 密碼:z0mi
免責聲明
一.如果因為使用本文檔照成損失(系統崩潰、數據丟失等),作者不承擔任何責任。
二.本文檔只是個人使用本文檔標注的軟件版本成功搭建基於snort的IDS的過程,不代表在其他(相同或不相同)環境下也能安裝成功,請仔細閱讀並理解文檔。
三.善用搜索!善用搜索!善用搜索!遇到錯誤請理解錯誤提示,優先用搜索引擎搜索解決辦法
四.學會提問!學會提問!學會提問!如果你打算提問,請先學習《提問的智慧》
文字版:http://bbs.chinaunix.net/thread-113564-1-1.html
圖片版:http://bbs.chinaunix.net/thread-2179749-1-1.html
本文檔使用的主要軟件包已上傳至百度雲:鏈接:http://pan.baidu.com/s/1bnz0hkz 密碼:fzrv,其他軟件可以根據文檔中的命令在線下載安裝;
文檔中的命令大多可以直接使用(除非時間太久導致系統/軟件/鏈接失去支持等)
如果對文檔有疑問請加QQ群187553731,歡迎提問,但拒絕無腦伸手黨
一、准備工作
安裝CentOS-6.6-x86_64-minimal.iso(用CentOS7后面配置base會報錯),給系統設置IP和dns讓系統可以聯網.
1. 安裝wget
#yum install wget -y
2. 更換源
更換成阿里雲源,更新系統、下載軟件速度快
#mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
#wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
#yum clean all
#yum makecache
3.更新系統
#yum -y update
4.安裝epel源
#yum install -y epel-release
5.下載安裝文件
把網盤里的安裝文件下載到CentOS里備用(可以利用附件中的FTPServer.exe傳輸),這里放到/root
二、安裝配置LMAP
1.安裝LMAP組件
#yum install -y httpd mysql-server php php-mysql php-mbstring php-mcrypt mysql-devel php-gd
2.安裝php插件
#yum install -y mcrypt libmcrypt libmcrypt-devel
3.安裝pear插件
#yum install -y php-pear
#pear upgrade pear
#pear channel-update pear.php.net
#pear install mail
#pear install Image_Graph-alpha Image_Canvas-alpha Image_Color Numbers_Roman
#pear install mail_mime
4.安裝adodb
#tar zxvf adodb519.tar.gz -C /var/www/html
#mv /var/www/html/adodb5 /var/www/html/adodb
5.安裝base
#tar zxvf base-1.4.5.tar.gz -C /var/www/html
#mv /var/www/html/base-1.4.5 /var/www/html/base
6.修改php.ini
#vi /etc/php.ini
error_reporting = E_ALL & ~E_NOTICE
7.設置html目錄權限
#chown -R apache:apache /var/www/html
8.設置adodb權限
#chmod 755 /var/www/html/adodb
9.配置mysql
解壓barnyard2(這里要用里面的文件創mysql表)
#tar zxvf barnyard2-1.9.tar.gz
啟動mysql
#service mysqld start
設置root密碼為123456
#mysqladmin -u root -p password 123456
以root登陸mysql
#mysql -uroot -p
創建名為snort的數據庫
>create database snort;
創建名為snort、密碼為123456的數據庫用戶並賦予名為snort數據庫權限
>grant create,select,update,insert,delete on snort.* to snort@localhost identified by '123456';
退出
>exit
創建數據庫表
#mysql -usnort -p -Dsnort < /root/barnyard2-1.9/schemas/create_mysql
10.配置base
#service mysqld start 啟動mysql
#service httpd start 啟動apache
#service iptables stop 關閉防火牆
用瀏覽器打開http://172.16.100.131/base/setup/index.php(IP換成你自己的)
1.點擊Continuue
2.選擇顯示語言,設置adodb路徑
3.配置數據庫
4.設置admin用戶和密碼(這里應該是設置admin的用戶和密碼,我這里跟mysql的root一樣)
5.點擊“Createe BASE AG”
6.成功的話會有紅色successfilly created字樣,如下圖(Centos7沒有,原因未知),點擊“step 5”
7.安裝成功
三、安裝配置snort+barnyard2
1.安裝依賴包
#yum install gcc flex bison zlib libpcap tcpdump gcc-c++ pcre* zlib* libdnet libdnet-devel
2.安裝libdnet
(這里必須是這個版本)
#tar zxvf libdnet-1.12.tgz
#cd libdnet-1.12
#./configure && make && make install
3.安裝libpcap
(這里必須)
#wget http://www.tcpdump.org/release/libpcap-1.0.0.tar.gz
#tar zxvf libpcap-1.0.0.tar.gz
#cd libpcap-1.0.0
#./configure && make && make install
4.安裝DAQ
#tar zxvf daq-2.0.4.tar.gz
#cd daq-2.0.4
#./configure && make && make install
5.安裝snort
#tar zxvf snort-2.9.7.0.tar.gz
#cd snort-2.9.7.0
#./configure && make && make install
6.配置snort
創建需要的文件和目錄
#mkdir /etc/snort
#mkdir /var/log/snort
#mkdir /usr/local/lib/snort_dynamicrules
#mkdir /etc/snort/rules
#touch /etc/snort/rules/white_list.rules /etc/snort/rules/black_list.rules
#cp /root/snort-2.9.7.0/etc/gen-msg.map threshold.conf classification.config reference.config unicode.map snort.conf /etc/snort/
編輯配置文件
#vi /etc/snort/snort.conf
定義路徑變量
var RULE_PATH /etc/snort/rules
var SO_RULE_PATH /etc/snort/so_rules
var PREPROC_RULE_PATH /etc/snort/preproc_rules
var WHITE_LIST_PATH /etc/snort/rules
var BLACK_LIST_PATH /etc/snort/rules
設置log目錄
config logdir:/var/log/snort
配置輸出插件
output unified2:filename snort.log,limit 128
7.配置規則
#tar zxvf snortrules-snapshot-2970.tar.gz -C /etc/snort/
#cp /etc/snort/etc/sid-msg.map /etc/snort/
8.測試snort
#snort -T -i eth0 -c /etc/snort/snort.conf
參數解釋:
-T 指定啟動模式:測試
-i 指定網絡接口
-c 指定配置文件
如果出現“success”的字樣說明配置好了
按ctrl+c終止測試
9.安裝barnyard2
#cd /root/barnyard2-1.9
#./configure --with-mysql --with-mysql-libraries=/usr/lib64/mysql/
#make && make install
10.配置barnyard2
創建需要的文件和目錄
#mkdir /var/log/barnyard2
#touch /var/log/snort/barnyard2.waldo
#cp /root/barnyard2-1.9/etc/barnyard2.conf /etc/snort
修改配置文件
#vi /etc/snort/barnyard2.conf
config logdir:/var/log/barnyard2
config hostname:localhost
config interface:eth0
config waldo_file:/var/log/snort/barnyard.waldo
output database: log, mysql, user=snort password=123456 dbname=snort host=localhost
11.測試barnyard2
#barnyard2 -c /etc/snort/barnyard2.conf -d /var/log/snort -f snort.log -w /var/log/snort/barnyard2.waldo
參數解釋:
-c 指定配置文件
-d 指定log目錄
-f 指定log文件
-w 指定waldo文件
如果出現“Waiting for new spool file”字樣則表示barnyard2配置成功
按ctrl+c終止測試
四、測試IDS是否正常工作
1.添加測試規則
#vi /etc/snort/rules/local.rules
添加一條檢查ping包的規則
alert icmp any any -> any any (msg: "IcmP Packet detected";sid:1000001;)
規則注解:
alert 觸發規則后做出的動作
icmp 協議類型
第一個any 源IP(網段),any表示任意
第二個any 源端口,any表示任意
-> 表示方向
第三個any 目標IP(網段),any表示任意
第四個any 目標端口,any表示任意
Msg字符 告警名稱
Sid id號,個人編寫的規則使用1,000,000以上
2.配置IDS啟動腳本
配置啟動腳本(此腳本在群文件中,不用這個腳本可以手動運行程序)
#cp idsctl /sbin
#chmod 755 /sbin/idsctl
3.啟動IDS
#service mysqld start 啟動mysql
#service httpd start 啟動apache
#service iptables stop 關閉防火牆
使用腳本啟動ids
#idsctl start
手動運行ids(2條命令先后運行,腳本啟動失效可選)
#barnyard2 -c /etc/snort/barnyard2.conf -d /var/log/snort -f snort.log -w /var/log/snort/barnyard2.waldo -D
#snort -c /etc/snort/snort.conf -i eth0 -D
(-D選項用來讓命令轉入后台運行,其他選項意義上文已有解釋)
4.測試IDS
向IDS的IP發送ping包,base的頁面會出現ICMP告警
5.停止IDS
使用腳本停止IDS
#idsctl stop
手動停止IDS
killall -9 snort barnyard2
如果base頁面沒有數據,請檢查:
1.檢查一下snort有沒有正確運行
2.檢查snort輸出的alert文件是否有內容
3.檢查barnyard2是否正確運行
4.檢查mysql數據庫是否有內容
因為這個系統數據流走向是:
snort抓包匹配規則輸出告警到alert文件,barnyard2讀取alert文件格式化輸出到數據庫,base從數據庫讀取數據展示
只要中間一個步驟出錯,base就會沒有數據