Centos7安裝snort可視化IDS平臺

Centos

一、基礎安裝

1.1 安裝依賴

yum install -y gcc gcc-c++ flex bison zlib libxml2 libpcap pcre* tcpdump git libtool curl man make

# 安裝libpcap
tar -zxvf libpcap-xxx.tar.gz
./configure
sudo make
sudo make install

# 安裝dnet
./configure
sudo make
sudo make install

# 安裝daq
./configure
sudo make
sudo make install
# 編譯時可能會遇到時鐘源錯誤的問題,調整系統時間可以跳過該錯誤

# 安裝zlib
./configure
sudo make
sudo make install

# 安裝LuaJIT
sudo make
sudo make install

# 安裝openssl
./config
sudo make
sudo make install
# 編譯安裝較慢,等待一段時間

1.2 安裝snort

./configure
make
make isntall

1.3 配置snort

添加用戶和組。

創建用戶和組,並設置權限。在root身份下解包的文件權限都與root有關,所以要修改成Snort用戶的屬主和相關權限。

#新添加一個Snort組
groupadd -g 40000 snort

#將Snort用戶加入Snort組,並且不允許登錄系統
useradd snort -u 40000 -d /var/log/snort -s /sbin/nologin -c SNORT_IDS -g snort 
新建目錄/var/log/snort並設置其屬性。
mkdir /var/log/snort
chown –R snort:snort /var/log/snort
配置Snort。
#新建目錄/etc/snort/
mkdir /etc/snort/ 
cd /etc/snort

#下載規則文件並解壓,將其中的.map複製到/etc/snort 目錄下
cp sid-msg.map /etc/snort

#將下載的Snort壓縮包解壓縮後複製到/etc/snort/目錄下
cp ~/snort-2.9.7.0/etc/* /etc/snort

# 設置當前目錄下所有文件的屬主。
cd /etc/snort
chown -R snort:snort *

#新建黑白名單規則文件
touch /etc/snort/rules/white_list.rules /etc/snort/rules/black_list.rules

編輯配置文件snort.conf,修改以下幾行的內容。
設置網絡變量,將第45行的ipvar HOME_NET any改爲ipvar HOME_NET 192.168.x.x網段,並寫成CIDR格式。也可以添加多個網段。
ipvar HOME_NET [192.168.0.0/16,172.16.0.0/16]
將48行ipvar EXTERNAL_NET any 改爲 ipvar EXTERNAL_NET!$HOME_NET
第104行 var RULE_PATH ../ruls 改爲 var RULE_PATH /etc/snort/rules
第105行 var SO_RULE_PATH ../so_rules 改爲var SO_RULE_PATH /etc/snort/so_rules
第106行 var PREPROC_RULE_PATH ../preproc_rules 改爲 var PREPROC_RULE_PATH/etc/snort/ preproc_rules
第113行 var WHITE_LIST_PATH ../rules 改爲 var WHITE_LIST_PATH /etc/snort/rules
第114行 var BLACK_LIST_PATH ../rules 改爲 var BLACK_LIST_PATH /etc/snort/rules

# 設置日誌保存路徑。
config logdir:/var/log/snort/

# 配置輸出插件。
Snort可通過數據庫插件(spo_database.c和spo_database.h)將預處理器輸出的日誌寫入數據庫,但下面的配置一方面將報警寫入alert文件,另一方面將預處理器輸出的日誌寫入到unified2格式的二進制文件中,以供Barnyard2讀取使用。
將第521行修改成如下內容:
output unified2:filename snort.log,limit 128
新建目錄snort_dynamicrules並設置權限
mkdir -p /usr/local/lib/snort_dynamicrules
chown -R snort:snort /usr/local/lib/snort_dynamicrules
chmod -R 755 /usr/local/lib/snort_dynamicrules

# 在/usr/sbin/目錄下新建名爲Snort的軟鏈接文件。
cd /usr/sbin
ln -s /usr/local/bin/snort snort

1.4 添加測試規則

# 編輯 rules文件
vi /etc/snort/rules/local.rules

# 加入如下內容:
alert icmp any any -> $HOME_NET any (msg:"ICMP Packet Detected";sid:1000003;rev:1;)

1.5 測試Snort

snort -T -i eht0 -u snort -g snort -c /etc/snort/snort.conf

如果配置正確,則系統啓動後顯示如下內容。

如出現“Snort successfully validated the configuration!”的提示,則表示安裝配置成功。

1.6 用ping命令測試。

用ping命令進行測試的目的是爲了產生報警。ping命令使用ICMP協議,在IDS中使用Libpcap函數所捕獲的也是ICMP數據包。下面在Snort主機上操作:

snort -i eth0 -c /etc/snort/snort.conf -A fast

與此同時,用另一臺主機進行ping操作,日誌文件記錄在/var/log/snort/alert/var/log/snort/snort.log

在這裏插入圖片描述

二、將Snort報警存入MySQL數據庫並添加管理界面

2.1 安裝MySQL數據庫及PHP擴展

yum install -y mysql-server mysql-devel php-mysql php-pear php-gd libtool php-imap php-ldap php-mbstring php-odbc php-pear php-xml php-pecl-apc

# 將MySQL服務設置爲在運行級別爲2、3、5時都是開啓狀態
chkconfig --level 235 mysqld on 
/etc/init.d/mysqld start

2.2 配置mysql數據庫

# 爲數據庫管理員root賦予密碼。
/usr/bin/mysqladmin -u root password '******'

# 創建Snort數據庫並設定讀取權限。
mysql -u root -p

# 輸入步驟2中設置的密碼“******”
mysql> create database snort;
mysql> use snort;
mysql> create user 'snort'@'localhost' IDENTIFIED BY '******';

在以上命令中,“******”是MySQL中用戶Snort的密碼。
接着創建名爲snort、密碼爲“123456”的數據庫用戶,並賦予名爲“snort”的數據庫權限
mysql> grant create,select,update,insert,delete on snort.* to snort@localhost identified by '******';
mysql> set password for ‘snort’@’localhost’=password('******'); //爲用戶snort設置訪問密碼
mysql> source ~/barnyard2-2-1.12/schemas/create_mysql; //該命令不可重複輸入,一定要執行此命令
mysql> show tables;
mysql> flush privileges; //刷新數據庫權限
mysql> exit

2.3 barnyard2安裝配置

Barnyard2的作用是讀取Snort產生的二進制事件文件並存儲到MySQL中。Snort的配置文件自身含有插件,它允許將Snort報警記錄到MySQL中,但這樣一來,系統數據會激增。當IDS系統檢測到異常行爲時,它會用INSERT語句向數據庫中寫入數據,導致更新非常慢。所以如果直接將Snort輸出到數據庫,在數據量增大時這種方案的效率並不高,故使用外部代理將報警輸出到Barnyard2。

解壓後安裝
./autogen.sh
./configure --with-mysql --with-mysql-libraries=/usr/lib64/mysql 
make
make install

編譯時遇到如下錯誤,定位到源碼,註釋掉該行即可
在這裏插入圖片描述

配置
# 首先在/var/log/中創建目錄Barnyard2和文件barnyard2.waldo。
mkdir /var/log/barnyard2
touch /var/log/snort/barnyard2.waldo

# 設置文件barnyard2.waldo的屬主
chown snort:snort /var/log/barnyard2
chown snort:snort /var/log/snort/barnyard2.waldo

# 複製Barnyard2的配置文件。
# 與Snort配置類似,Barnyard的初始化配置也是通過複製已有的.conf配置文件來完成。因此先將Barnyard2的配置模板文件複製到/etc/snort目錄下。
cp ~/barnyard2-1.9/etc/barnyard2.conf /etc/snort

# 修改配置文件barnyard2.conf。
vi /etc/snort/barnyard2.conf

# 找到對應行並將其修改成如下內容:
第44行 config logdir:/var/log/barnyard2 //該目錄權限爲snort.snort
第56行 config hostname: localhost
第57行 config interface: eth0
第131行 config waldo_file:/var/log/snort/barnyard2.waldo

# 下面這條語句用來設置數據庫訪問權限,其中定義了用戶名爲snort,密碼爲123456,數據庫名稱爲snort,主機名爲localhost。
第318行 output database: log,mysql,user=snort password=123456 dbname=snort host=localhost

2.4 Snort和Barnyard2進行聯合測試。

snort -q -u snort -g snort -c /etc/snort/snort.conf -i enp3s0 –D

2.5 安裝pear插件

yum install -y httpd mysql-server php php-mysql php-mbstring php-mcrypt mysql-devel php-gd mcrypt libmcrypt libmcrypt-devel php-pear
pear channel-update pear.php.net
pear install mail Image_Graph-alpha Image_Canvas-alpha Image_Color Numbers_Roman mail_mime
# 單次運行不成功可以嘗試多次運行,必須安裝所有插件

2.6 安裝配置adodb base

Basic Analysis and Security Engine

Adobd

cd /var/www/html/
unzip ~/adodb-5.20.14.zip
mv adodb5 adodb
tar -zxvf ~/base-1.4.5.tar.gz
mv base-1.4.5 base

# 修改/etc/php.ini
gedit /etc/php.ini
# 修改爲 
error_reporting = E_ALL & ~E_NOTICE

#修改權限
chmod 777 /var/www/html/adodb
chmod 777 /var/www/html/base

2.7 啓動服務

# 啓動mysql服務
service mysqld start      
# 啓動http
service httpd start           
# 關閉防火牆
systemctl stop firewalld.service    
# 查看防火牆狀態
firewall-cmd --state               

2.8 Web配置

訪問:http://localhost/base/setup/index.php

Step1:開始配置,該步驟需要配置adodb的路徑

Step2:選擇數據庫類型,數據庫名,數據庫用戶和密碼

Step3:設置管理員賬號密碼

Step4:開始創建BASE表結構,生成後如圖所示


Step5:完成配置後的界面

三、啓動IDS

barnyard2 -c /etc/snort/barnyard2.conf -d /var/log/snort -f snort.log -w /var/log/snort/barnyard2.waldo -g snort -u snort
# 如果報錯可能是權限問題
chown -R snort:snort /var/log/snort


啓動過程遇到上圖中錯誤,文件權限存在問題,將報錯文件添加讀權限即可解決。

該錯誤應該會有更優雅的解決方法,暫時未找到。在配置snort的過程中可能會涉及到日誌文件權限的配置問題。可能沒有注意。

正常啓動結果如圖


四、其他參考

4.1 命令參考

# web網址
http://localhost/base/base_main.php
 
# 數據庫操作
mysql -u snort -p -D snort -e "select count(*) from event"        #檢查告警是否存庫
mysql -u snort -p -D snort -e "delete from event"                 #清空告警庫
 
snort -q -u snort -g snort -c /etc/snort/snort.conf -i ens33 -D
-T:指定啓動模式:測試
-i:指定網絡接口
-u:指定運行用戶
-g:指定運行時用戶組
-c: 指定配置文件
-q:以靜默方式運行
-D:後臺以Daemon方式運行
 
barnyard2 -c /etc/snort/barnyard2.conf -d /var/log/snort -f snort.log -w /var/log/snort/barnyard2.waldo -g snort -u snort
 
snort -i ens33 -c /etc/snort/snort.conf -A fast -l /var/log/snort/
cd /var/log/snort/
tail -f ./alert

4.2 下載鏈接

下載鏈接 下載鏈接
libpcap下載地址 dnet下載地址
daq下載地址 zlib下載地址
LuaJIT下載地址 openssl下載地址
BASE下載地址 snort下載地址
barnyard2下載地址 Adobd下載地址

4.3 參考

Ubuntu 16.04搭建LAMP開發環境

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章