close
     實 驗 說 明

入侵偵測系統依偵測型式可分為網路型入侵偵測系統(Network-based Intrusion Detection System,以下簡稱為 NIDS)及主機型入侵偵測系統(Host-based Intrusion Detection System,在此我們不多加討論主機型入侵偵測系統)。
NIDS
網路型入侵偵測系統通常部署在網域閘道上 (gateway),通過竊聽 (sniffer) 的方式,
即時監測網路上的封包並比對攻擊模式,
當發現有疑似入侵行為時能即時提出警告的
防禦系統。

實 驗 環 境

CentOS 6  x1 :  安裝套件如下  #以下套件版本截至本日最新ver.

snort-2.9.0.5.tar.gz                           

snortrules-snapshot-2905.tar.gz  
 

guardian-1.7.tar.gz  

base-1.4.5.tar.gz 

daq-0.5.tar.gz 

libdnet-1.12.tgz

barnyard2-1.9.tar.gz

adodb512.zip

------Web  Site 相關運行架構-----

Nginx+PHP-FPM   (PHP 5.3.6 ,Nginx 8.55)

MySQL 5.5.15

PS.Near本人依照Snort原文官方手冊一步步Setup起來,請您參考該手冊與本文做對照

       因官方文件寫的很詳細,本人僅將操作步驟點出注意事項,最後並裝上Guardian套件與
       
  base 網頁分析瀏覽界面使Snort具備簡易IPS入侵偵測防禦系統(宜佈署至閘道式或透通式F/W上)
 
       
         [ BASE  安全分析引擎 ]

 
 前 置 作 業

編譯前必要安裝套件


> yum install gcc gcc-c++ kernel-devel patch make vim ssh libxml2 libxml2-devel


次安裝網頁LAMP架構與Base使用到相關PHP套件(本例使用nginx+php-fpm另外裝)


*若是採用LAMP架構請參考以下安裝*

>yum install pcre pcre-devel php php-common php-gd php-cli php-mysql flex bison php-pear-Numbers-Roman php-pear-Numbers-Words php-pear-Image-Color php-pear-Image-Canvas php-pear-Image-Graph libpcap libpcap-devel mysql mysql-devel mysql-bench mysql-server  libdnet

PS: 本人慣用幾個Reposity(remi,rpmforge,dag,epel,義守大學) 


本Lab規劃建置相關目錄與說明

 daq 安裝

>  cd /usr/local 

>  tar zxvf  daq-0.5.tar.gz

> cd daq-0.5

> ./configure && make && make install

---------

mkdir -p /etc/snort/          
#手動建立存放snort相關組態檔,與目錄

mkdir -p /var/log/snort/     #手動建立存放snort相關log存放檔目錄

groupadd snort                 #新增群組snort

useradd -g snort snort    #建立snort 使用者,並設置主要群組為snort

chown - R snort:snort /var/log/snort   #改變權限存取者

touch /var/log/snort/alert  #建立log儲存alert訊息檔案

chmod 600 /var/log/snort/alert  #修改alert 權限600

mkdir /var/log/barnyard2   # 預先建立好barnyard2 log目錄


----開始安裝snort 2.9.0 主程式---

>  cd /usr/local 

>  tar zxvf  snort-2.9.0.5.tar.gz

> cd  
snort-2.9.0.5

> ./configure  --prefix=/usr/local/snort --with-mysql --enable-ipv6 --enable-gre --enable-mpls --enable-targetbased  --enable-decoder-preprocessor-rules --enable-ppm --enable-perfprofiling --enable-zlib --enable-active-response --enable-normalizer --enablereload --enable-react --enable-flexresp3

> make && make install  #安裝路徑指定為/usr/local/snort 與啟用mysql 資料庫儲存功能

---安裝snort rules---

> cd /usr/local

> tar zxvf  snortrules-snapshot-2905.tar.gz  -C /etc/snort   #將snort rules 解壓縮至/etc/snort

> cd /etc/snort

> cp etc/* /etc/snort  #將etc下所有檔案拷背自上層/etc/snort/目錄下

> mkdir /usr/local/lib/snort_dynamicrules 

 cp /etc/snort/so_rules/precompiled/RHEL-6-0/i386/*.so  /usr/local/lib/snort_dynamicrules

#PS: RULE OS 版本請對照選擇與自己OS相通版本檔案進行複製

> cat /etc/snort/so_rules/*.rules >> /etc/snort/rules/so-rules.rules

-----MySQL 配置Snort+Base儲存設計----

> mysql -u root -pxxx     #登入mysql 

>  create database snort;   #建置 snort DB

>  grant all on  snort.* to snort@localhost identified by ''xxxxxx'; #配置snort user供base 程式存取

> flush privileges;

> exit 

>cd /usr/local/snort-2.9.0.5/schemas

> mysql -p < create_mysql snort     #匯入資料庫表格至Snort 資料庫

接著我們使用phpMyAdmin 剛登入檢視表格,應該如下圖所示

http://192.168.0.151/phpMyAdmin     #  phpMyAdmin 3.4.3.2 界面真煥然一新呢


-----初始化Snort組態檔案------

vi  /etc/snort.conf 

 修改參數部份(A)       #請讀者手動修正Snort對應參數路徑

dynamicpreprocessor directory /usr/local/snort/lib/snort_dynamicpreprocessor/

dynamicengine /usr/local/snort/lib/snort_dynamicengine/libsf_engine.so
 

 修改參數部份(B)       #請讀者手動修正Snort Rule 所對應參數路徑

var RULE_PATH /etc/snort/rules
var SO_RULE_PATH /etc/snort/so_rules
var PREPROC_RULE_PATH  /etc/snort/preproc_rules 


修改參數部份(C)       #請讀者手動修正unifiled2 ,修改如下

 output unified2: filename snort.log, limit 128



修改參數部份(D)       #配置Snort資料輸出儲存於MySQL DB ,修改格式如下(Uncommet)
 

output database: log, mysql, dbname=snort user=snort password=XXXXX host=localhost


--啟動snort 服務,若遇Bug請尋線檢查Error設定--

> /usr/local/snort/bin/snort -c /etc/snort/snort.conf    # -D 背景執行

 #無錯誤顯示,Check 到此步驟即可

 ----配置LNMP環境(Nginx+Base+Adodb+MySQL)----

nginx  wwwroot:  /var/www/html        #nginx+php-fpm 組態已在前篇blog 配置好,不熟者請往前查閱

adodb  位於 /var/www/html/adodb  #將adodb512.zip 解壓縮為/var/www/html/adodb 即可

base    位於 /var/www/html/base    #將base-1.4.5.tar.gz 解壓縮為/var/www/html/base 即可 


THEN Near 開啟Broswer 初始化安裝base架構

http://192.168.0.151/base/

 
#請依照指示指定base 存取DB(snort) 與 授權連線DB User(snort) Step by Step 即可完成安裝

    最尾巴步驟將新增Base Admin , 本人配置Near為Admin . Then 再次登入網頁應如下

PS> 嗯...Base 已成功建立起來了, 稍後我們將測試Snort 運作,與Snort Data是否順利寫入DB? 



-------Barnyard安裝-------
>   cd /usr/local
>   tar zxvf  barnyard2-1.9.tar.gz
>    cd barnyard2-1.9
>   ./configure --with-mysql &&make && make install
>  cp etc/barnyard2.conf /etc/snort

THEN Near編輯Barnyard組態檔

vi /etc/snort/barnyard2.conf   #修改參數如下.儲存後離開

config hostname  localhost

config interface     eth0           

THEN Near 啟動Barnyard 如下

snort -c /etc/snort/snort.conf -i eth0      #首先啟動snort 服務,-i 為listen 界面

cp /dev/null /var/log/snort/barnyard.waldo   #建立barnyard.waldo 檔案

啟動Barnyard 服務


/usr/local/bin/barnyard2 -c /etc/snort/barnyard2.conf -d   /

var/log/snort -f snort.log -w /var/log/snort/barnyard.waldo


檢視一下這兩個程序(Snort&Barnyard)都已ON起來



---測試Snort 運作(使用base檢視)--

檢視Base 網頁 http://192.168.0.151/base/index.php

# 確定snort 是可以寫入mysql 資料庫 data資料是一直更新...



#我們可從進一步 view 紀錄分析與攻擊報告



---Guardian 安裝與組態---

Guardian 將監視SNORT 之Alert 訊息,並呼叫IPTABLES 以BLOCK 該IP惡意行為之套件,

 目前官方最新版本1.7

>tar zxvf guardian-1.7.tar.gz
>cd guardian-1.7
> touch /etc/snort/guardian.ignore
>  touch /etc/snort/guardina.target
>   touch  /var/log/snort/guardian.log
>cp guardian.pl /usr/local/bin/
>cp scripts/iptables_block.sh /usr/local/bin/guardian_block.sh
>cp scripts/iptables_unblock.sh /usr/local/bin/guardian_unblock.sh
>cp guardian.conf /etc/snort


組態guardian 組態檔案如下

vi /etc/snort/guardian.conf

Interface       eth0
LogFile         /var/log/snort/guardian.log
AlertFile       /var/log/snort/alert
IgnoreFile      /etc/snort/guardian.ignore
TimeLimit       86400                             #約一週釋放該被封鎖IP

[啟動guardian程式]

/usr/bin/perl /usr/local/bin/guardian.pl -c /etc/snort/guardian.conf

#guardian 啟用成功如下,將先檢查,guardian.ignore(白名單) guardian.target IP


[測試入侵封鎖]

/usr/sbin/snort -de -l /var/log/snort -c /etc/snort/snort.conf -A full   #修改警訊輸出

THEN 我們使用一台ubuntu (.182)對snort(.151)對nmap 攻擊 Port-Scan

All 1000 scanned ports on 192.168.0.151 are filtered   #.182 此IP已經被Guardian Block

MAC Address: 00:0C:29:89:0C:D6 (VMware)

   THEN 我們再回頭切換回Snort 主機 查看IPTABLE 明細

   > iptables -L       #Guardian 已成功呼叫iptables且主動寫入一條RULES阻檔NMAP攻擊主機 
   
總結:

Near是參照官方原文手冊進行佈建與測試,Snort 很適合佈署至"閘道"與"透通式防火牆上" THANKS

官方手冊的連結: 
http://www.snort.org/assets/159/Snort_2.9.05_FC14.pdf

Snort+Guardian 為本人極想導入企業資安簡易IPS想法之一,日前架設過程曾遇到不少瓶頸,終於突破

並且測試成功了Oh Yeah 


arrow
arrow
    全站熱搜

    終極.凱因斯 發表在 痞客邦 留言(0) 人氣()