基于的入侵檢測系統(tǒng)樣本_第1頁
基于的入侵檢測系統(tǒng)樣本_第2頁
基于的入侵檢測系統(tǒng)樣本_第3頁
基于的入侵檢測系統(tǒng)樣本_第4頁
基于的入侵檢測系統(tǒng)樣本_第5頁
已閱讀5頁,還剩105頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

資料內(nèi)容僅供您學(xué)習(xí)參考,如有不當(dāng)之處,請聯(lián)系改正或者刪除?;赟nort的入侵檢測系統(tǒng)用Snort,Apache,MySQL,PHP及ACID構(gòu)建高級IDS

入侵檢測系統(tǒng)及Snort介紹在當(dāng)今的企業(yè)應(yīng)用環(huán)境中,安全是所有網(wǎng)絡(luò)面臨的大問題。黑客和入侵者已成功的入侵了一些大公司的網(wǎng)絡(luò)及網(wǎng)站。當(dāng)前已經(jīng)存在一些保護(hù)網(wǎng)絡(luò)架構(gòu)及通信安全的方法,例如防火墻、虛擬專用網(wǎng)(VPN)、數(shù)據(jù)加密等。入侵檢測是最近幾年出現(xiàn)的相對較新的網(wǎng)絡(luò)安全技術(shù)。利用入侵檢測技術(shù),我們能夠從已知的攻擊類型中發(fā)現(xiàn)是否有人正在試圖攻擊你的網(wǎng)絡(luò)或者主機(jī)。利用入侵監(jiān)測系統(tǒng)收集的信息,我們能夠加固自己的系統(tǒng),及用作其它合法用途。當(dāng)前市場中也有很多弱點(diǎn)檢測工具,包括商品化的和開放源碼形式的,能夠用來評估網(wǎng)絡(luò)中存在的不同類型的安全漏洞。一個(gè)全面的安全系統(tǒng)包括很多種工具:防火墻:用來阻止進(jìn)入及走出網(wǎng)絡(luò)的信息流。防火墻在商業(yè)化產(chǎn)品和開放源碼產(chǎn)品中都有很多。最著名的商業(yè)化防火墻產(chǎn)品有Checkpoint(),Cisco()及Netscreen()。最著名的開放源碼防火墻是Netfilter/Iptables()。入侵檢測系統(tǒng)(IDS):用來發(fā)現(xiàn)是否有人正在侵入或者試圖侵入你的網(wǎng)絡(luò)。最著名的IDS是Snort,能夠在下載。弱點(diǎn)評估工具:用來發(fā)現(xiàn)并堵住網(wǎng)絡(luò)中的安全漏洞。弱點(diǎn)評估工具收集的信息能夠指導(dǎo)我們設(shè)置恰當(dāng)?shù)姆阑饓σ?guī)則,以擋住惡意的互聯(lián)網(wǎng)用戶?,F(xiàn)在有許多弱點(diǎn)評估工具,比如Nmap()和Nessus().以上這些工具能夠配合使用,交互信息。一些產(chǎn)品將這些功能捆綁在一起,形成一個(gè)完整的系統(tǒng)。Snort是一個(gè)開放源碼的網(wǎng)絡(luò)入侵檢測系統(tǒng)(NIDS),能夠免費(fèi)得到。NIDS是用來檢測網(wǎng)絡(luò)上的信息流的入侵檢測系統(tǒng)(IDS)。IDS也包括安裝在特定的主機(jī)上并檢測攻擊目標(biāo)是主機(jī)的行為的系統(tǒng)。IDS迄今為止還是一門相當(dāng)新的技術(shù),而Snort在IDS中處于領(lǐng)先的地位。 本書由入侵檢測介紹及相關(guān)概念入手,你將學(xué)習(xí)如何安裝及管理Snort以及與Snort協(xié)同工作的其它產(chǎn)品。這些產(chǎn)品包括MySQL數(shù)據(jù)庫()、入侵?jǐn)?shù)據(jù)庫分析管理工具ACID()。Snort能夠?qū)⑷罩緮?shù)據(jù)(例如告警和其它日志消息)記錄到數(shù)據(jù)庫中。MySQL用作存儲所有這些數(shù)據(jù)的數(shù)據(jù)庫引擎。利用ACID及Apache()Web服務(wù)器,我們能夠分析這些數(shù)據(jù)。Snort、Apache、MySQL及ACID的共同協(xié)作,使我們能夠?qū)⑷肭謾z測數(shù)據(jù)記錄到數(shù)據(jù)庫,然后用web界面察看和分析這些數(shù)據(jù)。 此書的組織結(jié)構(gòu)使讀者能夠跟著隨后的章節(jié)一步一步的建立一個(gè)完整的入侵檢測系統(tǒng)。安裝及整合各種工具的步驟將在如下的章節(jié)逐步介紹: 第二章將介紹編譯及安裝Snort的基本知識。在這一章中,你將能夠用基本安裝及默認(rèn)規(guī)則建立一個(gè)能夠工作的IDS,同時(shí)能夠建立能夠記錄入侵活動(dòng)的日志文件。 第三章介紹Snort規(guī)則的有關(guān)知識,Snort規(guī)則的組成及如何根據(jù)你的系統(tǒng)環(huán)境及需要建立自己的規(guī)則。建立良好的規(guī)則是構(gòu)建入侵檢測系統(tǒng)的關(guān)鍵,因此本章非常重要。本章同時(shí)也介紹Snort不同版本間規(guī)則的不同。 第四章介紹input及output插件。插件與Snort一同編譯,并用來調(diào)整檢測引擎的輸入和輸出部分。Input插件用在實(shí)際檢測過程發(fā)生前準(zhǔn)備好捕獲的數(shù)據(jù)包。Output插件用來將數(shù)據(jù)數(shù)據(jù)格式化,以用于特定的目的,例如一種output插件能夠?qū)⑤敵龅臋z測信息轉(zhuǎn)換成SNMPtrap信息,而另外一種output插件能夠?qū)⑿畔⑥D(zhuǎn)換成數(shù)據(jù)庫信息。這一章將詳細(xì)介紹如何配置及使用這些插件。 第五章介紹MySQL數(shù)據(jù)庫與Snort的共同工作。MySQL插件使Snort能夠?qū)⑷罩緮?shù)據(jù)記錄到數(shù)據(jù)庫以便隨后的分析。在這一章中,你將了解如何在MySQL中建立數(shù)據(jù)庫,如何配置數(shù)據(jù)庫插件,以及將日志數(shù)據(jù)記錄到數(shù)據(jù)庫中。 第六章介紹ACID,以及如何用ACID取得你在第五章建立的數(shù)據(jù)庫中的信息,并用Apache服務(wù)器顯示它。ACID一種提供豐富的數(shù)據(jù)分析能力的重要工具,你能夠用它來取得攻擊頻率、攻擊類別、察看這些攻擊方法的相關(guān)資源等等。ACID用PHP腳本語言、圖形顯示庫(GDlibrary)和PHPLOT(一種用來繪制圖表的工具)來工作,能夠分析SQL中的數(shù)據(jù)并繪制圖表。 第七章主要介紹能夠和Snort一起工作的其它一些有用的工具。 在讀完此書后,你將建立一個(gè)完整的,具有多個(gè)組件的系統(tǒng),如圖1-1所示。 在圖中你能夠看到,Snort捕獲并分析數(shù)據(jù),然后用output插件將數(shù)據(jù)儲存在MySQL數(shù)據(jù)庫中。Apache服務(wù)器在ACID,PHP、GDlibrary及PHP包的幫助下使連接到服務(wù)器的用戶能夠經(jīng)過瀏覽器顯示數(shù)據(jù)。用戶能夠在網(wǎng)頁上應(yīng)用不同的查詢來分析、備份、刪除數(shù)據(jù)或者顯示圖表。 基本上,你能夠?qū)nort、MySQL、Apache、PHP、ACID、GD庫以及ACID都安裝到一臺計(jì)算機(jī)上,而實(shí)際上在讀完本書后,你能夠建立一個(gè)類似于如圖1-2所示得更加貼近實(shí)際應(yīng)用的系統(tǒng)。 在企業(yè)中,人們一般使用多個(gè)Snort探測器,在每個(gè)路由器或者防火墻后面都放置探測器。在這種情況下,你能夠用一個(gè)集中的數(shù)據(jù)庫來收集所有探測器的信息,并在這個(gè)數(shù)據(jù)庫服務(wù)器上運(yùn)行ApacheWeb服務(wù)器,如圖1-3所示。1什么是入侵檢測?入侵檢測是指用來檢測針對網(wǎng)絡(luò)及主機(jī)的可疑活動(dòng)的一系列技術(shù)和方法。入侵檢測系統(tǒng)基本能夠分為兩大類:基于特征的入侵檢測系統(tǒng)和異常行為檢測系統(tǒng)。入侵者常具有用軟件能夠檢測到的特征,如病毒。入侵檢測系統(tǒng)將檢測包含已知入侵行為特征或者異常于IP協(xié)議的數(shù)據(jù)包?;谝幌盗械奶卣骷耙?guī)則,入侵檢測系統(tǒng)能夠發(fā)現(xiàn)并記錄可疑行為并產(chǎn)生告警?;诋惓5娜肭謾z測系統(tǒng)一般是分析數(shù)據(jù)包中協(xié)議頭部的異常,在某些情況下這種方式要比基于特征的入侵檢測系統(tǒng)要更好一些。一般情況下,入侵檢測系統(tǒng)在網(wǎng)絡(luò)上捕獲數(shù)據(jù)包與規(guī)則比對或者檢測其中的異常。Snort基本上是一個(gè)基于規(guī)則的IDS,可是input插件能夠分析協(xié)議頭部異常。 Snort的規(guī)則存儲在文本文件中,并能夠用文本編輯器修改。規(guī)則以類別分組。不同類別的規(guī)則存儲在不同的文件中。最后,這些文件被一個(gè)叫做snort.conf的主配置文件引用。Snort在啟動(dòng)時(shí)讀取這些規(guī)則,并建立內(nèi)部數(shù)據(jù)結(jié)構(gòu)或鏈表以用這些規(guī)則來捕獲數(shù)據(jù)。發(fā)現(xiàn)入侵特征并利用規(guī)則捕獲它們是一項(xiàng)具有技巧性的工作,因?yàn)樵趯?shí)時(shí)檢測中你應(yīng)用越多的規(guī)則,那么你將需要越多的處理能力,因此用盡量少的規(guī)則來捕獲盡量多的特征是非常重要的。Snort已經(jīng)預(yù)先定義了許多入侵檢測規(guī)則,而且你能夠自由添加自定義的規(guī)則。同時(shí),你也能夠移除一些內(nèi)建規(guī)則以防止錯(cuò)誤告警。1.1.1一些定義 在詳細(xì)了解入侵檢測及Snort之前,你需要了解一些網(wǎng)絡(luò)安全相關(guān)的定義,這些定義將在這本書的隨后章節(jié)中重復(fù)應(yīng)用。對這些名詞的基本了解對于理解其它更加復(fù)雜的安全概念是非常必要的。IDS入侵檢測系統(tǒng)或IDS是一種用來檢測入侵行為的軟件、硬件或者兩者的結(jié)合。Snort是大眾能夠獲得的開放源碼的IDS。IDS的實(shí)際能力依賴于組件的復(fù)雜度及精巧性。實(shí)體的IDS是硬件和軟件的結(jié)合,很多公司能夠提供及決方案。如前面提到的,IDS能夠采用特征分析技術(shù)、異常檢測技術(shù),或者兩者同時(shí)應(yīng)用。 1.1.1.2網(wǎng)絡(luò)IDS或NIDS NIDS是用來捕獲在網(wǎng)絡(luò)介質(zhì)上傳播的數(shù)據(jù)并與特征數(shù)據(jù)庫比正確入侵檢測系統(tǒng)。跟據(jù)數(shù)據(jù)包與特征數(shù)據(jù)庫的匹配情況,IDS產(chǎn)生告警或者將日志記錄到文件或數(shù)據(jù)庫中。Snort主要是作為NIDS來使用的。1.1.1.3主機(jī)IDS或HIDS 面向主機(jī)的入侵檢測系統(tǒng)或稱HIDS作為一個(gè)代理安裝在一臺主機(jī)上,這種入侵檢測系統(tǒng)能夠分析系統(tǒng)及應(yīng)用程序日志來檢測入侵行為。其中一些HIDS是被動(dòng)狀態(tài)的,只有當(dāng)某些事情發(fā)生了才會通知你,另外一些是主動(dòng)狀態(tài)的,能夠嗅探網(wǎng)絡(luò)中針對某一主機(jī)的通信狀況并實(shí)時(shí)產(chǎn)生告警。1.1.1.4特征 特征是數(shù)據(jù)包中包含信息的特點(diǎn)。特征用來檢測一種或多種攻擊行為。例如,目標(biāo)是你的web服務(wù)的包中如果出現(xiàn)”scripts/iisadmin”,可能意味著一個(gè)入侵嘗試。 根據(jù)攻擊行為本質(zhì)的不同,特征數(shù)據(jù)可能會出現(xiàn)在數(shù)據(jù)包中的不同位置。例如,你可能會在IP包頭、傳輸層頭(TCP或UDP頭)及/或應(yīng)用層頭或載荷中發(fā)現(xiàn)攻擊特征。你將在本書的后面更多的了解攻擊特征。 一般IDS依靠特征來發(fā)現(xiàn)入侵行為。在發(fā)現(xiàn)新的入侵特征時(shí),某些商業(yè)化的IDS需要從廠商那里得到更新的特征庫。另外一些IDS,比如Snort,你能夠自己更新特征庫。 1.1.1.5告警 告警是任何一種對入侵行為的通知。當(dāng)IDS檢測到入侵者,它將用告警來通知安全管理員。告警的形式能夠使彈出窗口、終端顯示及發(fā)送e-mail等等。告警同時(shí)也被存儲到日志文件或者數(shù)據(jù)庫中,以便供安全專家察看。在本書的后面,你將得到關(guān)于告警的詳細(xì)信息。 Snort的告警由output插件控制,并能夠產(chǎn)生多種形式的報(bào)警。Snort也能夠?qū)⑼粋€(gè)告警發(fā)送到不同的目標(biāo),例如,將告警發(fā)送到數(shù)據(jù)庫的同時(shí),產(chǎn)生SNMPtrap信息。一些插件能夠修改防火墻配置,使入侵者在防火墻或者路由器上被控制。1.1.1.6日志 日志信息一般存放在文件中。默認(rèn)情況下,Snort將這些信息存放在/var/log/snort目錄下,可是也能夠在啟動(dòng)Snort時(shí)用命令行開關(guān)來改變這個(gè)目錄。日志信息能夠存儲為文本格式或者二進(jìn)制格式,二進(jìn)制格式的文件能夠供Snort或者Tcpdump隨后訪問,現(xiàn)在也有一個(gè)叫做Barnyard的新工具能夠分析Snort產(chǎn)生的二進(jìn)制日志文件。將日志存放為二進(jìn)制文件能夠有更高的效率,因?yàn)檫@種格式開銷相對較低。將Snort應(yīng)用在高速網(wǎng)絡(luò)環(huán)境中,將日志存放為二進(jìn)制文件是非常必要的。1.1.1.7誤告警 誤告警是錯(cuò)誤的將非入侵行為報(bào)告為入侵行為的告警。例如,內(nèi)部主機(jī)的錯(cuò)誤配置有時(shí)會產(chǎn)生觸發(fā)規(guī)則,從而產(chǎn)生誤告警。某些路由器,例如Linksys家用路由器,會產(chǎn)生一些信息,導(dǎo)致UpnP相關(guān)的告警。為了避免誤告警,你要修改和調(diào)試默認(rèn)規(guī)則,在某些情況下,你可能需要停止一些規(guī)則的使用,以避免誤告警。1.1.1.8探測器 運(yùn)行入侵檢測系統(tǒng)的機(jī)器也叫做探測器,因?yàn)樗脕怼碧綔y”網(wǎng)絡(luò)中的活動(dòng)。在本書的后面部分,如果用到探測器這個(gè)詞,那么它是指運(yùn)行Snort的計(jì)算機(jī)或者其它設(shè)備。IDS應(yīng)該放在網(wǎng)絡(luò)中的什么位置?根據(jù)你的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的不同,你應(yīng)該在一個(gè)或多個(gè)位置放置IDS。IDS放置的位置也要取決于你想檢測的入侵行為的種類:內(nèi)部入侵、外部入侵,或者兩個(gè)都要檢測。例如,如果你想僅僅檢測外部入侵活動(dòng),而且你只有一個(gè)路由器接到Internet,那么放置IDS的最佳位置可能緊靠著路由器或者防火墻的內(nèi)部網(wǎng)絡(luò)接口。如果你有多條接入Internet的借口,可能你希望在每個(gè)入口處放置一臺IDS。有時(shí)你也希望能夠檢測來自內(nèi)部的威脅,那么能夠在每個(gè)網(wǎng)段都放置一臺IDS。在很多情況下,你并不需要在所有網(wǎng)段都實(shí)施入侵檢測,你能夠僅僅在敏感區(qū)域放置IDS。要知道,越多的IDS就意味著越多的工作量和維護(hù)費(fèi)用。因此IDS的部署要取決于你的安全策略,也就是你想防范什么樣的入侵。圖1-4表示一般放置IDS的典型位置。正如你在圖1-4中看到的那樣,一般你應(yīng)該在每個(gè)路由器和防火墻的后面放置IDS,在你的網(wǎng)絡(luò)中包含非軍事化區(qū)(DMZ)的情況下,在DMZ中也能夠放置IDS。要注意的是,DMZ中的IDS告警策略不應(yīng)像專用網(wǎng)絡(luò)中那樣嚴(yán)格。1.1.3蜜罐(HoneyPots) 蜜罐是一種以故意暴露已知弱點(diǎn)來愚弄黑客的系統(tǒng)。當(dāng)黑客發(fā)現(xiàn)蜜罐時(shí),一般會在它上面耗費(fèi)一些時(shí)間,在此期間,你能夠記錄黑客的行為,從中找出黑客的活動(dòng)情況和所使用的技術(shù)。一旦你了解了這些技術(shù),你能夠利用你得到的信息來加固你真正的服務(wù)器。 現(xiàn)在有很多種構(gòu)建和放置蜜罐的方法。在蜜罐上應(yīng)該運(yùn)行一些公開的服務(wù),這些服務(wù)包括Telnet服務(wù)(端口23),HTTP服務(wù)(端口80),FTP服務(wù)(端口21)等等。你應(yīng)該將蜜罐放在你緊靠你應(yīng)用服務(wù)器的某個(gè)位置,這樣黑客容易錯(cuò)誤的將蜜罐當(dāng)成真正的應(yīng)用服務(wù)器。例如,如果你的應(yīng)用服務(wù)器的IP地址勢1和3,那么你能夠?qū)⒛愕拿酃薜腎P地址設(shè)為2,同時(shí)設(shè)置你的防火墻和路由器,使黑客對服務(wù)器某些端口的訪問重定向到蜜罐上面,那么入侵者就會把蜜罐當(dāng)成是真正的服務(wù)器。你應(yīng)當(dāng)仔細(xì)的考慮告警產(chǎn)生機(jī)制,以使你的蜜罐受到威脅的時(shí)候能夠馬上得到信息。將日志存放在其它機(jī)器上是個(gè)好主意,這樣即使黑客侵入了蜜罐,也無法刪除日志文件。 那么什么時(shí)候你應(yīng)該安裝蜜罐呢?那要根據(jù)你的情況來決定:如果你的機(jī)構(gòu)有足夠的資源用來追蹤黑客,那么你應(yīng)該建立一個(gè)蜜罐。所謂資源包括硬件以及人力。如果你沒有足夠的資源,那么安置蜜罐就沒有什么必要,要知道獲取你不會用到的信息是沒有什么意義的。僅僅當(dāng)你能夠以某種方式來用蜜罐取得的信息的時(shí)候,蜜罐才是有用的。如果你想收集有關(guān)行為的證據(jù)來起訴黑客,那么你也能夠用到蜜罐。理想的情況下,蜜罐應(yīng)該看起來像一個(gè)真實(shí)的系統(tǒng),你能夠制作一些假的數(shù)據(jù)文件,假的賬戶等等,使黑客信以為真,這樣才能使黑客在上面逗留足夠長的時(shí)間,從而你能夠記錄更多的活動(dòng)。 你能夠在蜜罐項(xiàng)目網(wǎng)站,能夠找到一些你感興趣的資料,是你能夠?qū)γ酃抻羞M(jìn)一步的了解。你也能夠去另外一個(gè)蜜罐網(wǎng)站了解她們的開放源碼的密罐的相關(guān)信息。其它一些能夠取得更多信息的地方是:南佛羅里達(dá)蜜罐項(xiàng)目網(wǎng)站:相關(guān)白皮書:1.1.4安全區(qū)域和信任等級 一段時(shí)間以前,人們將網(wǎng)絡(luò)劃分為兩大類區(qū)域:安全區(qū)域和非安全區(qū)域。某些時(shí)候這種劃分也就意味著網(wǎng)絡(luò)是在路由器或防火墻的內(nèi)部或者外部?,F(xiàn)在典型的網(wǎng)絡(luò)一般根據(jù)不同的安全策略等級和信任等級劃分為多個(gè)區(qū)域。例如,公司的財(cái)務(wù)部門擁有非常高的安全等級,在這個(gè)區(qū)域中僅僅允許對少數(shù)服務(wù)的操作,不允許Internet服務(wù);而在DMZ或稱非軍事化區(qū)中,網(wǎng)絡(luò)是向Internet開放的,此區(qū)域的信任等級與財(cái)務(wù)部門迥然不同。 根據(jù)信任等級和安全策略的不同,你應(yīng)該在不同的區(qū)域中應(yīng)用不同的入侵檢測規(guī)則和策略。對安全等級要求不同的網(wǎng)絡(luò)在物理上是分離的。你能夠在對安全要求不同的每個(gè)區(qū)域都安裝一套具有不同規(guī)則的IDS來檢測可疑的網(wǎng)絡(luò)活動(dòng)。例如,在財(cái)務(wù)部門的網(wǎng)絡(luò)中沒有web服務(wù)器,指向80端口的數(shù)據(jù)包將被紀(jì)錄為入侵行為,而這樣的規(guī)則不能用在DMZ中,因?yàn)镈MZ中的web服務(wù)器是對每個(gè)人開放的。IDS策略在你在網(wǎng)絡(luò)中安裝IDS之前,你必須有一個(gè)能夠檢測入侵者并做出相應(yīng)動(dòng)作的策略。一個(gè)策略必須能夠指示一系列的規(guī)則以及這些規(guī)則如何應(yīng)用。IDS策略應(yīng)當(dāng)包含以下的內(nèi)容,而且你能夠根據(jù)你的要求添加更多的內(nèi)容:誰來察看IDS信息?IDS提供給你對入侵行為產(chǎn)生告警信息的機(jī)制。告警系統(tǒng)或者是簡單的文本文件形式,或者更加復(fù)雜,可能集成到類似于HpOpenView這樣的網(wǎng)管軟件或MySQL這樣的數(shù)據(jù)庫中。在你的系統(tǒng)中需要有人負(fù)責(zé)來監(jiān)視入侵行為和制定策略。入侵行為能夠經(jīng)過彈出窗口或web頁面實(shí)時(shí)監(jiān)視。在這種情況下,操作者必須要了解告警的意義所在以及告警信息中事件的安全等級。誰來管理IDS,維護(hù)日志等等?對于所有的系統(tǒng),都需要建立一個(gè)日常維護(hù)體制,IDS也一樣。誰來處理安全事件?如果沒有安全事件處理機(jī)制,也就根本沒有必要安裝IDS。根據(jù)安全事件的安全等級的需要,某些情況可能需要政府機(jī)構(gòu)的介入。事件處理程序是什么樣的?策略應(yīng)當(dāng)規(guī)定一些事件響應(yīng)機(jī)制,根據(jù)涉及安全等級的高低向不同的管理層匯報(bào)。例行報(bào)告:總結(jié)前一天、上一周、或者上一個(gè)月所發(fā)生的相關(guān)事情。特征庫的升級:黑客總是不斷的創(chuàng)造新的攻擊方法。如果IDS了解攻擊的特征,就能夠檢測到攻擊。Snort規(guī)則用攻擊特征庫來檢測攻擊。因?yàn)楣舻奶卣鹘?jīng)常在改變,你也必須為你的IDS規(guī)則更新特征庫。你能夠定期直接在Snort網(wǎng)站上取得特征庫的更新,也能夠在一種新的攻擊方式被發(fā)現(xiàn)時(shí)自己更新。每個(gè)項(xiàng)目都需要文檔系統(tǒng)。IDS策略應(yīng)當(dāng)描述當(dāng)攻擊被檢測到時(shí)應(yīng)當(dāng)記錄什么樣的文檔。文檔能夠包括簡單的日志或者對入侵行為的完整紀(jì)錄。你也能夠采用多種方式來記錄數(shù)據(jù)。例行報(bào)告也屬于文檔的組成部分。基于你的IDS策略,你能夠清楚的知道你的網(wǎng)絡(luò)到底需要多少IDS探測器和其它資源,更精確的計(jì)算IDS的成本和費(fèi)用。Snort的部件Snort在邏輯上能夠分成多個(gè)部件,這些部件共同工作,來檢測特定的功績,并產(chǎn)生符合特定要求的輸出格式。一個(gè)基于Snort的IDS包含下面的主要部件:包解碼器預(yù)處理器探測引擎日志和告警系統(tǒng)輸出模塊圖1-5顯示了這些部件的關(guān)系。任何來自Internet的包到了包解碼器,然后被送到輸出模塊,在這里或者被丟棄,或者產(chǎn)生日志或告警。 在這個(gè)部分中,我們將簡要介紹這些部件。在你通讀這本書并建立一些規(guī)則后,你將對這些部件以及它們之間怎樣相互作用更加熟悉。1.3.1包解碼器 包解碼器從不同的網(wǎng)絡(luò)接口中獲取包并準(zhǔn)備預(yù)處理或者送到探測引擎。網(wǎng)絡(luò)接口可能是以太網(wǎng)、SLIP、PPP等等。1.3.2預(yù)處理器 預(yù)處理器是Snort在探測引擎做出一些操作來發(fā)現(xiàn)數(shù)據(jù)包是否用來入侵之前排列或者修改數(shù)據(jù)包的組件或者插件。一些預(yù)處理器也能夠經(jīng)過發(fā)現(xiàn)數(shù)據(jù)包頭部異常來執(zhí)行一些探測工作,并產(chǎn)生告警。預(yù)處理器的工作對于任何IDS的探測引擎依據(jù)規(guī)則分析數(shù)據(jù)都是非常重要的。黑客有很多愚弄IDS的技術(shù)。比如,你建立這樣一條規(guī)則,用來在HTTP包中發(fā)現(xiàn)包含”scripts/iisadmin”的入侵特征,如果你將字符匹配過于嚴(yán)格的限制,那么黑客只需要做一些細(xì)小的變通,就能很輕易的耍弄你。例如: ”scripts/./iisadmin” ”scripts/examples/../iisadmin” ”scripts/.\iisadmin” 為了使問題復(fù)雜化,黑客也會在字符中嵌入16位URI字符或者Unicode字符,這對web服務(wù)器來說是同樣合法的,要注意web服務(wù)器能夠理解所有這些字符,并將它們處理成為類似于”scripts/iisadmin”這樣的字符。如果IDS嚴(yán)格匹配某一字符串,就可能不會探測到這種類型的攻擊。預(yù)處理器能夠?qū)⒆址匦屡帕?以使IDS能夠探測得到。 預(yù)處理器也或來包分片的組裝。當(dāng)一個(gè)大的數(shù)據(jù)流傳向主機(jī)的時(shí)候,一般數(shù)據(jù)包會被分割。例如,以太網(wǎng)中默認(rèn)的最大數(shù)據(jù)包大小是1500字節(jié),這個(gè)數(shù)值由網(wǎng)絡(luò)接口的MTU(MaximusTransferUnit)值來確定。這就意味著如果你發(fā)送的數(shù)據(jù)如果大于1500字節(jié),它將會被分割成多個(gè)數(shù)據(jù)包,以使每個(gè)數(shù)據(jù)包的大小都小于或等于1500字節(jié)。接收方系統(tǒng)能夠?qū)⑦@些小的分片重新組裝,還原成原始的數(shù)據(jù)包。在IDS上,在能夠?qū)?shù)據(jù)包進(jìn)行特征分析之前,也需要重新組裝數(shù)據(jù)包。例如,可能入侵特征的一般在一個(gè)數(shù)據(jù)包分片上,而另外一半在別的分片上面。為了使探測引擎能夠準(zhǔn)確的分析特征,就需要組裝所有的分片。黑客也用數(shù)據(jù)分片來對抗入侵檢測系統(tǒng)。 預(yù)處理器用來對抗這些攻擊。Snort的預(yù)處理器能夠組裝數(shù)據(jù)分片,解碼HTTPURI,重新組裝TCP流等等。這些功能是IDS中非常重要的部分。1.3.3探測引擎 探測引擎是Snort中最重要的部分,它的作用是探測數(shù)據(jù)包中是否包含著入侵行為。探測引擎經(jīng)過Snort規(guī)則來達(dá)到目的。規(guī)則被讀入到內(nèi)部的數(shù)據(jù)結(jié)構(gòu)或者鏈表中,并與所有的數(shù)據(jù)包比對。如果一個(gè)數(shù)據(jù)包與某一規(guī)則匹配,就會有相應(yīng)的動(dòng)作(記錄日志或告警等)產(chǎn)生,否則數(shù)據(jù)包就會被丟棄。探測引擎是Snort中時(shí)間相關(guān)的組件,根據(jù)你的機(jī)器的處理能力和你所定義的規(guī)則的多少,探測引擎會消耗不同的時(shí)間來對不同的數(shù)據(jù)包做出響應(yīng)。在Snort工作在NIDS模式的時(shí)候,如果網(wǎng)絡(luò)中數(shù)據(jù)流量過大,有時(shí)可能會因?yàn)閬聿患绊憫?yīng)而丟棄一些包。探測引擎的負(fù)載取決于以下因素:規(guī)則的數(shù)量運(yùn)行Snort的機(jī)器的處理能力運(yùn)行Snort的機(jī)器的內(nèi)部總線速度網(wǎng)絡(luò)的負(fù)載當(dāng)你在設(shè)計(jì)NIDS的時(shí)候,你應(yīng)該考慮所有的相關(guān)因素。你需要了解探測系統(tǒng)能夠剖析數(shù)據(jù)包并把規(guī)則應(yīng)用在高的不同部分,這些部分可能是:包的IP頭包的傳輸層頭,包括TCP、UDP或其它傳輸層協(xié)議頭,也能夠是ICMP頭。應(yīng)用層頭。應(yīng)用層頭包括DNS頭,FTP頭,SNMP頭,SMTP頭等等還有很多。有時(shí)你能夠用一些間接的方法來獲得應(yīng)用頭信息,比如位偏移等等。包載荷。這意味著你能夠建立這樣一種規(guī)則,用探測引擎來尋找傳輸?shù)臄?shù)據(jù)中的字符。在不同版本的Snort中,探測引擎由不同的工作方式。在所有1.x版的Snort中,一旦探測引擎將數(shù)據(jù)包匹配到某個(gè)規(guī)則的時(shí)候,就會停止進(jìn)一步的過程,然后根據(jù)規(guī)則產(chǎn)生告警或者記錄日志,這就意味著即使如果包匹配多條規(guī)則,僅僅第一個(gè)規(guī)則被應(yīng)用,并不再進(jìn)行其它的匹配,這樣做有好處,可是除了下面的情況:如果包匹配的第一個(gè)規(guī)則是低優(yōu)先級的,就只產(chǎn)生低優(yōu)先級的告警,即使這個(gè)包也匹配高優(yōu)先級的后面其它規(guī)則。這個(gè)問題在第二版的Snort中得到了修正:包先對所有的規(guī)則進(jìn)行匹配,然后再產(chǎn)生告警,在對所有的規(guī)則進(jìn)行匹配之后,選擇最高優(yōu)先級的規(guī)則告警。第2版Snort的探測引擎是完全重寫的,從而比先前版本的快了許多。在寫這本書的時(shí)候,Snort2.0還沒有開始發(fā)行,早些時(shí)候的測試顯示新的引擎比老的引擎要快將近18倍。1.3.4日志和告警系統(tǒng) 依據(jù)在包中所找到的東西,一個(gè)包能夠用來記錄行為或者產(chǎn)生告警。日志能夠存為簡單的文本文件、tcpdump格式文件或者其它的形式。在默認(rèn)情況下,所有的日志文件都存放在/var/log/snort目錄中。你能夠在命令行中用-l選項(xiàng)來修改日志和告警存放的位置。更多的命令行選項(xiàng)將在下一章中討論。這些選項(xiàng)能夠用來修改日志和告警的類型和細(xì)節(jié)等等。1.3.5輸出模塊 輸出模塊或插件能夠根據(jù)你指定的保存日志和告警系統(tǒng)產(chǎn)生的輸出信息的方式來執(zhí)行不同的動(dòng)作。基本上這些模塊用來控制日志和告警系統(tǒng)產(chǎn)生的輸出信息的格式。根據(jù)配置,輸出模塊能夠做下列事情:簡單的在/var/log/snort/alerts文件或其它文件中記錄日志發(fā)送SNMPtrap將日志記錄到類似于MySQL或Oracle的數(shù)據(jù)庫中。你將在這本書的后面了解更多的關(guān)于使用MySQL的信息產(chǎn)生XML輸出修改路由其或者防火墻的配置向Windows主機(jī)發(fā)送SMB消息其它一些工具能夠用來發(fā)送如e-mail信息或者web頁面瀏覽等格式的告警,在后面的章節(jié)中你將了解更多的信息。表1-1是IDS各種部件的匯總。表1-1IDS的部件名稱描述包解碼器為處理過程準(zhǔn)備包預(yù)處理器或輸入插件分析協(xié)議頭部,規(guī)格化頭部,探測頭部異常,包分片組裝,TCP流組裝探測引擎將包與規(guī)則比對日志和告警系統(tǒng)產(chǎn)生告警和日志輸出模塊將告警和日志輸出到最終目標(biāo)1.4關(guān)于交換機(jī)根據(jù)你用的交換機(jī)的不同,你會有多種方式將Snort的機(jī)器安裝在交換機(jī)端口上。一些交換機(jī),比如CISCO,允許你復(fù)制所有的通信到你連接Snort機(jī)器的那個(gè)端口上,這樣的端口一般指的是Spanning端口。安裝Snort的最佳位置是直接連到路由其或者防火墻后面,這樣Snort能夠在數(shù)據(jù)進(jìn)入交換機(jī)或HUB之前捕獲所有的Internet數(shù)據(jù)流。例如,你的防火墻有連接Internet的T1線路,并用交換機(jī)連接內(nèi)部網(wǎng)絡(luò),典型的連接方案如圖1-6所示:如果你的交換機(jī)有Spanning端口,你能夠像圖1-7所示的那樣將IDS及器連接到spanning端口上,這樣IDS能夠看到所有的與Internet的通信以及內(nèi)部通信。你也能夠?qū)DS連接到防火墻與交換之間的HUB上,這樣所有的進(jìn)入和流出的通信對于IDS也是可見的,此方案如圖1-8所示。可是要注意,如果IDS按圖1-8安置,那么IDS將不能得到內(nèi)部通信的數(shù)據(jù)包,只能來見與Internet之間的通信。這種方案對于內(nèi)部網(wǎng)絡(luò)是可信的,而預(yù)想的攻擊來自外部是非常有用的。1.5跟蹤TCP數(shù)據(jù)流Snort新增加了一種叫做Stream4的預(yù)處理器,這種預(yù)處理器能夠同時(shí)處理數(shù)千并發(fā)的數(shù)據(jù)流。關(guān)于它的配置將在第四章中討論。它能夠重新組裝TCP數(shù)據(jù)流,并進(jìn)行狀態(tài)檢測。這就意味著你能夠組裝一個(gè)特定的TCP會話,并從利用多個(gè)TCP包進(jìn)行攻擊的方式中找出異常。你也能夠查找流向或(和)流出某個(gè)服務(wù)器端口的數(shù)據(jù)包。1.6Snort支持的平臺 Snort支持多種硬件平臺和操作系統(tǒng)。當(dāng)前Snort支持下列操作系統(tǒng):?Linux?OpenBSD?NetBSD?Solaris(Sparc或者i386)?HP-UX?AIX?IRIX?MacOS?Windows你能夠到Snort的網(wǎng)站查詢Snort當(dāng)前支持的平臺的列表。1.7如何保護(hù)IDS自身 有一個(gè)關(guān)鍵問題是,如何保護(hù)運(yùn)行IDS的系統(tǒng)?如果IDS本身的安全受到了威脅,你收到的告警可能是錯(cuò)誤的,可能就根本收不到告警。入侵者可能會在做出實(shí)際的攻擊之間先讓IDS失效。有許多方式來保護(hù)你的系統(tǒng),從通用的建議到一些復(fù)雜的方法,下面會提到一些方法:首先你能夠做的事情是不要再你運(yùn)行IDS探測器的機(jī)器上運(yùn)行任何服務(wù)。網(wǎng)絡(luò)服務(wù)是用來探尋系統(tǒng)最普遍的方式。新的威脅出現(xiàn)后,廠商會發(fā)布相應(yīng)的補(bǔ)丁,只是一個(gè)連續(xù)不斷,永無休止的過程。你的IDS應(yīng)該安裝從廠商那里得到的最新的補(bǔ)丁。比如,如果你的Snort在Window機(jī)器上運(yùn)行,你應(yīng)該安裝所有微軟發(fā)布的最新的安全補(bǔ)丁。配置你的IDS機(jī)器,使其不會對ping(ICMPecho)做出回應(yīng)。如果你在Linux機(jī)器上運(yùn)行IDS,請用netfileter/iptables來阻止任何不必要的數(shù)據(jù),這時(shí)Snort依然能夠看到所有的數(shù)據(jù)包。如果你的IDS機(jī)器僅僅用來做入侵檢測,那么除非完全有必要,不要在上面進(jìn)行任何其它的活動(dòng)以及設(shè)立其它用戶賬號。除了這些一般的方法之外,Snort也能夠在一些特殊方法下應(yīng)用。下面有兩種特別的技術(shù)來防止Snort遭到攻擊。1.7.1在隱秘端口(StealthInterface)上運(yùn)行Snort你能夠在隱秘端口上運(yùn)行Snort,這種端口僅僅監(jiān)聽進(jìn)入數(shù)據(jù)包而不向外部發(fā)送任何的數(shù)據(jù)包。在隱秘端口上我們用一種特殊的電纜,在你運(yùn)行Snort的主機(jī)上,將端口的1針和2針短路,3針和6針連到對端。你能夠到Snort的FAQ頁面http//.org/docs/faq.html尋找這種方法的更多信息。1.7.2在沒有IP地址的接口上運(yùn)行Snort你也能夠在一個(gè)沒有配置IP地址的接口上運(yùn)行Snort。例如在Linux機(jī)器上,你能夠用”ifconfigeth0up”這樣的命令來激活沒有配置IP地址的接口eth0。這種方法的好處是,因?yàn)镾nort主機(jī)沒有IP地址,因此沒有人能夠訪問它。你能夠在eth1上配置IP地址用來訪問這個(gè)探測器。見圖1-9。 在Windows系統(tǒng)上,你能夠用一個(gè)不綁定TCP/IP協(xié)議的接口,這樣就不會在這個(gè)接口上出現(xiàn)IP地址了。不要忘記同時(shí)也要禁用其它協(xié)議和服務(wù)。在某些情況下,當(dāng)接口不配置IP地址的時(shí)候,你會遇到wincap(Windows用來捕獲包的庫)不可用的提示,如果遇到這樣的情況,你能夠用下面的方法:在你想做隱秘端口的網(wǎng)絡(luò)接口上配置TCP/IP協(xié)議,同時(shí)禁用其它一切協(xié)議和服務(wù)。啟用DHCP客戶端。禁用DHCP服務(wù)器。這樣就會使網(wǎng)絡(luò)接口沒有IP地址,網(wǎng)絡(luò)接口依然能夠綁定TCP/IP協(xié)議。1.8相關(guān)資源1.入侵檢測FAQ:ID_FAQ.htm2.蜜罐項(xiàng)目:3.SnortFAQ:4.Honeyd蜜罐:5.Winpcap:6.Ciscosystems:7.Checkpoint網(wǎng)站:8.Netscreen:9.Netfilter:10.Snort:11.Nmap工具:12.Nessus:13.MySQL數(shù)據(jù)庫:14.ACID:15.Apacheweb服務(wù)器:

安裝Snort并開始初步工作Snort能夠僅僅安裝為守護(hù)進(jìn)程或者一個(gè)包括很多其它工具的完整系統(tǒng)。如果你僅僅安裝Snort,你能夠得到入侵?jǐn)?shù)據(jù)的文本文件或二進(jìn)制文件,然后能夠用文本編輯器或其它類似于Barnyard的工具察看,本書的后面將對此做出描述。在簡單安裝的情況下,你也能夠讓告警信息以SNMPtrap的形式發(fā)送到類似于HPOpenView或者OpenNMS之類的網(wǎng)管系統(tǒng)上。告警信息也能夠以SMB彈出窗口的形式發(fā)送到Windows機(jī)器上。如果你與其它工具一起安裝,你能夠做一些更加復(fù)雜的操作,比如將Snort數(shù)據(jù)發(fā)送到數(shù)據(jù)庫并經(jīng)過Web界面來分析。分析工具能夠讓你對捕獲的數(shù)據(jù)有更加直觀的認(rèn)識,而不用對晦澀的日志文件耗費(fèi)大量時(shí)間。其它一些能夠用到的工具列在下面,它們中的沒有特都有特定的任務(wù)。一個(gè)綜合的Snort系統(tǒng)用這些工具來提供具有后臺數(shù)據(jù)庫Web用戶界面。MySQL用來Snort紀(jì)錄告警日志。也能夠用類似于Oracle的數(shù)據(jù)庫,但在Snort環(huán)境中MySQL更加常見。事實(shí)上,Snort能夠用任何ODBC兼容的數(shù)據(jù)庫。Apache用作web服務(wù)器PHP用作web服務(wù)器和MySQL數(shù)據(jù)庫之間的接口。ACID是用來Web界面來分析Snort數(shù)據(jù)的PHP軟件包。GD庫被ACID用來生成圖表PHPLOT用來在ACID的web界面將數(shù)據(jù)表現(xiàn)為圖表形式。為了是PHPLOT工作,GD庫必須要正確配置。ADODB被ACID用來連接MySQL數(shù)據(jù)庫。2.1Snort安裝方案Snort的安裝方式要取決于運(yùn)行環(huán)境,下面列舉了一些典型的安裝方案以供參考,你能夠根據(jù)你的網(wǎng)絡(luò)情況進(jìn)行選擇。2.1.1測試安裝簡單安裝只包括一個(gè)Snort探測器。Snort將數(shù)據(jù)記錄到文本文件中。日志文件供Snort管理員隨后察看。由于這種方式在實(shí)際應(yīng)用中分析日志的成本比較高因此僅適合測試環(huán)境。要用這種方式安裝Snort,你能夠在取得編譯好的版本。對RedHatLinux來說,你能夠下載RPM包。對Windows系統(tǒng),你能夠下載可執(zhí)行文件安裝到你的系統(tǒng)上。2.1.2安裝單探測器的應(yīng)用IDS單探測器的Snort可應(yīng)用安裝適合只有一條Internet線路的小型網(wǎng)絡(luò)。將探測器放在路由器或者防火墻的后面,以檢測進(jìn)入系統(tǒng)的入侵者。不過要是你對所有的Internet流量感興趣,你也能夠?qū)鞲衅鞣旁诜阑饓Φ耐饷?。在這種安裝方式中,你能夠從Snort網(wǎng)站下載編譯好的版本,也能夠下載源代碼根據(jù)自己的要求編譯,以取得自己需要的特征,這種要求在編譯好的版本中是做不到的。Snort的編譯步驟將在本章詳細(xì)討論。在應(yīng)用系統(tǒng)安裝中,也能夠讓Snort實(shí)現(xiàn)自動(dòng)啟動(dòng)和關(guān)閉,這樣Snort在系統(tǒng)啟動(dòng)是能夠自動(dòng)啟動(dòng)。如果你在Linux中安裝編譯好的版本,RPM包會幫你做到這一點(diǎn)。在Windows系統(tǒng)中,你能夠?qū)nort作為服務(wù)來啟動(dòng)或者放在啟動(dòng)組的批處理文件中。Windows相關(guān)的問題將在第8章涉及。日志將紀(jì)錄為文本文件或者二進(jìn)制文件,并用類似于SnortSnarf的工具分析數(shù)據(jù)。SnortSnarf將在第6章中詳細(xì)討論。2.1.3單探測器與網(wǎng)管系統(tǒng)的整合在應(yīng)用系統(tǒng)中,你能夠?qū)nort配置成向網(wǎng)管系統(tǒng)發(fā)送trap。在企業(yè)應(yīng)用中,有很多種網(wǎng)管系統(tǒng)在應(yīng)用。最常見的商業(yè)網(wǎng)管系統(tǒng)公司有惠普、IBM、ComputerAssociates等。Snort利用SNMPtrap整合到網(wǎng)管系統(tǒng)中。當(dāng)你看完本章的Snort編譯步驟后,就會了解Snort是怎樣提供SNMP能力的。第4章將介紹更多的關(guān)于配置SNMPtrap目標(biāo)、community名稱等更多的信息。 2.1.4帶有數(shù)據(jù)庫和web界面的單探測器 Snort最一般的用法是與數(shù)據(jù)庫的整合。數(shù)據(jù)庫用來記錄日志,并能夠隨后經(jīng)過web界面訪問。這種安裝的典型設(shè)置包含3個(gè)基本的部件: Snort探測器 數(shù)據(jù)庫服務(wù)器 web服務(wù)器 Snort將日志記錄到數(shù)據(jù)庫中,你能夠經(jīng)過連接到它的web瀏覽器察看這些數(shù)據(jù)。這種方案能夠參見第1章的圖1-1。所有3個(gè)部件也能夠安裝在同一個(gè)系統(tǒng)上,如第1章的圖1-2所示。 Snort能夠用不同類型的數(shù)據(jù)庫,如MySQL,PostgresSQL,Oracle,MicrosoftSQLServer和其它ODBC兼容的數(shù)據(jù)庫。PHP用來在數(shù)據(jù)庫中獲取數(shù)據(jù),并產(chǎn)生頁面。 這樣的安裝提供給你一個(gè)易于管理的功能全面的IDS,并具有友好的用戶界面。為了使你能夠用數(shù)據(jù)庫記錄日志,你必須給Snort提供數(shù)據(jù)庫的用戶名稱、密碼、數(shù)據(jù)庫名稱和數(shù)據(jù)庫服務(wù)器的地址。在單探測器方案中,如果數(shù)據(jù)庫服務(wù)器就安裝在運(yùn)行傳感器的機(jī)器上,你能夠用”localhost”作為主機(jī)名。你在編譯Snort時(shí)就要選擇記錄數(shù)據(jù)庫的功能,這一點(diǎn)將在本章的后面詳細(xì)描述。Snort使用數(shù)據(jù)庫的配置將在第4、5、6章討論。2.1.5用集中數(shù)據(jù)庫管理多個(gè)Snort探測器在分布式環(huán)境中,你可能需要在多個(gè)位置安裝Snort探測器。管理所有這些探測器并分別分析它們收集的數(shù)據(jù)是一項(xiàng)艱難的任務(wù)。在企業(yè)應(yīng)用中,有一些方法能夠?qū)nort設(shè)置和安裝成分布式的IDS。其中一種方法是將多個(gè)探測器連接到同一個(gè)中心數(shù)據(jù)庫,如圖1-3所示。所有探測器產(chǎn)生的數(shù)據(jù)都存儲在這個(gè)數(shù)據(jù)庫中。同時(shí)運(yùn)行一個(gè)類似于Apache的web服務(wù)器。然后用戶能夠用web瀏覽器察看這些數(shù)據(jù)并加以分析。但要了解這種配置存在一些實(shí)際問題:所有的探測器在啟動(dòng)Snort的時(shí)候必須能夠訪問到數(shù)據(jù)庫,如果不能,Snort就終止進(jìn)程。數(shù)據(jù)庫必須保證讓探測器所有的時(shí)間都能訪問,否則,數(shù)據(jù)將丟失。如果探測器和數(shù)據(jù)庫服務(wù)器之間有防火墻,你要打開相應(yīng)的端口,有時(shí)這樣做會與防火墻的安全策略不匹配或者違背安全策略。在探測器不能直接訪問數(shù)據(jù)庫服務(wù)器的時(shí)候,有一些變通的方法。探測器能夠配置為將文件存儲在本地,然后用類似于SCP的工具定期將這些文件上傳到中央數(shù)據(jù)庫服務(wù)器。SCP用SSH協(xié)議來進(jìn)行安全文件傳輸?shù)墓ぞ摺7阑饓芾韱T要放行SSH端口的通信。你能夠用Snort本身,Barnyard或其它一些工具從日志文件中提取數(shù)據(jù)并將它們放到數(shù)據(jù)庫中,你能夠在以后用web界面來察看這些數(shù)據(jù)。這種方式的唯一問題是數(shù)據(jù)庫中的數(shù)據(jù)并非嚴(yán)格的”實(shí)時(shí)”數(shù)據(jù)。延遲的大小要看你用SCP上傳數(shù)據(jù)到中心數(shù)據(jù)庫服務(wù)器的頻率。這種方式如圖2-1所示。要注意,中心數(shù)據(jù)庫服務(wù)器必須要運(yùn)行SSH服務(wù)器以能夠用SCP來上傳數(shù)據(jù)。如第一章中提到的那樣,這本書的最終目的是幫助你安裝Snort并讓所有的軟件包能夠協(xié)同工作。當(dāng)你通讀此書后,你將了解這些部件之間是如何相互作用,共同工作形成一個(gè)完整的入侵檢測系統(tǒng)的。本書中涉及的這些軟件都能夠這本書的網(wǎng)站。你也能夠發(fā)現(xiàn)這個(gè)網(wǎng)站上的一些腳本能夠幫助你輕松的在一個(gè)新系統(tǒng)上安裝這些軟件包。事實(shí)上,用這本書提到的這個(gè)網(wǎng)站上的一些腳本,你能夠以root身份用僅僅幾個(gè)命令行就建立一個(gè)可用的IDS。如果你用的Snort的版本比本書涉及的要新,你能夠在。這本書將詳細(xì)介紹這些部件在RedHatLinux7.3機(jī)器上的安裝,可是在其它版本的Linux或者其它平臺上的過程與之類似。為了方便本書介紹,所有的部件都安裝在/opt目錄下面??墒侨绻镁幾g好的軟件包,安裝位置可能有所不同。當(dāng)你用本書上或者從本書的網(wǎng)站取得的腳本,文件將被安裝在這個(gè)目錄下面。在本章中,你將了解如何將Snort作為一個(gè)獨(dú)立的產(chǎn)品安裝,在后面的章節(jié)中,將介紹其它一些部件。你能夠得到二進(jìn)制形式或者源代碼形式的Snort。對于大多數(shù)安裝來說,編譯好的二進(jìn)制軟件包是非常好的。如前面提及的,如果你想為Snort定制一些特性,你需要下載源代碼版的Snort自行編譯。例如,有些人喜歡SMB告警,但另外一些人可能認(rèn)為它們不安全。如果你需要不支持SMB告警的Snort,那么你需要自己編譯它。這對于一些如SNMPtrap、MySQL等其它特性也是一樣的。另外一個(gè)自己編譯Snort理由是你需要了解正在開發(fā)中的代碼。本章將指導(dǎo)你一步一步的安裝Snort。基本的安裝過程是非常簡單的,而且Snort已經(jīng)提供給你包含大多數(shù)已知攻擊特征的預(yù)定義的規(guī)則。當(dāng)然,自定義安裝還是要費(fèi)一些工夫的。2.2安裝Snort 在這一部分,你將了解如何安裝編譯好的Snort和如何自己編譯和安裝。安裝編譯好的RPM包非常簡單,僅需要幾步??墒侨绻愕腟nort是源代碼形式的,是需要一些時(shí)間來了解和安裝的。2.2.1用RPM包安裝Snort 用RPM包安裝Snort包括下面的步驟。 2.2.1.1下載 從Snort的網(wǎng)站()下載最新版的Snort。在寫本書的時(shí)候,最新版的二進(jìn)制文件是snort-1.9.0-1snort.i386.rpm。 2.2.1.2安裝 運(yùn)行下面的命令來安裝Snort的二進(jìn)制文件:rpm--installsnort-1.9.0-1snort.i386.rpm 這個(gè)命令會產(chǎn)生下面的動(dòng)作:創(chuàng)立/etc/snort目錄,其中會存放Snort的規(guī)則文件和配置文件。創(chuàng)立/var/log/snort目錄,Snort的日志文件將會存放在這里。創(chuàng)立/usr/share/doc/snort-1.9.0目錄來存放Snort的文檔文件,在這個(gè)目錄中,你會看到類似于FAQ,README的文件和其它一些文件。在/usr/sbin目錄中創(chuàng)立一個(gè)叫做snort-plain的文件,這是Snort的守護(hù)進(jìn)程。 創(chuàng)立文件/etc/rc.d/init.d/snortd文件,這是啟動(dòng)和關(guān)閉腳本。在RedHatLinux中,它與/etc/init.d/snortd等價(jià)。到這里基本安裝就完成了,你能夠開始使用Snort。這個(gè)版本的Snort并沒有將對數(shù)據(jù)庫的支持編譯進(jìn)去,你只能用/var/log/snort目錄下面的日志文件。2.2.1.3Snort的啟動(dòng),停止和重啟用下面的命令手工啟動(dòng)Snort:/etc/init.d/snortdstart這個(gè)命令將啟動(dòng)Snort守護(hù)進(jìn)程,運(yùn)行”ps–ef”命令,你能夠看到類似于下面的輸出:root159991018:31?00:00:01/usr/sbin/snort-Afast-b-l/var/log/snort-d-D-ieth0-c/etc/snort/snort.conf 注意每次你重啟機(jī)器,你都要手工啟動(dòng)Snort。你能夠經(jīng)過創(chuàng)立文件鏈接的方式讓這個(gè)過程自動(dòng)執(zhí)行,這將在本章的后面討論。 用下面的命令停止Snort: /etc/init.d/snortdstop 用下面的命令重新啟動(dòng)Snort: /etc/init.d/snortdrestart2.2.2用源代碼安裝Snort為了能夠用源代碼安裝Snort,你必須先構(gòu)造它。你能夠用下面介紹的步驟來構(gòu)造出可執(zhí)行文件snort。首先從Snort網(wǎng)站()獲得最新版的Snort。在寫這本書的時(shí)候,最新版的Snort是1.9.0,下載文件的名稱是snort-1.9.0.tar.gz,下載后能夠保存在/opt目錄中。注意在你讀這本書的時(shí)候可能會是更新的版本,安裝方法也類似。2.2.2.1解壓縮下載后第一步要把源代碼解壓縮,用下面的命令來執(zhí)行: tarzxvfsnort-1.9.0.tar.gz這樣會創(chuàng)立/opt/snort-1.9.0目錄。確定你將文件下載到/opt目錄,而且你在這個(gè)目錄運(yùn)行tar命令。如果是其它版本的Snort,目錄名稱可能會有所不同,目錄名稱會反映版本號。解壓縮后你能夠運(yùn)行tree命令來觀察tar命令建立的目錄樹,如下所示是/opt/snort-1.9.0的目錄樹:[root@conformixopt]#tree-dsnort-1.9.0snort-1.9.0|--contrib|--doc|--etc|--rules|--src| |--detection-plugins| |--output-plugins| |--preprocessors| `--win32||--WIN32-Code||--WIN32-Includes|||--NET|||--NETINET|||--libnet|||--mysql||`--rpc||--WIN32-Libraries|||--libnet||`--mysql|`--WIN32-Prj`--templates21directories[root@conformixopt]#這些目錄中的主要內(nèi)容如下所示:contrib目錄主要包括并非嚴(yán)格輸入Snort自身組成部分的應(yīng)用軟件,這些軟件包括ACID,MySQL數(shù)據(jù)庫生成腳本和其它。doc目錄包含文檔文件。etc目錄包含配置文件。rules目錄包含預(yù)先定義的規(guī)則文件。所有的源代碼在src目錄下面。templates是為那些準(zhǔn)備自己寫插件的人準(zhǔn)備的,這對大多數(shù)Snort用戶沒有意義。2.2.2.2編譯和安裝編譯和安裝過程包括下列3個(gè)步驟:運(yùn)行configure腳本。運(yùn)行make命令。運(yùn)行makeinstall命令。開始Snort的編譯過程,首先去/opt/snort-1.9.0目錄并運(yùn)行configure腳本。如果你剛剛開始接觸GNU類的軟件,你需要了解configure腳本是開放源碼軟件包通用的工具,它能夠用來設(shè)置參數(shù),創(chuàng)立makefile,檢測開發(fā)工具和你系統(tǒng)中的庫文件。運(yùn)行configure腳本的時(shí)候,有許多命令行選項(xiàng),這些選項(xiàng)決定Snort編譯時(shí)將帶有那些組件。比如,用這些選項(xiàng),你能夠構(gòu)建對SNMP、MySQL或SMB告警的支持以及其它很多事情。你同樣也能夠定制Snort文件的最終安裝位置。你能夠用”./configure–help”命令來察看可用的選項(xiàng),如下所示:#./configure--help`configure'configuresthispackagetoadapttomanykindsofsystems.Usage:./configure[OPTION]...[VAR=VALUE]...Toassignenvironmentvariables(e.g.,CC,CFLAGS...),specifythemasVAR=VALUE.Seebelowfordescriptionsofsomeoftheusefulvariables.Defaultsfortheoptionsarespecifiedinbrackets.Configuration:-h,--helpdisplaythishelpandexit--help=shortdisplayoptionsspecifictothispackage--help=recursivedisplaytheshorthelpofalltheincludedpackages-V,--versiondisplayversioninformationandexit-q,--quiet,--silentdonotprint`checking...'messages--cache-file=FILEcachetestresultsinFILE[disabled]-C,--config-cachealiasfor`--cache-file=config.cache'-n,--no-createdonotcreateoutputfiles--srcdir=DIRfindthesourcesinDIR[configurediror`..']Installationdirectories:--prefix=PREFIXinstallarchitecture-independentfilesinPREFIX[/usr/local]--exec-prefix=EPREFIXinstallarchitecture-dependentfilesinEPREFIX[PREFIX]Bydefault,`makeinstall'willinstallallthefilesin`/usr/local/bin',`/usr/local/lib'etc.Youcanspecifyaninstallationprefixotherthan`/usr/local'using`--prefix',forinstance`--prefix=$HOME'.Forbettercontrol,usetheoptionsbelow.Finetuningoftheinstallationdirectories:--bindir=DIRuserexecutables[EPREFIX/bin]--sbindir=DIRsystemadminexecutables[EPREFIX/sbin]--libexecdir=DIRprogramexecutables[EPREFIX/libexec]--datadir=DIRread-onlyarchitecture-independentdata[PREFIX/share]--sysconfdir=DIRread-onlysingle-machinedata[PREFIX/etc]--sharedstatedir=DIRmodifiablearchitecture-independentdata[PREFIX/com]--localstatedir=DIRmodifiablesingle-machinedata[PREFIX/var]--libdir=DIRobjectcodelibraries[EPREFIX/lib]--includedir=DIRCheaderfiles[PREFIX/include]--oldincludedir=DIRCheaderfilesfornon-gcc[/usr/include]--infodir=DIRinfodocumentation[PREFIX/info]--mandir=DIRmandocumentation[PREFIX/man]Programnames:--program-prefix=PREFIXprependPREFIXtoinstalledprogramnames--program-suffix=SUFFIXappendSUFFIXtoinstalledprogramnames--program-transform-name=PROGRAMrunsedPROGRAMoninstalledprogramnamesSystemtypes:--build=BUILDconfigureforbuildingonBUILD[guessed]--host=HOSTcross-compiletobuildprogramstorunonHOST[BUILD]OptionalFeatures:--disable-FEATUREdonotincludeFEATURE(sameas--enable-FEATURE=no)--enable-FEATURE[=ARG]includeFEATURE[ARG=yes]--disable-dependency-trackingSpeedsupone-timebuilds--enable-dependency-trackingDonotrejectslowdependencyextractors--enable-debugenabledebuggingoptions(bugreportsanddevelopersonly)--enable-profileenableprofilingoptions(developersonly)--enable-sourcefireEnableSourcefirespecificbuildoptions--enable-perfmonitorEnableperfmonitorpreprocessor--enable-linux-smp-statsEnablestatisticsreportingthroughproc--enable-flexrespFlexibleResponsesonhostileconnectionattemptsOptionalPackages:--with-PACKAGE[=ARG]usePACKAGE[ARG=yes]--without-PACKAGEdonotusePACKAGE(sameas--with-PACKAGE=no)--with-libpcap-includes=DIRlibpcapincludedirectory--with-libpcap-libraries=DIRlibpcaplibrarydirectory--with-libnet-includes=DIRlibnetincludedirectory--with-libnet-libraries=DIRlibnetlibrarydirectory--with-mysql=DIRsupportformysql--with-odbc=DIRsupportforodbc--with-postgresql=DIRsupportforpostgresql--with-oracle=DIRsupportfororacleSomeinfluentialenvironmentvariables:CCCcompilercommandCFLAGSCcompilerflagsLDFLAGSlinkerflags,e.g.-L<libdir>ifyouhavelibrariesinanonstandarddirectory<libdir>CPPFLAGSC/C++preprocessorflags,e.g.-I<includedir>ifyouhaveheadersinanonstandarddirectory<includedir>CPPCpreprocessorUsethesevariablestooverridethechoicesmadeby`configure'ortohelpittofindlibrariesandprogramswithnonstandardnames/locations 方括號中的值表示如果該選項(xiàng)如果沒有被設(shè)定,系統(tǒng)就會選擇該默認(rèn)值。例如:--prefix選項(xiàng)幫助第二行表示,如果沒有設(shè)定—prefix選項(xiàng),系統(tǒng)就會選擇默認(rèn)值/usr/local。PREFIX是指當(dāng)你運(yùn)行”makeinstall”命令的時(shí)候Snort文件要安裝的目錄。--prefix=PREFIXinstallarchitecture-independentfilesinPREFIX[/usr/local]運(yùn)行configure腳本的典型會話如下所示。為節(jié)省空間,輸出信息作了刪減。注意命令行中打開的選項(xiàng)。[root@conformixsnort-1.9.0]#./configure--prefix=/opt/snort--enable-smbalerts--enable-flexresp--with-mysql--with-snmp--with-opensslloadingcache./config.cachecheckingforaBSDcompatibleinstall...(cached)/usr/bin/install-ccheckingwhetherbuildenvironmentissane...yescheckingwhethermakesets${MAKE}...(cached)yescheckingforworkingaclocal...foundcheckingforworkingautoconf...foundcheckingforworkingautomake...foundcheckingforworkingautoheader...foundcheckingforworkingmakeinfo...foundcheckingforgcc...(cached)gcccheckingwhethertheCcompiler(gcc)works...yescheckingwhethertheCcompiler(gcc)isacross-compiler...nocheckingwhetherweareusingGNUC...(cached)yescheckingwhethergccaccepts-g...(cached)yescheckingforgccoptiontoacceptANSIC...(cached)noneneededcheckingforranlib...(cached)ranlib 輸出信息作了刪件,因?yàn)閏onfigure命令會產(chǎn)生大量的信息。選項(xiàng)prefix告訴configuire腳本程序最終的安裝位置。其它的選項(xiàng)用來使下列Snort組件生效:對MySQL數(shù)據(jù)庫的支持。對SNMPtrap信息的支持。對SMB告警的支持。SMB告警用來向Windows發(fā)出彈出窗口告警。對flex響應(yīng)的支持。Flex響應(yīng)用來實(shí)時(shí)終止網(wǎng)絡(luò)會話。后面的章節(jié)將提供關(guān)于flex響應(yīng)的更多信息。注意你的系統(tǒng)必須安裝了libnet才能夠使用這個(gè)選項(xiàng)。你能夠從下載libnet。我是用1.0.2a版來完成安裝的。運(yùn)行完configure腳本后,你能夠運(yùn)行下面兩個(gè)命令來編譯和安裝Snort。makemakeinstall你一個(gè)命令可能要一些時(shí)間來完成,這要看你的計(jì)算機(jī)的能力。當(dāng)你運(yùn)行完第二個(gè)命令,文件就會被安裝到適當(dāng)?shù)哪夸浿腥チ?。因?yàn)槟阍谶\(yùn)行configure腳本的時(shí)候選擇了--prefix=/opt/snort,因此makeinstall命令將Snort二進(jìn)制文件安裝到/opt/snort目錄中去。 運(yùn)行configure腳本的可用參數(shù)見表2-1表2-1configure腳本參數(shù)一覽表參數(shù)描述--with-mysql構(gòu)建Snort對Mysql的支持--with-snmp構(gòu)建Snort對SNMP的支持。如果用這個(gè)選項(xiàng),必須同時(shí)選-—with-openssl--with-openssl對OpenSSL的支持。當(dāng)你選—with-snmp時(shí)要選擇這個(gè)選項(xiàng)。--with-oracle對Oracle數(shù)據(jù)庫的支持。--with-odbc構(gòu)建Snort對ODBC的支持。--enable-flexresp使Snort能夠使用Flex響應(yīng),以能夠終止惡意的連接。當(dāng)前這個(gè)選項(xiàng)還在實(shí)驗(yàn)中(察看Snort發(fā)布的README.FLEXRESP文件)。--enable-smbalerts使Snort能夠發(fā)送SMB告警。注意每次告警時(shí)都會占用客戶端的用戶空間。--Prefix=DIR設(shè)置安裝Snort文件的目錄。在運(yùn)行”makeinstall”命令之前,你也能夠運(yùn)行”makecheck”命令來確定Snort的構(gòu)建是否正確。安裝完畢之后,運(yùn)行Snort來看看是否可執(zhí)行文件能夠工作。在完成前面的步驟后,Snort的二進(jìn)制文件會被安裝在/opt/snort/bing目錄中。下面的命令會顯示新安裝的snort的基本幫助信息和命令行選項(xiàng)。如果你看到這樣的信息,你的Snort就安裝正確了。在下一部分,你將了解如何配置和運(yùn)行Snort。2.2.2.3安裝完后要做的工作現(xiàn)在你已經(jīng)安裝好了Snort二進(jìn)制文件,可是還有些事情要做:創(chuàng)立/var/log/snort目錄作為Snort默認(rèn)的存放日至文件的地方。創(chuàng)立一個(gè)存放配置文件的目錄。我創(chuàng)立的是/opt/snort/etc目錄,你能夠創(chuàng)立自己的目錄。創(chuàng)立或者復(fù)制配置文件到/opt/snort/etc目錄下。創(chuàng)立目錄/opt/snort/rules而且將默認(rèn)的規(guī)則文件拷貝到里面。這個(gè)目錄會在snort.conf文件中指定,你能夠創(chuàng)立自己喜歡的目錄。下面來詳細(xì)解釋這些步驟:首先,創(chuàng)立/var/log/snort目錄讓Snort存放日志文件。你也能夠用其它的目錄,可是這個(gè)目錄是慣常使用的。如果你用其它任何目錄,你需要在啟動(dòng)Snort的時(shí)候用命令行選項(xiàng)-l來指定。 然后,要?jiǎng)?chuàng)立Snort配置文件。當(dāng)Snort啟動(dòng)的時(shí)候,將從當(dāng)前目錄讀取配置文件snort.conf或者從運(yùn)行Snort的用戶屬主目錄讀取.snortrc文件。如果這個(gè)文件在其它目錄中,你也能夠用命令行選項(xiàng)-c來指定。開始的時(shí)候,你能夠?qū)nort源代碼中附帶的snort.conf文件拷貝到你創(chuàng)立的/opt/snort/etc目錄下面。同時(shí)也把classification.config和reference.config文件拷貝進(jìn)去,這兩個(gè)文件是snort.conf文件要引用的。另外將源代碼中rules目錄下面的所有文件拷貝到/opt/snort/rules目錄下面。參考下列命令實(shí)現(xiàn)這些步驟:mkdir/opt/snort/etccp/opt/snort-1.9.0/etc/snort.conf/opt/snort/etccp/opt/snort-1.9.0/etc/classification.config/opt/snort/etccp/opt/snort-1.9.0/etc/reference.config/opt/snort/etcmkdir/opt/snort/rulescp/opt/snort-1.9.0/rules/*/opt/snort/rulesrules目錄中以.rules為后綴的文件中包含了各種規(guī)則,這些文件被snort.conf文件引用。這些rules文件的位置由snort.conf文件中定義的RULE_PATH變量控制,該變量在snort.conf中的定義一般如下表示:varRULE_PATH../rules 它說明rules文件的位置在名叫rules的目錄下。例如,如果snort.conf文件在/opt/snort/etc目錄中,那么所有的規(guī)則文件就應(yīng)該在/opt/snort/rules目錄下。又例如如果snort.conf文件在/var/snort目錄下,那么規(guī)則文件必須在/var/rules目錄中。你也能夠?qū)nort.conf與所有規(guī)則文件放在同一目錄下面,只是你要將snort.conf文件中rules位置變量的值由../變成./: varRULE_PATH./ 在下一章中,你將了解更多的關(guān)于Snort規(guī)則的信息,同時(shí)你也將了解如何定義自己的規(guī)則。 classification.config文件中包括了關(guān)于Snort規(guī)則分類的信息,你將在下一章中了解更多信息。在本書的例子中,Snort的所有源代碼文件在/opt/snort-1.9.0目錄中,如果你用的是不同版本的Snort,該目錄也會不同。 Reference.config文件中羅列了一些關(guān)于各種告警信息的參考網(wǎng)站的URL,這些參考將在Snort規(guī)則中引用,你會在下一章了解更多信息。典型的reference.config文件如下所示: #$Id:reference.config,v1.3/08/2814:19:15chrisgreenExp$#ThefollowingdefinesURLsforthereferencesfoundintherules##configreference:systemURLconfigreference:bugtraqconfigreference:cvecvename.cgi?name=configreference:arachNIDS#Note,thisoneneedsasuffixaswellletsaddthatinabit.configreference:McAfeeconfigreference:nessusdump.php3?id=configreference:urlhttp:// 注意:classification和reference.config文件都會被主配置文件snort.conf引用。 現(xiàn)在你能夠用下面的命令運(yùn)行Snort了,這個(gè)命令會顯示啟動(dòng)信息,然后監(jiān)聽eth0接口。注意為了避免一些困擾,這個(gè)命令用命令行選項(xiàng)指定了snort.conf文件的絕對目錄。[root@conformixsnort]#/opt/snort/bin/snort-c/opt/snort/etc/snort.confInitializingOutputPlugins!Logdirectory=/var/log/snortInitializingNetworkInterfaceeth0--==InitializingSnort==--DecodingEthernetoninterfaceeth0InitializingPreprocessors!InitializingPlug-ins!ParsingRulesfile/opt/snort/etc/snort.conf++++++++++++++++++++++

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論