余志高 周國祥
合肥工業(yè)大學(xué)計算機與信息學(xué)院 安徽 230009
隨著技術(shù)的發(fā)展與社會的進(jìn)步,信息通過網(wǎng)絡(luò)的快速及時的傳遞給人們的工作與生活帶來了極大的方便。在計算機網(wǎng)絡(luò)發(fā)展與普及的同時,計算機病毒、網(wǎng)絡(luò)欺詐、數(shù)據(jù)的盜用與篡改等網(wǎng)絡(luò)攻擊威脅到人們的切身利益,網(wǎng)絡(luò)安全越來越受到人們的重視。入侵檢測與防火墻都是作為應(yīng)對網(wǎng)絡(luò)安全的技術(shù)手段而應(yīng)用而生。
入侵檢測系統(tǒng)(IDS)就是通過對網(wǎng)絡(luò)中的數(shù)據(jù)流進(jìn)行監(jiān)視、分析等處理手段,來發(fā)現(xiàn)各種攻擊企圖、攻擊行為、攻擊后果,已保證系統(tǒng)資源的機密性、完整性與可靠性。入侵檢測系統(tǒng)根據(jù)實現(xiàn)的原理不同一般可分為基于異常檢測和基于誤用檢測。
防火墻是指部署在內(nèi)部網(wǎng)絡(luò)與外部網(wǎng)絡(luò)間的一個軟件或硬件系統(tǒng),用戶通過制定安全策略阻止外網(wǎng)的非法用戶對內(nèi)部網(wǎng)絡(luò)的訪問。防火墻根據(jù)采用的技術(shù)不同有多種類型,其中最基本最有效的是包過濾型防火墻。包過濾型防火墻通過檢查數(shù)據(jù)包的地址、協(xié)議、端口等信息來決定是否允許此數(shù)據(jù)包通過。
Netfilter/Iptables是與2.4.x和2.6.x版本Linux內(nèi)核集成的 IP 信息包過濾系統(tǒng),也就是一種基于包過濾的防火墻實現(xiàn)技術(shù)。它使得用戶能夠很方便地在網(wǎng)絡(luò)邊界定制對數(shù)據(jù)包的各種控制,如有狀態(tài)或無狀態(tài)的包過濾、網(wǎng)絡(luò)地址轉(zhuǎn)換、流量控制及高級的包處理等。
同為網(wǎng)絡(luò)安全的防護(hù)措施,入侵檢測與防火墻有各自的優(yōu)缺點。比如,Snort入侵檢測系統(tǒng)根據(jù)已知的入侵特征定制規(guī)則集,來檢測符合規(guī)則定義的網(wǎng)絡(luò)攻擊,然后通過警報通知用戶,等待用戶采取措施來處理相應(yīng)的入侵攻擊。因此及時的升級規(guī)則庫就能夠有效的檢測到透過防火墻的入侵行為。作為入侵系統(tǒng)由于它的機制是監(jiān)視網(wǎng)絡(luò)中的數(shù)據(jù)包,本身并沒有阻止發(fā)送問題數(shù)據(jù)包的非法用戶入侵行為。Netfilter/Iptables防火墻一般部署在內(nèi)網(wǎng)與外網(wǎng)的邊界,外網(wǎng)與內(nèi)網(wǎng)的數(shù)據(jù)流都要經(jīng)過它來互相通信。它采用的是包過濾機制,對經(jīng)過的數(shù)據(jù)包進(jìn)行解析,分析其中的地址、協(xié)議、端口等字段,將它們與事先定義好的規(guī)則進(jìn)行對比,然后決定是允許還是拒絕數(shù)據(jù)包的通過。它就像一道關(guān)卡,對于授信用戶的數(shù)據(jù)包就允許其通行,對于非授信的用戶就采用丟棄數(shù)據(jù)包的方法來應(yīng)對可能的威脅。防火墻雖然能夠?qū)Ψ弦欢ㄒ?guī)律的入侵采取拒絕與阻斷,但是由于其策略的制定往往比較抽象,有部分的非法用戶能夠透過防火墻而無法被發(fā)現(xiàn)。因此在防火墻內(nèi)部部署IDS系統(tǒng)就是一種很好的補充手段。
安全模型采用的操作系統(tǒng)及IDS、防火墻軟件如表1所示。Snort的后臺數(shù)據(jù)庫采用MySQL 5.0,MySQL具有執(zhí)行性能高,運行速度快,并容易使用等優(yōu)點。BASE與Apache2可以使用戶以Web方式查看與管理Snort的入侵警報。

表1 操作系統(tǒng)與軟件
圖1為網(wǎng)絡(luò)結(jié)構(gòu)模型,安裝有Netfilter/Iptables的Linux服務(wù)器部署在內(nèi)網(wǎng)與外網(wǎng)的邊界,所有內(nèi)網(wǎng)與外網(wǎng)的數(shù)據(jù)通信都必須經(jīng)過 iptables策略的處理,外網(wǎng)的數(shù)據(jù)在進(jìn)入內(nèi)網(wǎng)之前,經(jīng)過防火墻能夠過濾掉大部分的入侵行為。Snort通過網(wǎng)口鏡像監(jiān)視經(jīng)過交換機的數(shù)據(jù)流,若發(fā)現(xiàn)入侵行為就會生成警報并將相關(guān)的日志記錄存入Snort數(shù)據(jù)庫。用戶在查看警告日志的同時,可以根據(jù)日志的相關(guān)信息(IP地址,協(xié)議,協(xié)議端口等),構(gòu)建新的規(guī)則并添加到防火墻的規(guī)則集中。

圖1 網(wǎng)絡(luò)結(jié)構(gòu)模型
入侵檢測系統(tǒng)檢測到入侵行為后通常是產(chǎn)生警報通知用戶,用戶在讀取并分析警報后手動采取應(yīng)對措施。IDS警報隨時都有可能產(chǎn)生,而用戶往往不能夠及時的處理,這就給網(wǎng)絡(luò)入侵者留下了更多的時間和機會去攻擊內(nèi)部網(wǎng)絡(luò)。那么能否在 Snort產(chǎn)生警報后根據(jù)它提供的日志信息來自動添加 Iptables規(guī)則來阻斷入侵者與內(nèi)部網(wǎng)絡(luò)的通信呢。這就需要入侵檢測系統(tǒng)與防火墻協(xié)同工作。為此我們采用 crontab定時執(zhí)行SHELL腳本文件Autoaddrule.sh來實現(xiàn)這個功能。圖2為警報處理流程圖。Snort數(shù)據(jù)庫中的acid_event表結(jié)構(gòu):acid_event(sid,cid,signature,sig_name,

圖2 警報處理流程圖
sig_class_id,sig_priority,mestamp,ip_src,ip_dst,ip_proto,layer4_sport, layer4_dport)
在Linux系統(tǒng)中使用#crontab -e添加定時任務(wù)(本例為每10分鐘執(zhí)行腳本一次):
*/10 * * * * /var/lib/mysql/shell/Autoaddrule.sh Autoaddrule.sh腳本文件:

腳本主要實現(xiàn)以下功能:
(1) 為了防止產(chǎn)生重復(fù)的IPTABLES規(guī)則,語句4-11首先根據(jù)文件中的記錄清除iptables列表。
(2) 連接Snort數(shù)據(jù)庫,根據(jù)最新的警報提起重要信息,并將需要的信息生成到防火墻服務(wù)器本地的文件中。并根據(jù)源地址和端口過濾相同的記錄,避免產(chǎn)生相同的規(guī)則。IP地址是以整數(shù)形式存儲在數(shù)據(jù)庫表中,INET_NTOA()來實現(xiàn)整數(shù)形式到IP地址的轉(zhuǎn)換。如語句13所示。
(3) 逐行讀取文件中的數(shù)據(jù)(IP地址與端口),并將這些信息作為iptables命令的參數(shù)插入到iptables規(guī)則列表中(14-20行)。
在完成系統(tǒng)環(huán)境搭建后,為了測試模型的可用性,使用了Lincoln Laboratory 的DARPA 1999入侵檢測評估數(shù)據(jù)集對系統(tǒng)進(jìn)行了測試,在選取數(shù)據(jù)集中第五星期的第一天outside.tcpdump數(shù)據(jù)作外網(wǎng)攻擊模擬,Snort產(chǎn)生了36個報警。在10分鐘后用iptables -L查看防火墻的策略時,有27條互不相同的規(guī)則被添加到規(guī)則集中,很好的實現(xiàn)了預(yù)期的功能。表2列出了部分測試產(chǎn)生的iptables規(guī)則。

表2 測試產(chǎn)生的iptables規(guī)則
隨著人們對網(wǎng)絡(luò)安全重要性認(rèn)識的提高,以及層出不窮的入侵手段,對網(wǎng)絡(luò)的防護(hù)不再局限采用單一的產(chǎn)品與手段。人們開始研究與應(yīng)用不同技術(shù)手段的自動協(xié)同與融合。正是在這種趨勢下,本文實現(xiàn)了防火墻與入侵檢測的簡單自動協(xié)同,通過SHELL腳本將IDS檢測到的入侵行為自動生成防火墻的規(guī)則,及時的阻斷來自外網(wǎng)的入侵行為,從而提高網(wǎng)絡(luò)的安全性。后期的工作重點是在此模型的基礎(chǔ)上,完善系統(tǒng)的功能,提高系統(tǒng)的實用性與易用性。
[1] 胡昌振.網(wǎng)絡(luò)入侵檢測原理與技術(shù)[M].北京理工大學(xué)出版社.2006.
[2] Farah Jemili,Dr.Montaceur Zaghdoud,Pr.Mohamed Ben Ahmed. A Framework for an daptive Intrusion Detection System using Bayesian Network.Intelligence and Security Infomatics.2007 IEEE. 23-24 May 2007.
[3] M.Bahrololum,M.Khaleghi.Anomaly Intrusion Detection System using Gaussian Mixture Model. 2008.
[4] 肖立中,邵志清,馬漢華等.網(wǎng)絡(luò)入侵檢測中的自動決定聚類數(shù)算法[J].軟件學(xué)報.2008.
[5] 姜慶民,吳寧,劉偉華.面向入侵檢測系統(tǒng)的模式匹配算法研究[J].西安交通大學(xué)學(xué)報.2009.
[6] 賈春福,鐘安鳴,周霞等.基于系統(tǒng)調(diào)用的 Linux系統(tǒng)入侵檢測技術(shù)研究[J].計算機應(yīng)用研究.2007.
[7] 劉衍珩,田大新,余雪崗,王健.基于分布式學(xué)習(xí)的大規(guī)模網(wǎng)絡(luò)入侵檢測算法[J].軟件學(xué)報.2008.
[8] 宋文功,唐琎.基于 Linux的防火墻技術(shù)研究[M].微計算機信息.2006.
[9] Patrick Harper.Snort,Apache,SSL,PHP,MySQL,and BASE Install On CenterOS4,RHEL4 or Fedora Core-with NTOP.http://www.snort.org/docs/setup-guides/. Version 15,Updated 8/17/2006.
[10] 穆成坡,黃厚寬,田盛豐,李向軍.自動入侵響應(yīng)決策技術(shù)的研究綜述[J].計算機研究與發(fā)展.2008.
[11] 王麗輝,李濤,張曉平等.一種聯(lián)動防火墻的網(wǎng)絡(luò)入侵檢測系統(tǒng)[J].計算機應(yīng)用研究.2006.
[12] David Tansley.LINUX與UNIX SHELL編程指南[M].北京:機械工業(yè)出版社.2000.