如何在Ubuntu上安裝Snort入侵檢測系統
Snort作為一款優秀的開源主機入侵檢測系統,在windows和Linux平臺上均可安裝運行。Ubuntu作為一個以桌面應用為主的Linux操作系統,同樣也可以安裝Snort。
安裝Snort過程
[安裝LAMP,Snort和一些軟件庫]
由于 Ubuntu 是 Debian 系的 Linux,安裝軟件非常簡單,而且 Ubuntu 在中國科技大學有鏡像,在教育網和科技網下載速度非常快(2~6M/s),就省掉了出國下載安裝包的麻煩,只需要一個命令即可在幾十秒鐘內安裝好所有軟件。這里使用 Ubuntu 默認命令行軟件包管理器 apt 來進行安裝。
$ 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 數據庫時會彈出設置 MySQL 根用戶口令的界面,臨時設置其為“test”。
[在 MySQL 數據庫中為 Snort 建立數據庫]
Ubuntu 軟件倉庫中有一個默認的軟件包 snort-mysql 提供輔助功能,用軟件包管理器下載安裝這個軟件包。
$ sudo apt-get install snort-mysql
安裝好之后查看幫助文檔:
$ less /usr/share/doc/snort-mysql/README-database.Debian
根據幫助文檔中的指令,在 MySQL 中建立 Snort 的數據庫用戶和數據庫。所使用的命令如下:
$ mysql –u root –p
在提示符處輸入上面設置的口令 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 數據庫中建立一個 snort 數據庫,并建立一個 snort 用戶來管理這個數據庫,設置 snort 用戶的口令為 snort-db。
然后根據 README-database.Debian 中的指示建立 snort 數據庫的結構。
$ cd /usr/share/doc/snort-mysql
$ zcat create_mysql.gz | mysql -u snort -D snort -psnort-db
這樣就為 snort 在 MySQL 中建立了數據庫的結構,其中包括各個 snort 需要使用的表。
[設置 snort 把 log 文件輸出到 MySQL 數據庫中]
修改 Snort 的配置文件:/etc/snort/snort.conf
$ sudo vim /etc/snort/snort.conf
在配置文件中將 HOME_NET 有關項注釋掉,然后將 HOME_NET 設置為本機 IP 所在網絡,將 EXTERNAL_NET 相關項注釋掉,設置其為非本機網絡,如下所示:
#var HOME_NET any
var HOME_NET 192.168.0.0/16
#var EXTERNAL_NET any
var EXTERNAL_NET !$HOME_NET
將 output database 相關項注釋掉,將日志輸出設置到 MySQL 數據庫中,如下所示:
output database: log, mysql, user=snort password=snort-db dbname=snort host=localhost
#output database: log, mysql
這樣,snort 就不再向 /var/log/snort 目錄下的文件寫記錄了,轉而將記錄存放在 MySQL 的snort數據庫中。這時候可以測試一下 Snort 工作是否正常:
$ sudo snort -c /etc/snort/snort.conf
如果出現一個用 ASCII 字符畫出的小豬,那么 Snort 工作就正常了,可以使用 Ctrl-C 退出;如果 Snort 異常退出,就需要查明以上配置的正確性了。
[測試 Web 服務器 Apache 和 PHP 是否工作正常]
配置 apache 的 php 模塊,添加 msql 和 gd 的擴展。
$ 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
輸入內容:
<?php
phpinfo();
?>
然后在瀏覽器中輸入 http://localhost/test.php,如果配置正確的話,就會出現 PHP INFO 的經典界面,就標志著 LAMP 工作正常。
[安裝和配置 acid-base]
安裝 acid-base 很簡單,使用 Ubuntu 軟件包管理器下載安裝即可:
$ sudo apt-get install acidbase
安裝過程中需要輸入 acidbase 選擇使用的數據庫,這里選 MySQL,根用戶口令 test,和 acid-base 的口令(貌似也可以跳過不設置)。
將acidbase從安裝目錄中拷貝到www目錄中,也可以直接在apache中建立一個虛擬目錄指向安裝目錄,這里拷貝過來主要是為了安全性考慮。
sudo cp –R /usr/share/acidbase/ /var/www/
因為 acidbase 目錄下的 base_conf.php 原本是一個符號鏈接指向 /etc/acidbase/ 下的base_conf.php,為了保證權限可控制,我們要刪除這個鏈接并新建 base_conf.php 文件。
$ rm base_conf.php
$ touch base_conf.php
暫時將 /var/www/acidbase/ 目錄權限改為所有人可寫,主要是為了配置 acidbase 所用。
$ sudo chmod 757 acidbase/
現在就可以開始配置 acid-base 了,在瀏覽器地址欄中輸入 http://localhost/acidbase,就會轉入安裝界面,然后就點擊 continue 一步步地進行安裝:
選擇語言為 english,adodb 的路徑為:/usr/share/php/adodb;選擇數據庫為 MySQL,數據庫名為 snort,數據庫主機為 localhost,數據庫用戶名為 snort 的口令為 snort-db;設置 acidbase 系統管理員用戶名和口令,設置系統管理員用戶名為 admin,口令為 test。然后一路繼續下去,就能安裝完成了。
安裝完成后就可以進入登錄界面,輸入用戶名和口令,進入 acidbase 系統。
這里需要將 acidbase 目錄的權限改回去以確保安全性,然后在后臺啟動 snort,就表明 snort 入侵檢測系統的安裝完成并正常啟動了:
$ sudo chmod 775 acidbase/
$ sudo snort -c /etc/snort/snort.conf -i eth0 –D
[檢查入侵檢測系統工作狀況,更改入侵檢測規則]
正常情況下在一個不安全的網絡中,登錄 acidbase 后一會兒就能發現網絡攻擊。如果沒有發現網絡攻擊,可以添加更嚴格的規則使得正常的網絡連接也可能被報攻擊,以測試 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 以上端口發送的 tcp 數據包都報警。殺死 Snort 的后臺進程并重新啟動,就應該能檢測到正常的包也被當作攻擊了。
$ sudo kill `pgrep snort`
$ sudo snort –c /etc/snort/snort.conf –i eth0 -D
總結
使用Ubuntu安裝Snort入侵檢測系統和網頁控制臺是相當容易的,因為 Ubuntu 提供了很方便的軟件包安裝功能,只是有時候定制性能太差,需要用戶手動去尋找軟件包的安裝位置。
【編輯推薦】