一、 前言
互聯網的普及給網絡管理人員帶來了極大的挑戰:隨處可得的黑客工具和系統漏洞信息使我們的網絡無時無刻不處于危險之中。一般說來,一個典型的網絡攻擊是以大量的端口掃描等手段獲取關于攻擊對象的信息為開端的,這個過程必然產生大量的異常網絡流量預示著即將到來的真正攻擊,然而當前被廣泛使用的網絡產品都具有一個普遍的弱點--被動防御,即對這些重要的網絡攻擊先兆熟視無睹,錯過了最佳的防御時間。為了扭轉這種不利的局面,變被動防御為積極防御,就要求網管人員對網絡的運行狀態進行實時監控以便隨時發現入侵征兆并進行具體的分析,然后及時進行干預,從而取得防患于未然的效果。完成這種功能的安全產品就是網絡入侵檢測系統(Network Intrusion Detection Systems,NIDS)。
目前,市場上的這類產品可分為硬件和軟件兩種類型,但無論選擇那種都有一個共同的特點:昂貴。即便在單點安裝的情況下,無論是硬件類型的費用還是軟件類型的許可費都需要數萬元乃至十余萬元。如果無法承受這筆開支該怎么辦?難道網絡安全工作就不去搞了嗎?答案是否定的。
正如所帶給我們的巨大挑戰一樣,互聯網也同時帶給我們無數的寶貴資源,只等我們去開發、利用。開放源代碼軟件(Open Source Software)便是其中之一,免費可得的軟件發布形式,使其具有廣大的用戶群;眾多志愿者的協同開發模式使其具有卓越的兼容性;大量的網上社區彌補了缺少商業服務的不足。本文試圖論述利
用互聯網上免費可得的開放源代碼軟件實現一個完整的網絡入侵檢測系統的過程。
二、 系統概述
本系統采用三層分布式體系結構:網絡入侵探測器、入侵事件數據庫和基于Web的分析控制臺。為了避免不必要的網絡流量,本例將網絡入侵探測器和入侵事件數據庫整合在一臺主機中,用標準瀏覽器異地訪問主機上的Web服務器作為分析控制臺,兩者之間的通信采用HTTPS安全加密協議傳輸。
由于實現本系統所需的軟件較多,有必要在此進行簡要的說明:
Snort
功能簡述:網絡入侵探測器;
正式網址:http://www.snort.org/
軟件版本:1.8.6
Libpcap
功能簡述:Snort所依賴的網絡抓包庫;
正式網址:http://www.tcpdump.org/
軟件版本:0.7.1
MySQL
功能簡述:入侵事件數據庫;
正式網址:http://www.mysql.org/
軟件版本:3.23.49
Apache
功能簡述:Web服務器;
正式網址:http://www.apache.org/
軟件版本:1.3.24
Mod_ssl
功能簡述:為Apache提供SSL加密功能的模塊;
正式網址:http://www.modssl.org/
軟件版本:2.8.8
OpenSSL
功能簡述:開放源代碼的SSL加密庫,為mod_ssl所依賴;
正式網址:http://www.openssl.org/
軟件版本:0.9.6d
MM
功能簡述:為Apache的模塊提供共享內存服務;
正式網址:http://www.engelschall.com/sw/mm/
軟件版本:1.1.3
PHP
功能簡述:ACID的實現語言;
正式網址:http://www.php.net/
軟件版本:4.0.6
GD
功能簡述:被PHP用來即時生成PNG和JPG圖像的庫;
正式網址:http://www.boutell.com/gd/
軟件版本:1.8.4
ACID
功能簡述:基于Web的入侵事件數據庫分析控制臺;
正式網址:http://www.cert.org/kb/aircert/
軟件版本:0.9.6b21
ADODB
功能簡述:為ACID提供便捷的數據庫接口;
正式網址:http://php.weblogs.com/ADODB
軟件版本:2.00
PHPlot
功能簡述:ACID所依賴的制圖庫;
正式網址:http://www.phplot.com/
軟件版本:4.4.6
上述軟件都是開源軟件,可以直接登錄相應軟件的正式網站,下載源代碼。此外,需要特別說明的一點是雖然本例中網絡入侵檢測系統所采用的系統平臺是Solaris 8 for Intel Platform,但是在其它種類的系統平臺上,如Linux 、OpenBSD以及Windows 2000等,其具體的實現步驟大同小異,因此就不在另行說明了。
三、 安裝及配置
在正式進行軟件安裝之前,請檢查系統,確保擁有符合ANSI標準的C/C++編譯器等軟件開發工具。
1、 安裝MySQL
首先,以超級用戶的身份登錄系統,創建mysql 用戶和mysql用戶組;
然后,以mysql身份登錄,執行下列命令:
$gzip -d -c mysql-3.23.49.tar.gz | tar xvf -
$cd mysql-3.23.49
$./configure
$make
$make install
這樣,就按照缺省配置將MySQL安裝在/usr/local目錄下。然后將源代碼樹中的缺省配置文件my.cnf拷貝到/etc目錄下。接下來,以超級用戶身份執行源碼樹中scripts目錄下的可執行腳本文件mysql_install_db來創建初始數據庫。用/etc/init.d/mysql.server命令啟動數據庫服務器后,使用/usr/local/bin/mysqladmin程序來改變數據庫管理員的口令。
2、 安裝Snort
首先安裝Snort所依賴的庫libpcap:
#gzip -d -c libpcap-0.7.1.tar.gz | tar xvf -
#cd libpcap-0.7.1
#./configure
#make
#make install
這樣libpcap缺省地安裝在/usr/local目錄下。
然后開始安裝Snort:
#gzip -d -c snort-1.8.6.tar.gz | tar xvf -
#cd snort-1.8.6
#./configure --prefix=/usr/local --with-mysql=/usr/local --with-libpcap-includes=/usr/local --with-libpcap-libraries-/usr/local
#make
#make install
安裝完畢后,將源碼樹中的snort.conf文件、classification.config文件和規則文件(*.rules)拷貝到系統的/etc目錄下。
按照下列步驟配置Snort將其捕獲的網絡信息輸出到MySQL數據庫:
1) 創建Snort入侵事件數據庫和存檔數據庫:
#/usr/local/bin/mysqladmin -u root -p create snort
#/usr/local/bin/mysqladmin -u root -p create snort_archive
2) 執行Snort源碼樹下contrib目錄下的create_mysql SQL腳本文件創建相關表:
#/usr/local/bin/mysql -u root -D snort -p < create_mysql
#/usr/local/bin/mysql -u root -D snort_archive -p < create_mysql
3) 編輯/etc/snort.conf文件在output plugin 段中加入如下一行:
output database: alert, mysql, user=root password=abc123
dbname=snort host=localhost
3、 安裝Apache
1) 安裝MM庫
#gzip -d -c mm-1.1.3.tar.gz | tar xvf -
#cd mm-1.1.3
#./configure
#make
#make install
MM庫被按照缺省配置安裝在/usr/local目錄下。
2) 安裝OpenSSL
#gzip -d -c openssl-0.9.6d.tar.gz | tar xvf -
#cd openssl-0.9.6d
#./config
#make
#make test
#make install
OpenSSL按照缺省設置安裝在/usr/local目錄下。
3) 為Apache擴展mod_ssl代碼
#gzip -d -c apache-1.3.24.tar.gz | tar xvf -
#gzip -d -c mod_ssl-2.8.8-1.3.24.tar.gz | tar xvf -
#cd mod_ssl-2.8.8-1.3.24
#./configure --with-apache=apache-1.3.24
該命令運行成功之后,會有提示說明已經成功擴展了Apache的源代碼。
4) 安裝Apache
#cd ../apache-1.3.24
#SSL_BASE=/usr/local EAPI_MM=/usr/local ./configure -enable-module=so --enable-module=ssl --prefix=/usr/local
#make
#make certificate
#make install
其中,make certificate命令是為mod_ssl生成所需的安全證書,按照提示輸入相應信息即可。這樣,Apache就被安裝在了/usr/local目錄下。
4、 安裝PHP
首先安裝為PHP提供既時生成PNG和JPG圖象功能的GD庫:
#gzip -d -c gd-1.8.4.tar.gz | tar xvf -
#cd gd-1.8.4
#make
#make install
按照缺省配置,將其安裝到/usr/local目錄下。接下來開始正式安裝PHP:
#gzip -d -c php-4.0.6.tar.gz | tar xvf -
#cd php-4.0.6
#./configure -with-mysql=/usr/local --with-apxs=/usr/local/bin/apxs --with-gd=/usr/local
#make
#make install
此處采用的是PHP的Apache動態模塊DSO安裝模式,完成之后,將會在/usr/local/libexec目錄下生成Apache DSO模塊libphp4.so。


