摘要:入侵檢測是一種通過某種方法完成網(wǎng)絡(luò)系統(tǒng)中入侵行為檢測和報告的技術(shù)。鑒于目前校園網(wǎng)絡(luò)環(huán)境普遍存在的安全問題的現(xiàn)狀,該文主要討論如何在校園網(wǎng)中部署入侵檢測系統(tǒng)。
關(guān)鍵詞:網(wǎng)絡(luò)安全;入侵檢測系統(tǒng);規(guī)則
中圖分類號:TP393文獻標(biāo)識碼:A文章編號:1009-3044(2009)24-6671-02
The Application of Intrusion Detection System on Campus Network
ZHANG Song-juan,LI Jin-ling
(Nanyang Institute of Technology,Nanyang 473004,China)
Abstract: Intrusions Detection is a technology through the completion of the network system intrusions detection and reporting. At present, because of their particular groups of users and existing network structure, the security of campus network has become a growing concern of the people.This report mainly discuss how to deploy an IDS System on the campus network.
Key words: network security; intrusions detection system; rules
隨著計算機網(wǎng)絡(luò)的快速發(fā)展,網(wǎng)絡(luò)安全日益引起了各行各業(yè)的重視,校園網(wǎng)中上網(wǎng)人數(shù)眾多,因而發(fā)生在校園網(wǎng)中的各種網(wǎng)絡(luò)安全事件也普遍發(fā)生。防火墻可以提高網(wǎng)絡(luò)的安全度,但是防火墻卻只能防護外來的入侵,對于來自內(nèi)部的攻擊卻無能為力。而入侵檢測系統(tǒng)剛好可以彌補網(wǎng)絡(luò)中的這個缺陷。
1 入侵檢測系統(tǒng)概述
入侵檢測系統(tǒng)(IDS,Intrusion Detection System)是一種針對網(wǎng)絡(luò)中的入侵行為進行檢測的工具,根據(jù)網(wǎng)絡(luò)攻擊的特征或在系統(tǒng)日志下留下的痕跡,結(jié)合用戶權(quán)限與系統(tǒng)狀態(tài)等信息,采用通緝分析或智能分析算法等來監(jiān)控系統(tǒng)或網(wǎng)絡(luò)的安全狀態(tài)[1]。入侵檢測并不能阻止某些入侵,但能幫助系統(tǒng)管理員阻止黑客的進一步攻擊,彌補了被動式網(wǎng)絡(luò)安全組件的不足之處。
如圖1所示,在實際網(wǎng)絡(luò)環(huán)境中,入侵檢測探測器一般都被放置在網(wǎng)絡(luò)的“旁路”,可以對網(wǎng)絡(luò)中的各種數(shù)據(jù)流行為進行監(jiān)控和識別,一旦檢測到網(wǎng)絡(luò)入侵行為,就會向IDS控制臺發(fā)出警報[2]。
Snort是一個著名的基于規(guī)則的開源入侵檢測系統(tǒng),由Martin Roesch編寫,并由遍布世界各地的眾多程序員共同維護升級,是目前最活躍的開源網(wǎng)絡(luò)入侵檢測項目。Snort定位于輕量級的入侵檢測系統(tǒng),已經(jīng)實現(xiàn)了網(wǎng)絡(luò)探測器和許多第三方的管理及日志分析工具,是事實上的工業(yè)標(biāo)準(zhǔn)。
Snort系統(tǒng)可以分為5個主要的組件,每個組件對入侵檢測都很關(guān)鍵。第一個是捕包裝置。Snort依賴一個外部捕包程序庫(libpacp)來抓包。在包被以原始狀態(tài)捕獲后,要送給包解碼器。解碼器是進入Snort自身體系的第一步,解碼器可以完成對捕獲的數(shù)據(jù)包進行逐層解碼,并存儲對每層解碼后的數(shù)據(jù)信息。包解碼器和解碼完成后,由預(yù)處理器處理流量,許多插入式預(yù)處理程序?qū)ΠM行檢查或操作后將它們交給下一個組件:檢測引擎。檢測引擎對每個包的一個方面進行具體的規(guī)則匹配以判斷是否為入侵行為,如果是,就生成警報數(shù)據(jù),最后一個組件就是輸出插件,它可以輸出可疑行為產(chǎn)生警報信息[3-4]。圖2是一個簡單的數(shù)據(jù)流程示意圖。
2 基于校園網(wǎng)的入侵檢測系統(tǒng)的設(shè)計與部署
雖然在大多數(shù)校園網(wǎng)中實施了不少安全措施,但是,因為網(wǎng)絡(luò)的攻擊無處不在、無時不在,特別是來自網(wǎng)絡(luò)內(nèi)部的攻擊行為的存在,使得校園網(wǎng)變的異常脆弱。如何有效地提高校園網(wǎng)的安全防護能力,是許多網(wǎng)絡(luò)安全技術(shù)人員特別是校園網(wǎng)網(wǎng)絡(luò)管理員亟待考慮和研究的一個問題。
鑒于校園網(wǎng)的安全現(xiàn)狀,在校園網(wǎng)中加載入侵檢測系統(tǒng)可以有效地提高網(wǎng)絡(luò)安全。入侵檢測系統(tǒng)可以對來自網(wǎng)絡(luò)內(nèi)外的各種數(shù)據(jù)流進行監(jiān)控,并記錄異常的網(wǎng)絡(luò)行為,通過對記錄的入侵數(shù)據(jù)進行分析,網(wǎng)絡(luò)管理員可以更新網(wǎng)絡(luò)安全策略、增加系統(tǒng)漏洞補丁、發(fā)現(xiàn)可疑攻擊源頭等途徑來改善網(wǎng)絡(luò)安全狀況。
2.1Snort系統(tǒng)設(shè)計和整體部署方案
如圖3所示,該校園網(wǎng)通過一臺防火墻設(shè)備接入互聯(lián)網(wǎng),在網(wǎng)絡(luò)的內(nèi)部核心交換機設(shè)備上連接并部署一臺入侵檢測系統(tǒng)主機,通過配置交換機的端口鏡像功能,使入侵檢測主機可以監(jiān)控所有來自網(wǎng)絡(luò)內(nèi)部和外部的數(shù)據(jù)流量。并通過設(shè)置入侵檢測規(guī)則,完成對異常的網(wǎng)絡(luò)攻擊或入侵進行報警,對于報警的數(shù)據(jù)輸出到一個MySQL數(shù)據(jù)庫中,然后通過ACID進行處理,并把報警信息和其它相關(guān)信息生成圖形化網(wǎng)頁界面經(jīng)過Web服務(wù)器發(fā)布到局域網(wǎng)內(nèi)部。
最后,可以通過一臺入侵檢測分析控制臺對Snort的報警信息進行具體的分析和響應(yīng)。
2.2 配置交換機的端口鏡像
校園網(wǎng)中,核心交換機設(shè)備為神州數(shù)碼DCRS-7504,該設(shè)備標(biāo)配有48個10/100/1000Mbps自適應(yīng)的以太網(wǎng)端口,其中e4/48端口連接防火墻設(shè)備,e4/20連接Snort主機。
以下是具體的設(shè)備配置清單:
net-centre(config)#mirror-port ethernet 4/48//設(shè)置48端口為被鏡像端口
net-centre(config)#interface ethernet 4/20//進入20端口
net-centre(config-if-e4/20)# monitor ethernet 4/48 //設(shè)置20端口監(jiān)控48端口
2.3 部署Apache+PHP+MySQL環(huán)境
為了簡單起見,直接使用基于Windows操作系統(tǒng)的Apache+PHP+MySQL三合一安裝包,直接安裝即可。
部署完以后可以在Snort主機上打開IE瀏覽器,輸入:http://localhost進行具體的測試,關(guān)鍵是需要保證PHP可以正常運行。
2.4 部署基于Snort系統(tǒng)的MySQL數(shù)據(jù)庫
因為,Snort最終的檢測數(shù)據(jù)結(jié)果要通過MySQL插件輸入到MySQL類型的數(shù)據(jù)內(nèi)。所以必須配置MySQL數(shù)據(jù)庫以配合Snort系統(tǒng)。
在本系統(tǒng)中,共有兩個數(shù)據(jù)庫需要配置,一個是存放Snort輸出檢測數(shù)據(jù)的數(shù)據(jù)庫,假設(shè)定義為snort;另外一個為ACID引擎使用的數(shù)據(jù)庫,假設(shè)定義為snort_archive 。訪問數(shù)據(jù)庫的帳戶和密碼為snort/test和acid/test,其中,snort帳戶主要完成snort數(shù)據(jù)庫的記錄添加,而acid則完成對snort數(shù)據(jù)庫的更改操作,包括:添加、修改、刪除等操作。
2.4.1創(chuàng)建snort和snort_archive數(shù)據(jù)
mysql>create database snort;
mysql>create database snort_archive;
2.4.2建立acid 和snort 用戶
mysql> grant usage on *.* to \"acid\"@\"localhost\" identified by \"test\";
mysql> grant usage on *.* to \"snort\"@localhost\" identified by \"test\";
2.4.3 對acid和snort用戶進行授權(quán)
mysql> grant select,insert,update,delete,create,alter on snort .* to \"acid\"@\"localhost\";
mysql> grant select,insert on snort .* to \"snort\"@\"localhost\";
mysql> grant select,insert,update,delete,create,alter on snort_archive .* to \"acid\"@\"localhost\";
2.4.4 Snort2.x規(guī)則的編寫
針對當(dāng)前校園網(wǎng)絡(luò)頻繁遭遇的Nachi.worm(沖擊波殺手)攻擊[5],根據(jù)其特征可設(shè)置Snort入侵檢測規(guī)則如下:
alert icmp$HOME_NET any ->$EXTERNAL_NET any ( msg ”Nachi.Worm”; dsize:64; itype:8; reference:http://www.nyist.net; sid:483;)
針對ICMP的Smurf攻擊,設(shè)置Snort入侵檢測規(guī)則如下:
alert icmp $EXTERNAL_NET any -> $HOME_NET any (msg:\"ICMP Broadscan Smurf Scanner\"; dsize:4; icmp_id:0; icmp_seq:0; itype:8; classtype:attempted-recon; sid:478; rev:4;)
針對Netbios的尼姆達攻擊,設(shè)置Snort入侵檢測規(guī)則如下:
alert tcp $EXTERNAL_NET any -> $HOME_NET 139 (msg:\"NETBIOS nimda RICHED20.DLL\"; flow:to_server,established; content:\"R|00|I|00|C|00|H|00|E|00|D|00|2|00|0|00|.|00|D|00|L|00|L\"; nocase; reference:url,www.f-secure.com/v-descs/nimda.shtml; classtype:bad-unknown; sid:1295; rev:10;)
針對基于UDP的DDoS攻擊行為,設(shè)置Snort入侵檢測規(guī)則如下:
alert udp $EXTERNAL_NET any -> $HOME_NET 31335 (msg:\"DDOS Trin00 Daemon to Master message detected\"; flow:to_server; content:\"l44\"; metadata:policy security-ips drop; reference:arachnids,186; reference:cve,2000-0138; classtype:attempted-dos; sid:231; rev:6;)
針對SubSeven的特洛伊木馬的攻擊行為,設(shè)置Snort入侵檢測規(guī)則如下:
alert tcp $EXTERNAL_NET 27374->$HOME_NET any(msg:”BACKDOOR SubSeven 22”; flag:A+;content:”|0d0a5b52504c5d3030320d0a|”; classtype:trojan-activity)
針對rpc.statd溢出攻擊,設(shè)置Snort入侵檢測規(guī)則如下:
alert udp any any -> any 32770:34000 (content:|00 00 00 01|”; distance:4;within:4;byte_jump:4,12,relative, align;byte_test:4,>,900,20,relative; msg:”statd format string buffer overflow”;)
針對校園CampusBug攻擊,設(shè)置Snort入侵檢測規(guī)則如下:
alert tcp $HOM_NET any -> any $HTTP_PORTS(msg:”SOCIAL NET CamPusBug”;flow:established;content:”Host\\:”;pcre:”/(Host\\:)(\\s[a-zA-Z0-9.-]+\\.|\\s)(campusbug.com)\\s\/”;)
針對Robot Co-op攻擊,設(shè)置Snort入侵檢測規(guī)則如下:
alert tcp $HOME_NET any -> any $HTTP_PORTS (msg:”SOCIAL NET-Robot Co-op”;flow:established;content:”Host\\:”;pcre:”/(Host\\:)(\\s[a-zA-Z0-9.-]+\\.|\\s)(43friends.com |43things.com)\\r\/”;)
針對Zorpia攻擊,設(shè)置Snort入侵檢測規(guī)則如下:
alert tcp $HOME_NET any -> any $HTTP_PORTS (msg:”SOCIAL NET-Robot Co-op”;flow:established;content:”Host\\:”;pcre:”/(Host\\:)(\\s[a-zA-Z0-9.-]+\\.|\\s) (zorpia.com)\\r\/”;)
當(dāng)規(guī)則配置好以后,需要把規(guī)則文件保存為后綴名為.rules的文件,并且一定要保存在/snort/rules文件夾目錄中。以上自定義的規(guī)則分別保存的文件名為:Nachi.worm.rules、ICMP_Smurf.rules、Netbios_nimde.rules、UDP_DDoS.rules、SubSeven_Trojan.rules、rpc_statd.rules、CampusBug.rules、Robot.rules、Zorpia.rules。
最后,需要在snort.conf配置文件中引用這些自定義的入侵檢測規(guī)則。
針對其他情況的網(wǎng)絡(luò)攻擊類型可以按照上面的方法,方便地添加到Snort規(guī)則庫中,保持Snort規(guī)則的持續(xù)更新和升級,從而保證校園絡(luò)的安全。
當(dāng)配置完規(guī)則后,就可以重新啟動Snort系統(tǒng)。具體命令如下:
Snort –c d:\\snort\\etc\\snort.conf –l d:\\snort\\log –v –i 2
該命令的具體意思是,使Snort在序號為2的網(wǎng)卡接口啟動,采用位于d:\\snort\\etc\\目錄下的snort.conf配置文件初始化,詳細地記錄并輸出各種報警的數(shù)據(jù),并把入侵檢測的日志記錄寫入位于d:\\snort\\log目錄下。
通過以上的這些過程,一個基于校園網(wǎng)環(huán)境的入侵檢測系統(tǒng)就算是部署完畢了。
3 結(jié)論
這種入侵檢測系統(tǒng)一般都是“旁路”網(wǎng)絡(luò)中,監(jiān)聽并分析著各種經(jīng)過它的網(wǎng)絡(luò)數(shù)據(jù)包,并源源不斷地把警報數(shù)據(jù)記錄在數(shù)據(jù)庫中,同時也生成了一份日志文件,保存在Snort系統(tǒng)中的log目錄中。為網(wǎng)絡(luò)管理員對入侵警報信息進行進一步的分析和響應(yīng)提供了必備的數(shù)據(jù)。
參考文獻:
[1] 宋勁松.網(wǎng)絡(luò)入侵檢測[M].長沙:國防工業(yè)出版社,2004:41-53.
[2] Jack Koziol.Intrusion Detection with Snort,Snort入侵檢測實用解決方案[M].吳溥峰,孫默,許誠,等,譯.北京:機械工業(yè)出版社,2005:59-116.
[3] 李曉芳,姚遠,入侵檢測工具Snort的研究與使用[J].計算機應(yīng)用與軟件,2006(2):123-141.
[4] Caswell B,Beale J,F(xiàn)oster J C.Snort2.0入侵檢測[M].宋勁松,譯.北京:國防工業(yè)出版社,2004:21-45.
[5] Joel scambray,stuart McClure,George Kurtz.黑客大曝光匯[M].鐘向群,譯.北京:清華大學(xué)出版社.2002:146-186.