熱訊:FreeBSD環境中源碼部署Snort+Barnyard2+MySQL+BASE

2023-01-12 14:18:15 來源:51CTO博客

在2019年發布的文章《手動打造Snort+barnyard2+BASE可視化報警平臺》,目前已有20K+的瀏覽量,幫助了很多想深入了解Snort,而又無法獨立安裝系統的同學。前段時間一些學員留言,詢問有關Pfsense(基于FreeBSD的開源防火墻)的問題,經過一段時間的研究,萌生了在FreeBSD系統中手動下載源碼并編譯Snort IDS的想法,實驗成功后現分享給大家。有關FreeBSD和Linux的性能對比就不再贅述。


(資料圖)

1.安裝系統

安裝特點:FreeBSD下安裝snort及相關組件,對軟件編譯知識要求的比較少,很多依賴關系都可以自動完成,對硬件資源要求不高,但對網絡訪問質量要求很高,有些代碼需訪問外網才能完成安裝。推薦在VMware workstation中安裝。

通過下面的URL獲取安裝鏡像

??https://download.freebsd.org/ftp/releases/ISO-IMAGES/11.2/??

2.設置靜態IP

# vi /etc/rc.confsendmail_enable="NONE"hostname="snortvm"ifconfig_le0="192.168.183.136 netmask 255.255.255.0"defaultrouter="192.168.183.2"sshd_enable="YES"# Set dumpdev to "AUTO" to enable crash dumps, "NO" to disabledumpdev="AUTO" apache24_enable="yes"mysql_enable="YES"snort_enable="YES"

修改DNS

# vi /etc/resolv.confnameserver 192.168.183.2

以上網絡地址需根據實際需要設置(IP:192.168.183.136)。為啟動Snort需要,我們查看當前網絡接口。有的系統為em0,有的系統為le0.

重啟服務

# /etc/rc.d/netif restart && /etc/rc.d/routing restart

測試

ping -c4 www.baidu.com

3.設置SSH遠程登錄

系統安裝完成重新登錄系統后,首先設置SSH服務,允許root 遠程登錄。方法如下:

編輯/etc/ssh/sshd_config文件

將其中的第36行

#PermitRootLogin no  改為 PermitRootLogin yes

即將前面的#去掉,并將no改為yes,保存退出。

重啟動SSHD服務

#/etc/rc.d/sshd restart

4.源碼安裝Snort

為了源碼編譯,我們先要完成安裝前準備工作,首先執行下面命令:

#portsnap fetch extract update

該步驟的目的是下載、更新Ports 套件快照。

#cd /usr/ports/ports-mgmt/portupgrade#make install

編譯環節,耗時比較長,需要多次確認安裝組件(保持默認選擇OK選項即可)。所有下載的源碼包存儲在/usr/ports/distfiles目錄。

#rehash

當上面的準備工作做好之后,安裝編譯snort根本就用不著我們操心,執行下面命令。

#portinstall snort

該命令系統會考慮依賴包的問題自動安裝Snort、barnyard2、pulldpork共3個軟件。

在隨后彈出界面中,選擇MYSQL,表示支持數據庫輸出插件。

在Snort 軟件安裝完成時,另兩款工具Barnyard2 v2.1.13(支持數據庫插件)、pulledpork v0.74也隨之附帶安裝完,但snort,pulledpork需要單獨配置才能運行。

Tips:如果需要在多臺機器中部署,為了節約下載時間,也可以通過其他機器將軟件下載完成后,導入全部tarball包下載到/usr/ports/distfiles目錄。

5.Snort配置

首先我們要編輯/usr/local/etc/snort/snort.conf配置文件。將snort.conf的第一行加入網絡號

原配:ipvar HOME_NET [YOU_NEED_TO_SET_HOME_NET_IN_snort.conf]

修改:ipvar HOME_NET [192.168.183.0/24]

接著修改黑名單和白名單路徑,下面是原始配置

改為現在配置(238行)

修改規則變量的路徑

注銷暫時不用的規則。我們先將"include $RULE_PATH/local.rules"之后的所有引用規則暫時注銷。修改完成后保存退出。

接著在目錄/usr/local/etc/snort/rules下建立規則文件local.rules,并寫入ping規則(寫法參考上一篇博客)。

#mkdir /var/log/snort

Tip:源碼包安裝的情況需要手動建立,如果用pkg install snort則會產生/var/log/snort

#cd /usr/local/etc/snort/rules#touch white_list.rules black_list.rules#mkdir /var/log/barnyard2#cd /usr/local/etc/snort/#touch sid-msg.map#touch /var/log/snort/barnyard2.waldo

準備工作完成之后下面嘗試啟動Snort

#snort -c /usr/local/etc/snort/snort.conf -i le0

6.配置pulledpork

PulledPork (這個單詞原意是豬肉漢堡)是一個 perl 腳本,它將從不同位置下載、組合和安裝/更新 Snort 規則集以供 Snort 使用。Pulled Pork 將所有規則合并到一個文件中:/etc/snort/rules/snort.rules.

我們需要確保將行:添加include $RULE PATH/snort.rules到snort.conf文件中,否則在 Snort 啟動時,PulledPork 規則不會被讀入內存。

Pulledpork主程序雖然已經安裝,但沒有配置,我們還是無法使用,下面我們進入pulledpork配置目錄,將pulledpork.conf.sample配置模板文件復制為pulledpork.conf

#cd /usr/local/etc/pulledpork#cp pulledpork.conf.sample pulledpork.conf# vi pulledpork.conf

查看第19行配置,原配置如下:

首先我們要把pulledpork的配置文件復制到/etc/snort/目錄。我們登錄snort.org官網注冊用戶并獲取oinkcode代碼。修改完成后,保存退出。此時我們不要急于運行pulledpork腳本,還需要新建iplists目錄。

#mkdir -p /usr/local/etc/snort/rules/iplists/

7.運行pulledpork

?確保pulledpork.conf配置正確的情況下。執行下列命令。

#/usr/local/bin/pulledpork.pl -c /usr/local/etc/pulledpork/pulledpork.conf

該腳本執行完成之后,將發生以下變化:

手動新建下列2個文件:

/usr/local/etc/snort/sid-msg.map/usr/local/etc/snort/rules/snort.rules

然后下載2個壓縮包放置在/tmp目錄

community-rules.tar.gz snortrules-snapshot-29171.tar.gz

注釋:如果pulledpork這個腳本無法運行,我們也可以手動下載文件snortrules-snapshot-29180.tar.gz

8.自動升級Snort規則

我們將 PulledPork 腳本添加到 root 的 crontab,以實現自動升級Snort規則,操作如下。

crontab -e

在 crontab 中添加以下行:

01 04 * * * /usr/local/bin/pulledpork.pl -c /etc/snort/pulledpork.conf -l

改進方法,寫一個升級規則的腳本,然后在crontab啟動這個腳本。

9.安裝數據庫

在Snort IDS的數據庫系統配置過程往往和barnyard2一起進行,因為Barnyard2運行需要連接數據庫,我們接著先來安裝mysql57。

pkg install -y mysql57-serverecho "mysql_enable="YES"" >> /etc/rc.conf/usr/local/etc/rc.d/mysql-server start

啟動數據庫

# /usr/local/etc/rc.d/mysql-server start

這里數據庫管理員的初始化密碼不為空,我們要獲取數據庫初始密碼,只有啟動數據庫之后,系統才會產生.mysql_secret文件。

#cat /root/.mysql_secret

登錄數據庫并修改管理員密碼

系統提示需重置管理員密碼。下面的命令將管理員設置密碼為‘123456’

10.設置MySQL數據庫

為root用戶創建了新密碼之后,下面開始創建 snort 數據庫并設置用戶訪問權限:

# mysql -u root -pmysql> CREATE DATABASE snort;mysql>use snort;mysql>GRANT ALL PRIVILEGES ON snort.* TO "snort"@"localhost" IDENTIFIED BY "123456";

有一個用snort 預先打包的腳本來為您設置表:

mysql> SOURCE /usr/local/share/examples/barnyard2/create_mysql;

對于pkg install snort方式安裝的可以用這條命令。

11.配置barnyard2腳本

以下是barnyard2.conf(/usr/local/etc/barnyard2.conf)參考配置:

config reference_file:      /usr/local/etc/snort/reference.configconfig classification_file: /usr/local/etc/snort/classification.configconfig gen_file:            /usr/local/etc/snort/gen-msg.mapconfig sid_file:            /usr/local/etc/snort/sid-msg.mapconfig hostname:        snortvm                 config interface:         le0                 //可選的配置項config logdir: /var/log/snort                 //可選的配置項config waldo_file:/var/log/snort/barnyard2.waldoinput unified2output alert_fast: stdout                     //將報警顯示在屏幕output alert_fast      output database: log, mysql, user=snort password=123456 dbname=snort host=localhost

啟動barnyard2

#/usr/local/bin/barnyard2 -c /usr/local/etc/barnyard2.conf -d /var/log/snort -f snort.log -w /var/log/snort/barnyard2.waldo

通過ping測試snort規則報警,以便觀察數據庫表的變化。

mysql -u snort -p -D snort -e "select count(*) from event"

,Snort+Barnyard2+MySQL聯通實驗完成之后下面解決WebUI的問題,本實驗安裝BASE 1.4.5。

12.安裝BASE

(1)安裝Apache

#pkg install apache24

安裝程序會自動創建用戶www和組www

#echo " apache24_enable="yes"" >> /etc/rc.conf

(2)安裝PHP模塊(php 74)

#pkg install php74(FreeBSD 11、12下默認安裝php7.4)

#pkg install www/mod_php74 php74-mysqli#cp /usr/local/etc/php.ini-production /usr/local/etc/php.ini

編輯php.ini文件

#vi /usr/local/etc/php.ini

安裝BASE (1.4.5)

在Linux其他版本中BASE僅支持PHP5.6 ,對于PHP7不支持,這里FreeBSD社區對BASE進行了優化。

#pkg install base-1.4.5_1

New packages to be INSTALLED:        adodb5-php74: 5.21.2        base: 1.4.5_1

fontconfig: 2.13.94_1,1

freetype2: 2.11.0        giflib: 5.2.1        jbigkit: 2.1_1        jpeg-turbo: 2.1.1        libgd: 2.3.1,1        php74-ctype: 7.4.24        php74-gd: 7.4.24        php74-gettext: 7.4.24        php74-pear: 1.10.12        php74-pear-Image_Canvas: 0.3.2_1        php74-pear-Image_Color: 1.0.4        php74-pear-Image_Graph: 0.8.0        php74-pear-Log: 1.13.3        php74-pear-Mail: 1.4.1,1        php74-pear-Mail_Mime: 1.10.11,2        php74-session: 7.4.24        php74-xml: 7.4.24        php74-zlib: 7.4.24        png: 1.6.37_1        tiff: 4.3.0        webp: 1.2.1

備注:如何找到這個軟件名:pkg search base-1.4.5,我想在系統找到安裝的軟件:pkg info | grep base

查看這個軟件包安裝路徑: pkg info -l base 小寫字母l

root@snort:~ # pkg info -l base-1.4.5_1

base-1.4.5_1:

/usr/local/share/doc/base/CHANGELOG/usr/local/share/doc/base/CREDITS/usr/local/share/doc/base/GPL/usr/local/share/doc/base/README/usr/local/www/base/admin/base_roleadmin.php/usr/local/www/base/admin/base_useradmin.php/usr/local/www/base/admin/index.php/usr/local/www/base/base_ag_common.php……

安裝BASE完成之后還需要下面3步操作。

移動BASE目錄

# mv /usr/local/www/base/ /usr/local/www/apache24/data/

設置權限

# chown -R www:www /usr/local/www/apache24/data/base/

修改配置

#vi /usr/local/etc/apache24/httpd.conf

在423后面加上兩行。

AddType application/x-httpd-php .phpAddType application/x-httpd-php-source .phps

保存退出。下面開始重啟Web服務器

#service apache24 restart

設置BASE

打開瀏覽器輸入網址??http://192.168.183.136/base/??

ADODB路徑/usr/local/share/adodb/

總結

到此,FreeBSD設置BASE設置就圓滿完成。相比較LInux系統安裝,我們在這里不用考慮依賴包的問題,不用建立繁瑣的軟連接,安裝過程基本實現半自動化,需要注意的是FreeBSD11 ~ 13 都可以安裝 snort+barnyard+mysql。但只有freebsd11可以安裝BASE,本文場景適用于復雜繁重的網絡環境讓FreeBSD系統的IDS做數據分析存儲,然后在LInux環境中安裝WebUI實現報警可視化。

2022年51CTO學堂講師評選正在進行中,希望各位投上寶貴一票。

??https://edu.51cto.com/lecturer/350944.html???

(以用戶ID登錄并進行投票)

標簽: 準備工作 配置文件 遠程登錄

上一篇:天天熱點評!Jenkins部署Java應用到Tomcat服務器
下一篇:LeetCode刷題(39)~丑數