如何在Ubuntu上安裝Snort入侵檢測系統(tǒng)
Snort作為一款優(yōu)秀的開源主機入侵檢測系統(tǒng),在windows和Linux平臺上均可安裝運行。Ubuntu作為一個以桌面應(yīng)用為主的Linux操作系統(tǒng),同樣也可以安裝Snort。
安裝Snort過程
[安裝LAMP,Snort和一些軟件庫]
由于 Ubuntu 是 Debian 系的 Linux,安裝軟件非常簡單,而且 Ubuntu 在中國科技大學(xué)有鏡像,在教育網(wǎng)和科技網(wǎng)下載速度非常快(2~6M/s),就省掉了出國下載安裝包的麻煩,只需要一個命令即可在幾十秒鐘內(nèi)安裝好所有軟件。這里使用 Ubuntu 默認(rèn)命令行軟件包管理器 apt 來進(jìn)行安裝。
$ sudo apt-get install libpcap0.8-dev libmysqlclient15-dev mysql-client-5.0 mysql-server-5.0 bison flex apache2 libapache2-mod-php5 php5-gd php5-mysql libphp-adodb php-pear pcregrep snort snort-rules-default
需要注意的是在安裝 MySQL 數(shù)據(jù)庫時會彈出設(shè)置 MySQL 根用戶口令的界面,臨時設(shè)置其為“test”。
[在 MySQL 數(shù)據(jù)庫中為 Snort 建立數(shù)據(jù)庫]
Ubuntu 軟件倉庫中有一個默認(rèn)的軟件包 snort-mysql 提供輔助功能,用軟件包管理器下載安裝這個軟件包。
$ sudo apt-get install snort-mysql
安裝好之后查看幫助文檔:
$ less /usr/share/doc/snort-mysql/README-database.Debian
根據(jù)幫助文檔中的指令,在 MySQL 中建立 Snort 的數(shù)據(jù)庫用戶和數(shù)據(jù)庫。所使用的命令如下:
$ mysql –u root –p
在提示符處輸入上面設(shè)置的口令 test
mysql> CREATE DATABASE snort;
mysql> grant CREATE, INSERT, SELECT, UPDATE on snort.* to snort@localhost;
mysql> grant CREATE, INSERT, SELECT, UPDATE on snort.* to snort;
mysql> SET PASSWORD FOR snort@localhost=PASSWORD('snort-db');
mysql> exit
以上命令的功能是在 MySQL 數(shù)據(jù)庫中建立一個 snort 數(shù)據(jù)庫,并建立一個 snort 用戶來管理這個數(shù)據(jù)庫,設(shè)置 snort 用戶的口令為 snort-db。
然后根據(jù) README-database.Debian 中的指示建立 snort 數(shù)據(jù)庫的結(jié)構(gòu)。
$ cd /usr/share/doc/snort-mysql
$ zcat create_mysql.gz | mysql -u snort -D snort -psnort-db
這樣就為 snort 在 MySQL 中建立了數(shù)據(jù)庫的結(jié)構(gòu),其中包括各個 snort 需要使用的表。
[設(shè)置 snort 把 log 文件輸出到 MySQL 數(shù)據(jù)庫中]
修改 Snort 的配置文件:/etc/snort/snort.conf
$ sudo vim /etc/snort/snort.conf
在配置文件中將 HOME_NET 有關(guān)項注釋掉,然后將 HOME_NET 設(shè)置為本機 IP 所在網(wǎng)絡(luò),將 EXTERNAL_NET 相關(guān)項注釋掉,設(shè)置其為非本機網(wǎng)絡(luò),如下所示:
#var HOME_NET any
var HOME_NET 192.168.0.0/16
#var EXTERNAL_NET any
var EXTERNAL_NET !$HOME_NET
將 output database 相關(guān)項注釋掉,將日志輸出設(shè)置到 MySQL 數(shù)據(jù)庫中,如下所示:
output database: log, mysql, user=snort password=snort-db dbname=snort host=localhost
#output database: log, mysql
這樣,snort 就不再向 /var/log/snort 目錄下的文件寫記錄了,轉(zhuǎn)而將記錄存放在 MySQL 的snort數(shù)據(jù)庫中。這時候可以測試一下 Snort 工作是否正常:
$ sudo snort -c /etc/snort/snort.conf
如果出現(xiàn)一個用 ASCII 字符畫出的小豬,那么 Snort 工作就正常了,可以使用 Ctrl-C 退出;如果 Snort 異常退出,就需要查明以上配置的正確性了。
[測試 Web 服務(wù)器 Apache 和 PHP 是否工作正常]
配置 apache 的 php 模塊,添加 msql 和 gd 的擴(kuò)展。
$ sudo vim /etc/php5/apache2/php.ini
extension=msql.so
extension=gd.so
重新啟動 apache
$ /etc/init.d/apache2 restart
在/var/www/目錄下新建一個文本文件test.php
$ sudo vim /var/www/test.php
輸入內(nèi)容:
<?php
phpinfo();
?>
然后在瀏覽器中輸入 http://localhost/test.php,如果配置正確的話,就會出現(xiàn) PHP INFO 的經(jīng)典界面,就標(biāo)志著 LAMP 工作正常。
[安裝和配置 acid-base]
安裝 acid-base 很簡單,使用 Ubuntu 軟件包管理器下載安裝即可:
$ sudo apt-get install acidbase
安裝過程中需要輸入 acidbase 選擇使用的數(shù)據(jù)庫,這里選 MySQL,根用戶口令 test,和 acid-base 的口令(貌似也可以跳過不設(shè)置)。
將acidbase從安裝目錄中拷貝到www目錄中,也可以直接在apache中建立一個虛擬目錄指向安裝目錄,這里拷貝過來主要是為了安全性考慮。
sudo cp –R /usr/share/acidbase/ /var/www/
因為 acidbase 目錄下的 base_conf.php 原本是一個符號鏈接指向 /etc/acidbase/ 下的base_conf.php,為了保證權(quán)限可控制,我們要刪除這個鏈接并新建 base_conf.php 文件。
$ rm base_conf.php
$ touch base_conf.php
暫時將 /var/www/acidbase/ 目錄權(quán)限改為所有人可寫,主要是為了配置 acidbase 所用。
$ sudo chmod 757 acidbase/
現(xiàn)在就可以開始配置 acid-base 了,在瀏覽器地址欄中輸入 http://localhost/acidbase,就會轉(zhuǎn)入安裝界面,然后就點擊 continue 一步步地進(jìn)行安裝:
選擇語言為 english,adodb 的路徑為:/usr/share/php/adodb;選擇數(shù)據(jù)庫為 MySQL,數(shù)據(jù)庫名為 snort,數(shù)據(jù)庫主機為 localhost,數(shù)據(jù)庫用戶名為 snort 的口令為 snort-db;設(shè)置 acidbase 系統(tǒng)管理員用戶名和口令,設(shè)置系統(tǒng)管理員用戶名為 admin,口令為 test。然后一路繼續(xù)下去,就能安裝完成了。
安裝完成后就可以進(jìn)入登錄界面,輸入用戶名和口令,進(jìn)入 acidbase 系統(tǒng)。
這里需要將 acidbase 目錄的權(quán)限改回去以確保安全性,然后在后臺啟動 snort,就表明 snort 入侵檢測系統(tǒng)的安裝完成并正常啟動了:
$ sudo chmod 775 acidbase/
$ sudo snort -c /etc/snort/snort.conf -i eth0 –D
[檢查入侵檢測系統(tǒng)工作狀況,更改入侵檢測規(guī)則]
正常情況下在一個不安全的網(wǎng)絡(luò)中,登錄 acidbase 后一會兒就能發(fā)現(xiàn)網(wǎng)絡(luò)攻擊。如果沒有發(fā)現(xiàn)網(wǎng)絡(luò)攻擊,可以添加更嚴(yán)格的規(guī)則使得正常的網(wǎng)絡(luò)連接也可能被報攻擊,以測試 Snort IDS 的工作正確性,比如在 /etc/snort/rules/web-misc.rules 的最后添加下面的話:
$ sudo vi /etc/snort/rules/web-misc.rules
alert tcp any :1024 -> $HTTP_SERVER 500:
這一行的意思是:對從任何地址小于 1024 端口向本機 500 以上端口發(fā)送的 tcp 數(shù)據(jù)包都報警。殺死 Snort 的后臺進(jìn)程并重新啟動,就應(yīng)該能檢測到正常的包也被當(dāng)作攻擊了。
$ sudo kill `pgrep snort`
$ sudo snort –c /etc/snort/snort.conf –i eth0 -D
總結(jié)
使用Ubuntu安裝Snort入侵檢測系統(tǒng)和網(wǎng)頁控制臺是相當(dāng)容易的,因為 Ubuntu 提供了很方便的軟件包安裝功能,只是有時候定制性能太差,需要用戶手動去尋找軟件包的安裝位置。
【編輯推薦】
- 如何構(gòu)建入門級IDS
- IDS漏洞分析與黑客入侵手法
- 測試評估IDS的性能指標(biāo)
- 正確評估IDS性能的標(biāo)準(zhǔn)與步驟
- 企業(yè)測試IDS的四條重要標(biāo)準(zhǔn)