版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
PAGE本科生畢業(yè)設計(申請學士學位)論文題目基于snort和iptables的簡單IPS系統(tǒng)的設計與實現作者姓名周偉偉網絡工程指導教師戴支祥2014年5月25日學生:(簽字)學號:2010211262答辯日期:2014年6月14日指導教師:(簽字)目錄摘要 1Abstract 11緒論 21.1研究現狀 21.2系統(tǒng)設計的主要意義 31.3文章結構 32相關技術和理論基礎 42.1snort簡介 42.1.1snort概述 42.1.2snort工作原理 42.1.3snort規(guī)則 52.2iptables簡介 62.2.1iptables概述 62.2.2iptables工作原理 62.2.3iptables規(guī)則 72.3入侵檢測系統(tǒng)和防火墻的聯動 82.3.1聯動基本概念 82.3.2聯動工作原理 83系統(tǒng)需求分析 93.1業(yè)務流程 93.2可行性分析 104總體設計 114.1系統(tǒng)結構設計 114.2數據庫設計 124.2.1概念設計 124.2.2邏輯設計 145系統(tǒng)實現 165.1系統(tǒng)開發(fā)環(huán)境 165.2系統(tǒng)主頁面 165.3管理員登入模塊 175.4管理員信息管理模塊 205.4聯動響應模塊 245.5攻擊統(tǒng)計圖模塊 255.6郵件通知模塊 275.7系統(tǒng)啟動關閉模塊 285.7事件查看模塊 305.8snort規(guī)則管理模塊 315.9iptables規(guī)則管理模塊 356系統(tǒng)測試 376.1系統(tǒng)測試的方法 376.2測試環(huán)境 376.3管理模塊測試 376.3.1snort規(guī)則管理模塊測試 376.3.2iptables規(guī)則管理模塊測試 396.4聯動模塊測試 396.4.1防御ping攻擊測試 396.4.2防御Nmap掃描測試 406.5攻擊查看測試 40結束語 40參考文獻 41致謝 42滁州學院本科畢業(yè)設計-PAGE43-基于snort和iptables的簡單IPS系統(tǒng)的設計與實現摘要:面對日益嚴峻的網絡安全形勢,傳統(tǒng)的網絡安全技術顯得力不從心。針對入侵檢測系統(tǒng)(IntrusionDetectionSystem,IDS)和傳統(tǒng)防火墻的缺陷,本文設計并實現了一個Ubuntu系統(tǒng)下將傳統(tǒng)防火墻iptables和入侵檢測系統(tǒng)snort相互聯動的簡單IPS系統(tǒng)。運用snort記錄攻擊事件,采用Java編寫了實時監(jiān)控程序,實時監(jiān)測snort報警日志,如果監(jiān)測到攻擊事件,系統(tǒng)動態(tài)生成規(guī)則,應用iptables實時阻斷攻擊。該系統(tǒng)使用Browser/Server模式,管理員登錄系統(tǒng)后才可以進行遠程操作,支持通過Web頁面關閉/啟動系統(tǒng),插入/刪除/查看iptables規(guī)則,插入/刪除/查看snort規(guī)則,管理管理員的基本信息等。管理員配置的所有規(guī)則都通過MySQL數據庫進行保存,所有的攻擊事件和iptables防火墻的響應事件也保存在數據庫中,方便管理員日后進行查找和分析。同時搭建了一個測試平臺來測試系統(tǒng)的可靠性。關鍵詞:iptables;snort;Browser/Server;聯動DesignandImplementationof
SimpleIPSSystemBasedonsnortandiptables
Abstract:Facingtheincreasinglyserioussituationofnetworksecurity,thetraditionalnetworksecuritytechnologyisinsufficient.Aimingattheshortageoftraditionalfirewallandintrusiondetectionsystem,thisarticledesignsanIntrusionPreventSystem(IPS)tolinkintrusiondetectionsystemsnortandthefirewalliptablesunderUbuntu.IPSusesthesnortrecordingattacks,runsaprogramwritteninJavatomonitorsnort’salarmlog.IfIPSdetectsanintrusion,itcandynamicallygeneraterulesandcalliptablesblockingattacksintime.ThesystemadoptsBrowser/Servermode,admintorscanremotelyoperatesystemafterlogginginsystem.Allofthesefunctionsaresupportedthroughwebpages,suchasshutdown/startup,inserting/deleting/viewingrulesofsnortandiptables,managingthebasicinformationofadministratorsandsoon.Alltherules,attacksandrespondsarestoredintheMySQLdatabaseinordertofacilitatetheadministratortosearchandanalysis.Atthesametime,aplatformfortestingpurposeisbuilt.Keywords
:iptables;snort;Browser/Server;cooperation
1緒論1.1研究現狀隨著Internet的快速發(fā)展,諸如電子商務、電子化辦公等已經或正在成為現代生活的重要組成部分。但是Internet讓工作及生活變的越來越方便的同時,也使得網絡安全風險不斷增加。我們必須面對和解決網絡安全隱患。2013年的“斯諾登事件”,就是一個典型的網絡安全事件。網絡安全的重要性不言而喻。為了解決日益嚴重的網絡安全隱含,許多網絡安全技術被推出,防火墻和入侵檢測系統(tǒng)就是其中兩種比較成熟的技術。防火墻是一個成熟的網絡安全技術,主要作用是訪問控制和身份認證,它是保障網絡安全的的第一道安全門,但是防火墻自身也存在著一些缺陷。首先,它是一種靜態(tài)的網絡安全技術,因為它的安全策略需要事先設計好。其次,防火墻無法攔截所有類型的攻擊,比如一些協(xié)議漏洞發(fā)起的攻擊和來自網絡內部的攻擊?;谝陨蠁栴},為了保障網絡的安全就需要網絡管理員實時查看網絡的狀態(tài),及時發(fā)現攻擊,并對攻擊進行分析重新制定安全策略。導致了大量的人力浪費在重復的勞動上[1]。入侵檢測系統(tǒng)是保障網絡安全的第二道安全門,它是一種被動型的網絡安全技術,主要是用來監(jiān)聽網絡運行狀態(tài),并判斷是否有入侵行為發(fā)生,并記錄入侵行為的基本信息。但是相對防火墻來說,IDS缺少阻斷攻擊的能力。隨著網絡安全形勢的日益嚴峻,單純的防火墻和入侵檢測系統(tǒng)都不能有效保障網絡安全。真正的縱深防御技術應該不僅能夠發(fā)現攻擊事件,而且能夠及時地、主動地阻止攻擊,防止攻擊對用戶造成危害。正是基于這種思想,一種新的網絡安全技術——入侵防御系統(tǒng)(IntrusionPreventionSystem,IPS)被研究出來。2002年一些國際網絡安全組織首次提出入侵防御系統(tǒng)的概念,并隨著網絡安全問題的日益突出,越來越多的人開始關注IPS。IPS在隨后的幾年里得到了快速發(fā)展。2003年6月Gartner公司副總裁RichardStiennon在其發(fā)表的著名的題為《IntrusionDetectionIsDead-LongLiveIntrusionPrevention》的研究報告中提出:IDS不但不能給網絡帶來安全性,反而會增加網絡管理員的困擾,建議用戶使用IPS來代替IDS[2]。經過多年研究,國外一些公司推出了各自的IPS產品,比如CISOC公司的IPS4300/4500系列、Juniper公司的JuniperNetworks,Symantec公司的ManHunt和IntruderAlert、TopLayer公司的ips5500、McAfee的IntruShield系列和Entercept系列、NetScreen的IDP系列等[3]。相比較國外,國內對于IPS的研究起步較晚,直到2004年方正科技公司才推出了方正方通入侵防御系統(tǒng)[4]。2005年9月15日,綠盟科技也推出自己的入侵防御系統(tǒng)ICEYENIPS[5]。不久后,北京啟明星辰信息技術有限公司推出了其自主研發(fā)的天清系列入侵防御系統(tǒng),比如天清入侵防御系統(tǒng)NIPS860[6]。華為公司在2013安捷信合作伙伴大會上推出了一款功能強大的入侵檢測系統(tǒng)NIP5000入侵防御系統(tǒng),并在同年5月份發(fā)布了一款世界領先的萬兆級入侵防御系統(tǒng)NIP5500[7]。IPS已經逐漸成為網絡安全市場的主流產品,并且還在繼續(xù)研發(fā)并完善中。1.2系統(tǒng)設計的主要意義防火墻是一種基于規(guī)則庫在外部網絡和內部網絡之間實行訪問控制的系統(tǒng)。邏輯上,防火墻是由限制器和分離器組成;實際中,防火墻一般是由一些硬件設備和軟件設備組成。它按照預制的規(guī)則和配置,檢測然后過濾網絡流量,從而保護網絡安全。但是它的缺點也很明顯:防火墻的規(guī)則是固定的,不能依據網絡運行情況進行動態(tài)調整,也不能記錄攻擊行為用于事后分析和取證等[8]??傊阑饓Υ嬖谝韵聨讉€問題:=1\*GB2⑴防火墻的規(guī)則編寫較難。編寫過于嚴格,網絡的正常運行則會受到影響;編寫過于寬松,網絡安全則難以保障。=2\*GB2⑵防火墻是一種靜態(tài)的技術,它不能動態(tài)地處理入侵事件。=3\*GB2⑶防火墻無法阻止不經過它的入侵。比如來自內網的入侵等。=4\*GB2⑷防火墻無法阻止一些基于協(xié)議的入侵。比如針對Web、FTP等協(xié)議的攻擊。入侵檢測系統(tǒng)是指可以通過規(guī)則庫檢測入侵行為,并對被檢測出的入侵行為做出正確響應的系統(tǒng)。根據其工作原理的不同,可分為主機型、網絡型和分布式型三種。入侵檢測系統(tǒng)雖然能夠實時的檢測網絡安全狀態(tài),但是它也有一些缺點:=1\*GB2⑴無法檢測非面向連接的攻擊。=2\*GB2⑵無法檢測拒絕服務攻擊。=3\*GB2⑶入侵檢測的可靠性不高。=4\*GB2⑷當有針對系統(tǒng)本身的攻擊時,會影響系統(tǒng)正常運行。防火墻和入侵檢測系統(tǒng)在實際網絡環(huán)境中都有一些不足之處,因此將二者相互聯動,組建IPS系統(tǒng)可以取長補短,更好的保護網絡安全。相比較于傳統(tǒng)防火墻和入侵檢測系統(tǒng),入侵防御系統(tǒng)是一種主動的、積極的網絡安全技術[9]。但是商業(yè)IPS的價格高昂,許多中小型企業(yè)不具備購買能力。因此,本設計選用開源的snort和Ubuntu操作系統(tǒng)自帶的iptables相互聯動來實現簡單的IPS系統(tǒng)。開源軟件的免費特性使得企業(yè)無需考慮系統(tǒng)部署成本,開放性使得企業(yè)不用擔心被一家或某幾家商業(yè)軟件綁架,豐富的技術參考資料和大量已有的部署案例為成功進行系統(tǒng)部署提供了技術參考和保障。同時本設計的開發(fā)模式使用B/S模式,前臺Web界面提供用戶管理IPS的功能,后臺采用JAVA監(jiān)控snort報警日志并將攻擊方添加到iptables阻止規(guī)則鏈中。1.3文章結構本設計共分為六部分。第一部分剖析了本設計的研究背景和研究意義,并且簡單介紹了IPS的國內外研究現狀和主要產品。第二部分介紹了snort和iptables規(guī)則的構成以及各自的工作原理。同時也分析了snort和iptables的優(yōu)缺點,并描述了IPS的工作原理及特征。第三部分分析了本系統(tǒng)的市場需求和應用價值,然后對系統(tǒng)的開發(fā)進行了業(yè)務流程分析和可行性分析。第四部分首先對系統(tǒng)每個模塊進行了設計和功能介紹,然后對數據庫進行了概念設計和邏輯設計。第五部分介紹了系統(tǒng)主要功能模塊的關鍵代碼,并展示了運行界面。第六部分介紹了測試使用的攻擊手段,并展示了測試的結果。最后是結束語,對系統(tǒng)進行了簡單的介紹和概括。2相關技術和理論基礎2.1snort簡介2.1.1snort概述snort是一款輕量級網絡入侵檢測系統(tǒng)(NetworkIntrusionDetectionSystem,NIDS)。它是以Sniffer為基礎,通過不斷地重寫代碼,改進功能,才成為了一款流行的NIDS。本質上snort是一款網絡數據包嗅探器,但是它的創(chuàng)新性在于使用規(guī)則來檢測數據包。snort的檢測是基于規(guī)則庫的,所有snort規(guī)則都被保存在文本文件中,并按照攻擊類型保存為不同名稱的文件,這些文件構成了規(guī)則庫。snort在啟動時通過配置文件來讀取規(guī)則檢測數據包以發(fā)現入侵事件,并進行處理,可供選擇的方式有:忽略、記錄或報警。snort有諸多優(yōu)點:=1\*GB2⑴支持多種硬件平臺和所有的操作系統(tǒng)平臺,用戶可自行選擇。=2\*GB2⑵采用模塊化結構,具有較強的可擴展性,對于新的攻擊手段,只需簡單的添加新的規(guī)則就可以檢測到。=3\*GB2⑶規(guī)則存儲在文本文件中,方便用戶改寫規(guī)則。用戶可以添加自己的規(guī)則,也可以刪除規(guī)則庫中的規(guī)則。=4\*GB2⑷snort是開源的、免費的軟件。snort也有一些缺點:=1\*GB2⑴snort的正確安裝非常困難,各個組件相互協(xié)調才能保證系統(tǒng)穩(wěn)定的運行。=2\*GB2⑵snort依賴的Libpcap自身存在缺陷,流量超過百兆就導致系統(tǒng)奔潰。=3\*GB2⑶容易產生誤報警,對于合法流量只要匹配規(guī)則就會報警。=4\*GB2⑷文本形式的規(guī)則反而加大了用戶的配置難度,對于新手很難真確配置。2.1.2snort工作原理snort的模塊化結構,使得系統(tǒng)具有較好的可擴展型。它是由下列幾個部分組成:包解碼器、檢測引擎及插件、預處理器插件和報警輸出模塊等。各個模塊相互合作,當檢測到snort規(guī)則庫中已定義的的攻擊特征時,產生指定形式的報警信息[10]。snort的工作原理如圖2-1所示。圖2-1snort工作原理snort的運行是基于插件的,所有的插件都是依據snort官方提供的函數接口開發(fā)的。用戶自由安裝功能插件,也可以自己開發(fā)出適合自己的插件,這使得功能擴展更加簡單。2.1.3snort規(guī)則snort作為一款流行的NIDS,它出類拔萃之處在于它的規(guī)則文件被設計成可編輯的文本文件。完整的snort規(guī)則應該由兩部分構成:括號前面的規(guī)則頭和括號里面的規(guī)則體。比如alerttcpanyany->anyany(flags:A;ack:0;msg:“NMAPTCPping”;)就是個典型的規(guī)則。規(guī)則頭是規(guī)則不可或缺的一部分,規(guī)則頭可以定義攻擊的一些簡單特征,比如源地址、目的地址、源端口、目的端口、協(xié)議類型等基本信息,并且它定義了對于入侵事件snort應該采取哪種規(guī)則動作。概括起來規(guī)則頭可以分為7個部分:規(guī)則動作、協(xié)議類型、源地址、源端口、目的地址、目的端口和方向操作符。規(guī)則動作是構成規(guī)則頭的第一個部分,它告訴snort當檢測到入侵時,探測引擎將會采取什么樣的響應。Snort規(guī)則動作可分為預置規(guī)則動作和自定義規(guī)則動作。5種預置的動作如表2-1所示:表2-1snort預置規(guī)則動作規(guī)則動作含義alert應用默認機制產生告警,以及做相應記錄log對包應用規(guī)定機制進行記錄pass忽略這個數據包activate先告警,接著activate一個不同的dynamicdynamic待一條規(guī)則激活,接著記錄日志自定義規(guī)則動作可以使用以下通用結構來定義:ruletype動作名稱{ Actiondefinition}自定義動作定義是在大括號內完成,動作名稱的則是在大括號外的ruletype關鍵字之后。規(guī)則動作定義完成之后,必須放在snort的配置文件中才可以直接調用動作名稱使用。協(xié)議類型是構成規(guī)則頭的第二部分,主要是用來對比數據包的協(xié)議類型。當前,最新版的snort可以支持IP、TCP、UDP和ICMP四種協(xié)議類型的數據包檢測。協(xié)議部分僅在規(guī)則頭部起作用,與規(guī)則選型無關。在規(guī)則頭中,有兩個地址部分用來檢測數據包的源地址、源端口、目的地址和目的端口。地址可以是主機地址或者網絡地址,也可以用關鍵字any來代表所有地址或者端口。采用的無類別域間路由地址,符合當前網絡地址的標準形式。當用戶想排除掉某些地址或端口時,可采用非運算符“!”。在snort規(guī)則方向操作符是一個非常重要的概念,指明了哪一邊是源,哪一邊是目的。方向操作符主要有三種:=1\*GB2⑴->表示數據包從左邊定義的地址發(fā)送給右邊定義的地址。=2\*GB2⑵<-表示數據包從右邊定義的地址發(fā)送給左邊定義的地址。=3\*GB2⑶<>表示規(guī)則被應用在兩個方向。規(guī)則體屬于可選內容,主要用來對數據包進行深層次攻擊特征檢測。它由多個規(guī)則選項組成,每個選項之間使用“;”分開,便于snort區(qū)分各個選項。只有所有規(guī)則選項定義的攻擊特征被滿足時,規(guī)則頭中定義的規(guī)則動作才被使用。規(guī)則選項的關鍵字有許多,最新的版本中規(guī)則選項關鍵字將近50個。一些常見snort規(guī)則選項關鍵字如表2-2所示。表2-2常見選項關鍵字選項關鍵字含義sid規(guī)則號msg告警信息ttl判斷IP包的TTL值classtype規(guī)則類型2.2iptables簡介2.2.1iptables概述iptables是一款工作于用戶空間的防火墻應用軟件,自從Linux2.4發(fā)布后,它就已經成為了Linux操作系統(tǒng)自帶的防火墻。經過多年的研究與完善,它已發(fā)展成為一款功能強大的流行的防火墻,具備了許多商業(yè)防火墻才有的功能。比如,iptables能夠檢測數據包的應用層、能夠跟蹤協(xié)議、能夠制定過濾規(guī)則和訪問控制等功能?;旧纤邪姹镜腖inux都預置了iptables。從工作原理上來看,iptables僅僅是用戶和防火墻之間的控制接口,真正的防火墻是Netfilter框架。Netfilter框架是由RustyRussell提出的Linux內核防火墻框架。簡單的說表由鏈組成,而鏈又由規(guī)則組成。Netfilter有Filter表、NAT表、Mangle表和Raw表四個表,一般情況下默認使用Filter表。而iptables則只是用來管理表、鏈和規(guī)則的工具。2.2.2iptables工作原理基于iptables的策略機制,用戶可以通過iptables對數據包進行嚴格地包過濾。完整的iptables策略是由一組的iptables規(guī)則組成,它的主要作用是讓Linux內核知道如何處理一些特定的數據包。規(guī)則建立在鏈中,一個鏈就是一個完整的規(guī)則集。防火墻通過規(guī)則對數據包進行特征比較,然后對數據包做出響應動作[11]。iptables的工作原理如圖2-2所示。圖2-2iptables的工作原理2.2.3iptables規(guī)則iptables主要是用來增加、刪除和修改鏈,在鏈中創(chuàng)建、刪除和更改過濾規(guī)則的管理工具。它的功能強大,但是用法簡單。常見的iptables命令格式為:iptables[-t表名]命令選項[鏈名][條件匹配][-j目標動作或跳轉]“-t表名”是指需要進行操作的表,通常使用Filter表、Nat表、Raw表和Mangle表四個中的一個。如果該項缺省則系統(tǒng)默認使用Filter表。Filter表用來保存過濾規(guī)則,Nat表用來保存NAT規(guī)則,Mangle表用來保存修改分組數據的特定規(guī)則,而Raw表用來保存在連接跟蹤前處理數據包的規(guī)則?!懊钸x項”是用來對鏈或規(guī)則進行操作的,常見的命令選項表2-3所示。表2-3常見的命令選項選項含義-A向指定鏈中追加規(guī)則-D從指定鏈中刪除指定規(guī)則-F清空指定鏈中的所有規(guī)則-I在指定規(guī)則前插入規(guī)則-L顯示指定鏈中的所有規(guī)則-N建立用戶自定義鏈-R替換指定鏈中某條規(guī)則-X刪除不在使用的用戶自定義鏈“鏈”是指要被操作的鏈名,它分為內置鏈和自定義鏈兩種。在Filter表中最重要的內置鏈是OUTOUT鏈(輸出鏈)、INPUT鏈(輸入鏈)和FORWARD鏈(轉發(fā)鏈)?!皸l件匹配”指匹配數據包時的規(guī)則特征,只有當數據包匹配這些條件時,才可以進行該規(guī)則指定的動作。常見的匹配選項如表2-4所示。表2-4常見的匹配選項選項含義-s匹配源IP地址或網絡-d匹配目標IP地址或網絡-p匹配協(xié)議類型-i流入接口-o流出接口“目標動作或跳轉”是當數據包的特征匹配規(guī)則時觸發(fā)的動作。常見的動作如表2-5所示。表2-5常見的動作選項含義ACCEPT允許數據包通過DROP丟棄數據包,并不對數據包進行進一步處理LOG將數據包信息記錄到syslogREJECT丟棄數據包,同時發(fā)送適當的響應報文RETURN在調用鏈中繼續(xù)處理數據包2.3入侵檢測系統(tǒng)和防火墻的聯動2.3.1聯動基本概念snort和iptables各自都存在一些缺陷,為了解決這些缺陷帶來的網絡安全問題,聯動機制的概念被提出來了。通過將iptables和snort相互聯動,iptables能通過snort及時發(fā)現符合規(guī)則的入侵行為,snort能夠使用iptables對入侵行為進行處理?;诼搫訖C制實現的簡單IPS能夠更有效地保障網絡安全,進一步提高了防護性能,并且與商業(yè)IPS相比較,它大大降低了成本[12]。2.3.2聯動工作原理數據包進入系統(tǒng)之后,iptables防火墻按照規(guī)則對數據包進行特征比較,滿足規(guī)則的數據包按照規(guī)則中的動作進行處理,通過檢查的數據包交給snort進行進一步的檢測。如果發(fā)現數據包的信息與規(guī)則庫中規(guī)則匹配,則調用聯動模塊將數據包的源地址加入到iptables的阻止鏈中并記錄信息。聯動的工作原理如圖2-3所示。圖2-3聯動工作原理3系統(tǒng)需求分析3.1業(yè)務流程系統(tǒng)可分概括為兩大部分:系統(tǒng)聯動部分和Web管理部分。聯動部分主要是面對snort和iptables,數據包首先通過iptables的初步過濾,判斷是否匹配過濾規(guī)則。如果滿足iptables規(guī)則就對數據包執(zhí)行該規(guī)則定義的規(guī)則動作,如果不滿足iptables規(guī)則就交給snort進行進一步的檢測。snort通過規(guī)則庫對數據包進行特征匹配,如果特征匹配失敗,數據包則通過檢測。如果匹配成功,snort就向報警日志中添加新的報警信息。當聯動模塊監(jiān)測到報警日志有新的報警信息時,就對其進行分析,提取攻擊行為的各種信息,并將這些信息插入到數據庫中,方便日后取證調查。然后聯動模塊會根據攻擊行為的信息生成一個規(guī)則,并插入到iptables過濾規(guī)則庫中。當攻擊者再次攻擊時,攻擊數據包就會被iptables過濾,從而達到保障網絡安全的作用。圖3-1為聯動部分業(yè)務流程圖。Web管理部分主要是面對管理員,管理員登入系統(tǒng)后才可對系統(tǒng)進行操作,支持通過Web頁面進行系統(tǒng)的關閉/啟動、snort規(guī)則查看/刪除/添加,iptables規(guī)則查看/刪除/添加,管理員的基本信息管理等。所有管理員添加的規(guī)則信息和聯動模塊保存的信息都保存在數據庫中,可以說數據庫就是聯動模塊和Web管理模塊之間的接口。圖3-2為Web管理部分業(yè)務流程圖。圖3-1聯動部分業(yè)務流程圖圖3-2Web管理部分業(yè)務流程圖3.2可行性分析為了確保本系統(tǒng)的可行性,本文對以下三個方面進行了分析:=1\*GB2⑴技術可行性本系統(tǒng)核心代碼采用Java語言編寫,數據庫使用MySQL,前臺界面使用JSP。這些都是廣泛使用的技術和軟件,據有較好的跨平臺性和可靠性。=2\*GB2⑵經濟可行性聯動使用的入侵檢測系統(tǒng)是輕量級的snort,防火墻采用Ubuntu自帶iptables防火墻。snort和iptables都是開源的免費的,但是它們卻具備商業(yè)安全軟件才具備大部分功能,這樣很大程度的降低了系統(tǒng)的開發(fā)成本。=3\*GB2⑶操作可行性系統(tǒng)使用的聯動軟件都是占用系統(tǒng)資源較少的,一般的PC機就可以當做運行平臺,不需要購買專用服務器。4總體設計4.1系統(tǒng)結構設計本系統(tǒng)主要分為以下幾個模塊:管理員登入、管理員信息管理、聯動響應模塊、攻擊統(tǒng)計圖、郵件通知、系統(tǒng)啟動和關閉、事件查看、snort規(guī)則管理、iptables規(guī)則管理。=1\*GB2⑴管理員登入用戶必須登入后才能對系統(tǒng)進行操作,并且系統(tǒng)會記錄下管理員的登入時間。=2\*GB2⑵管理員信息管理初級網絡工程師和中級網絡工程師級別的管理員只能對自己的基本信息進行修改,高級網絡工程師級別的管理員能夠修改所有管理員的信息,也能添加新的管理員或刪除已有的管理員。=3\*GB2⑶聯動響應模塊該模塊實時的監(jiān)測snort的告警日志,如果有新的攻擊發(fā)生,就會在數據庫中記錄,并生成規(guī)則,調用iptables阻斷攻擊。被阻斷的攻擊源地址直到管理員手動解閉后才能正常與本機通信。=4\*GB2⑷攻擊統(tǒng)計圖生成該模塊從數據庫中的Alert表獲得攻擊事件,統(tǒng)計不同協(xié)議類型的攻擊的數目。然后通過JFreeChart包來生成餅狀圖,直觀的展示了攻擊事件的類型和比例。=5\*GB2⑸郵件通知當有攻擊發(fā)生時,系統(tǒng)會發(fā)送郵件通知管理員。如果管理員沒有登入系統(tǒng),管理員可以通過手機郵件查看攻擊的信息。=6\*GB2⑹系統(tǒng)啟動和關閉管理員可以通過該模塊來啟動或者關閉IPS系統(tǒng)。=7\*GB2⑺事件查看通過該模塊管理員能夠查看保存在數據庫中的攻擊事件和響應事件,并且通過可以解閉攻擊地址,使得具有該地址的數據包不會被iptables阻止。=8\*GB2⑻snort規(guī)則管理管理員可以通過該模塊,對snort規(guī)則進行增加、刪除和查看。=9\*GB2⑼iptables規(guī)則管理管理員可以通過該模塊,對iptablest規(guī)則進行增加、刪除和查看。系統(tǒng)功能結構如圖4-1所示。圖4-1系統(tǒng)功能結構圖4.2數據庫設計4.2.1概念設計概念模型是對真實世界中問題的事件描述,它是面向現實世界的數據模型,E-R圖就是一種典型概念模型。圖4-2至圖4-6是各個數據表的實體圖。=1\*GB2⑴管理員employee的實體圖圖4-2管理員信息表employee的實體圖=2\*GB2⑵snort告警日志信息表alert的實體圖圖4-3snort告警日志信息表alert的實體圖=3\*GB2⑶iptables響應事件信息表iptable_prevent的實體圖圖4-4Iptable響應事件信息表iptable_prevent的實體圖=4\*GB2⑷snort規(guī)則表snort_rule的實體圖圖4-5snort規(guī)則表snort_rule的實體圖=5\*GB2⑸iptables規(guī)則表iptables_rule的實體圖圖4-6iptables規(guī)則表iptables_rule的實體圖=6\*GB2⑹系統(tǒng)總體E-R圖圖4-7系統(tǒng)總體E-R圖4.2.2邏輯設計邏輯結構設計是把概念設計轉化為與選用的數據庫管理系統(tǒng)支持的數據模型的邏輯結構。具體表現為表的設計,根據實體圖,可以得到下列表:=1\*GB2⑴管理員信息表employee管理員信息表employee是用來保存管理員的基本信息。結構如表4-1所示。表4-1employee的結構字段表代號字段名字段類型是否為主鍵employeeID管理員編號int(11)是employeeName管理員姓名varchar(20)否employeeSex管理員性別int否employeeBirth管理員生日date否employeePhone管理員電話varchar(20)否employeePlace管理員地址varchar(50)否joinTime登入時間date否password登入密碼varchar(20)否employeeEmail管理員郵箱varchar(50)否authority權限Int否=2\*GB2⑵snort報警日志信息表alertsnort報警日志信息表alert是用來保存聯動模塊分析snort報警日志得到的攻擊事件的基本信息。結構如表4-2所示。表4-2alert的結構字段表代號字段名字段類型是否為主鍵alertid報警編號varchar(50)是fromaddress源地址varchar(50)否toaddress目的地址varchar(50)否alertmsg攻擊提示varchar(100)否protocol協(xié)議名稱varchar(50)否alerttime報警時間varchar(50)否priority報警級別varchar(50)否state是否阻止varchar(50)否=3\*GB2⑶iptables響應事件信息表iptable_preventiptables響應事件信息表iptable_prevent是用來保存聯動模塊生成的響應事件的基本信息。結構如表4-3所示。表4-3iptable_prevent的結構字段表代號字段名字段類型是否為主鍵preventid阻止編號int是(自動增加)alertid報警編號varchar(50)外鍵preventtime阻止時間date否preventmsg阻止信息varchar(100)否=4\*GB2⑷snort規(guī)則表snort_rulesnort規(guī)則表snort_rule是用來保存管理員添加的snort規(guī)則的基本信息。結構如表4-4所示。表4-4snort_rule的結構字段表代號字段名字段類型是否為主鍵sidsnort規(guī)則idint是(自動增加)rule_header規(guī)則頭text否rule_action規(guī)則動作text否add_time添加時間date否employeeID添加者idvarchar(50)外鍵rule_msg規(guī)則描述varchar(50)否=5\*GB2⑸iptables規(guī)則表iptables_ruleiptables規(guī)則表iptables_rule是用來保存管理員添加的iptables規(guī)則基本信息。結構如表4-5所示。表4-5iptables_rule的結構字段表代號字段名字段類型是否為主鍵idiptables規(guī)則idint是(自動增加)rule規(guī)則體text否add_time添加時間date否employeeID添加者idvarchar(50)外鍵rule_msg規(guī)則描述varchar(50)否5系統(tǒng)實現5.1系統(tǒng)開發(fā)環(huán)境表5-1系統(tǒng)運行環(huán)境及開發(fā)工具類型軟件版本操作系統(tǒng)LinuxUbuntu11.10Java運行環(huán)境OpenJDK1.6.0_27WebServerTomcat7.0瀏覽器火狐10.4.2入侵檢測系統(tǒng)snort-1防火墻iptables1.4.17開發(fā)工具EclipseEclipseIDEforJavaEEDevelopers數據庫MySQL5.2.6虛擬機VmwareWorkstation10.0.1本系統(tǒng)的運行平臺是VmwareWorkstation虛擬機中安裝的Ubuntu系統(tǒng),所有的開發(fā)都是在Ubuntu系統(tǒng)下完成并測試的。Ubuntu是一個新興的Linux系統(tǒng),但是它卻能夠從眾多的Linux發(fā)行版本中脫穎而出,主要是因為它的四個優(yōu)點:便利化、國際化、免費性、安全性[13]。本系統(tǒng)使用Eclipse開發(fā),這是一款功能強大的開發(fā)環(huán)境,可以集成各種插件來滿足開發(fā)者的需求。它同時也是一款開源的、免費的的開發(fā)平臺[14]。5.2系統(tǒng)主頁面IPS系統(tǒng)主頁面是管理員登入系統(tǒng)后的頁面,它包括的主要內容有:管理員基本信息顯示、IPS系統(tǒng)啟動和關閉、攻擊統(tǒng)計餅狀圖顯示等內容。系統(tǒng)主頁面運行效果如圖5-1所示。圖5-1系統(tǒng)主頁面5.3管理員登入模塊管理員登入模塊是系統(tǒng)安全運行的保障,只有經過登入驗證的用戶才可以對系統(tǒng)進行操作。用戶填入賬號和密碼,并點擊“登入”按鈕,系統(tǒng)將輸入的賬號和密碼交給Javascript進行登入驗證,判斷用戶輸入的內容是否為空。如果賬號或密碼為空,彈出用戶名或密碼為空的警告;如果賬號和密碼不為空,就將賬號和密碼傳給LoginServlet。LoginServlet通過調用數據庫操作類查詢數據庫中的表employee,判斷管理員是否存在。如果用戶存在,就跳轉到系統(tǒng)主頁面;不存在,則返回登入頁面。Login.jsp中完成收集用戶信息的關鍵代碼如下:<formaction="LoginServlet"><divclass="row-fluid"><h1>ips管理系統(tǒng)</h1><p><label>帳 號:<inputtype="text"id="uid"name="uid"value="請輸入帳號"onfocus="deleteUser()"onblur="showUser()"/></label></p><p><label>密 碼:<inputtype="password"id="pwd"name="pwd"/></label></p><pclass="pcode"></p><pclass="tip"> <%Stringmsg=(String)request.getSession().getAttribute("msg");%><%if(msg!=null){%><%=msg%><%}%></p><hr/><inputtype="submit"value="登錄"class="btnbtn-primarybtn-largelogin"onclick="returncheck()"/> <inputtype="reset"value="取消"class="btnbtn-large"/></div></form>Login.jsp中完成判斷賬號和密碼是否為空的關鍵代碼如下:<scripttype="text/javascript">functioncheck(){ varuid=document.getElementById("uid").value; varpwd=document.getElementById("pwd").value;if($('#uid').val()==""||$('#pwd').val()==""||$('#code').val()==""){$('.tip').html('用戶名或密碼不可為空!') returnfalse; }else{returntrue;}}functiondeleteUser(){ varv=document.getElementById("uid"); if(v.value=="請輸入帳號"){ v.value=""; }}functionshowUser(){ varv=document.getElementById("uid"); if(v.value==""){ v.value="請輸入帳號"; }}</script>LoginServlet.java中完成查詢用戶名和密碼是否正確存在的關鍵代碼如下: protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{ //防止亂碼 request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("charset=utf-8;text/html"); //從登入界面獲得賬號和密碼 Stringuid=request.getParameter("uid"); Stringpwd=request.getParameter("pwd"); //實例化數據庫操作類EmployeeDAOemployeeDAO=EmployeeDAOFactory.getEmployeeDAOInstance(); //從數據中查詢用戶是否存在 Employeeemployee=employeeDAO.findEmployeeByID(uid); //判斷返回結構結構是否為空 if(employee.getEmployeeid()!=null&&employee.getPassword()!=null){ //判斷用戶密碼和賬號是否正確 if(employee.getEmployeeid().equals(uid)&&employee.getPassword().equals(pwd)){ //將用戶的基本信息存入session中 request.getSession().setAttribute("employee",employee); //更新用戶的登入時間 employee.setJointime(newDate()); employeeDAO.updateEmployee(employee); request.getRequestDispatcher("Index.jsp").forward(request,response);//跳轉到主頁面頁面 }else{ //如果賬號和密碼錯誤返回登入頁面并提示錯誤信息 Stringmsg="用戶名或密碼錯誤"; request.getSession().setAttribute("msg",msg); request.getRequestDispatcher("Login.jsp").forward(request,response);//跳轉到登入頁面 }}else{ //如果賬號和密碼不存在返回登入頁面并提示錯誤信息 Stringmsg="用戶名不存在"; request.getSession().setAttribute("msg",msg); request.getRequestDispatcher("Login.jsp").forward(request,response);//跳轉到登入頁面 } }5.4管理員信息管理模塊管理員信息管理模塊的功能包括:添加管理員、修改管理員信息、查看管理員信息和刪除管理員四個功能。管理員增加頁面是添加新管理員的窗口,它收集新用戶的基本信息,比如賬號和密碼等。然后交給JavaScript驗證添加的基本信息是否合法,然后才通過Add_EmployeeServlet插入數據庫的employee表中,如果添加成功會在頁面中提示“添加成功”。管理員增加頁面如圖5-2所示。圖5-2管理員增加頁面Add_Employee.jsp中完成對新用戶信息的格式驗證的關鍵代碼如下:<scripttype="text/javascript">functionisEmail(strEmail){//檢查郵箱格式是否正確 if(strEmail.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/)!=-1) returntrue; else alert("郵箱格式錯誤");} functionisSame(){//檢查兩次輸入密碼是否一致 varpassword1,password2; password1=document.getElementById("password1").value;password2=document.getElementById("password2").value; if(password1==null||password2==null){ alert("密碼不能為空"); returnfalse;} if(!(password1==password2)){ alert("兩次密碼不一致,請重新輸入!"); returnfalse;} returntrue;}functiondeleteEmployeeid(){ varv=document.getElementById("employeeid"); if(v.value=="格式如:2010211262"){ v.value=""; }}functiondeleteEmployeebirth(){ varv=document.getElementById("employeebirth"); if(v.value=="格式為:1993-01-23"){ v.value=""; }}functiondeleteEmployeeplace(){ varv=document.getElementById("employeeplace"); if(v.value=="填寫省和市"){ v.value=""; }}functiondeleteEmployeeemail(){ varv=document.getElementById("employeeemail"); if(v.value=="格式為:******@***.com"){ v.value=""; }}</script>管理員信息修改頁面是修改用戶信息的窗口,用戶可以通過該頁面修改自己的密碼等信息。管理員信息修改頁面如圖5-3所示。圖5-3管理員信息修改頁面Update_EmployeeServlet.java中實現用戶信息修改的關鍵代碼:protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{ //轉碼 request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("charset=utf-8;text/html"); //實例化雇員類 Employeeemployee=newEmployee(); //得到要修改的用戶信息 employee.setEmployeeid(request.getParameter("employeeid"));employee.setEmployeename(newString(request.getParameter("employeename").getBytes("ISO8859-1"),"utf-8")); employee.setAuthority(Integer.parseInt(request.getParameter("authority"))); employee.setEmployeebirth(request.getParameter("employeebirth")); employee.setEmployeephone(request.getParameter("employeephone")); employee.setEmployeesex(Integer.parseInt(request.getParameter("employeesex")));employee.setEmployeeplace(newString(request.getParameter("employeeplace").getBytes("ISO8859-1"),"utf-8")); employee.setPassword(request.getParameter("password1")); employee.setEmployeeemail(request.getParameter("employeeemail")); employee.setJointime(newDate()); //連接數據庫操作類 EmployeeDAOemployeeDAO=EmployeeDAOFactory.getEmployeeDAOInstance(); //修改數據庫中的用戶信息 booleanflag=employeeDAO.updateEmployee(employee); if(flag){ Stringupdatemsg="修改成功!"; request.setAttribute("updatemsg",updatemsg); request.getSession().setAttribute("employee",employee); }else{ Stringupdatemsg="修改失?。?; request.setAttribute("updatemsg",updatemsg); } request.getRequestDispatcher("Template/ShowInfo.jsp").forward(request,response);//跳轉到主頁面頁面 }管理員信息查看頁面是查看管理員的信息的窗口,也是刪除管理員的窗口。管理員可以通過該頁面得到管理員的詳細信息或者刪除管理員。管理員信息查看頁面如圖5-4所示。圖5-4管理員信息查看頁面Show_EmployeeServlet.java中實現管理員信息查看的關鍵代碼:protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{ //分頁功能 intcurrentPage=0; StringcurrentPageStr=request.getParameter("currentPage"); if(currentPageStr==null||"".equals(currentPageStr)){ currentPage=1; }else{ currentPage=Integer.parseInt(currentPageStr); } //連接數據庫EmployeeDAOemployeeDAO=EmployeeDAOFactory.getEmployeeDAOInstance(); Pagepage=PageUtil.createPage(10,employeeDAO.findAllCount(),currentPage); //查詢所有管理員信息帶分頁的 List<Employee>employeelist=employeeDAO.findAllEmployee(page); //將查詢到信息保存在session request.getSession().setAttribute("employeelist",employeelist); request.getSession().setAttribute("page",page); request.getRequestDispatcher("Template/Show_Employee.jsp").forward(request,response);//跳轉到顯示所有員工頁面 }Delete_EmployeeServlet.java中實現刪除管理員的關鍵代碼:protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{ //得到要刪除管理員的賬號 Stringemployeeid=request.getParameter("employeeid"); //連接數據庫 EmployeeDAOemployeeDAO=EmployeeDAOFactory.getEmployeeDAOInstance();//刪除管理員數據庫操作 booleanflag=employeeDAO.deleteEmployee(employeeid); if(flag){ Stringdeletemsg="刪除成功!"; request.setAttribute("deletemsg",deletemsg); }else{ Stringdeletemsg="刪除失??!"; request.setAttribute("deletemsg",deletemsg); } request.getRequestDispatcher("Template/Show_Employee.jsp").forward(request,response); }5.4聯動響應模塊聯動響應模塊是snort和iptables能夠相互聯動的保障。通過Java編寫的線程來實時監(jiān)測snort的報警日志,當有新的攻擊被檢測到時,聯動模塊會向iptables中插入新的規(guī)則。DBConnection.java中實現連接數據庫的關鍵代碼:publicclassDBConnection{ privatestaticfinalStringDBDRIVER="com.mysql.jdbc.Driver"; privatestaticfinalStringDBURL="jdbc:mysql://localhost:3306/bishe"; privatestaticfinalStringDBUSER="root"; privatestaticfinalStringDBPASSWORD="000000"; publicstaticConnectiongetConnection(){ Connectionconn=null; //聲明一個連接對象 try{ Class.forName(DBDRIVER); //注冊驅動 conn=DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD); }catch(ClassNotFoundExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }catch(SQLExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } returnconn; }5.5攻擊統(tǒng)計圖模塊攻擊統(tǒng)計圖模塊通過查詢數據庫中各種協(xié)議類型的數目,在JSP頁面中生成一個餅狀圖,直觀的顯示各種協(xié)議類型攻擊的比例。這個模塊是在JFreeChart包的基礎上開發(fā)的,通過調用包中的方法實現畫餅狀圖。運行結果如圖5-5所示。Chart.jsp中實現生成餅狀圖的關鍵代碼如下:DefaultPieDatasetdata=newDefaultPieDataset();LogDAOlogDAO=LogDAOFactory.getLogDAOInstance();inttotalCount=logDAO.findAllCount();//攻擊總數Listlist=logDAO.findAllLog();Loglog=null;inticmpCount=0;intudpCount=0;inttcpCount=0; intother=0;for(inti=0;i<list.size();i++){log=(Log)list.get(i); //統(tǒng)計各種攻擊類型的個數 if(log.getProtocol().equals("ICMP")){ icmpCount++; }elseif(log.getProtocol().equals("UDP")){ udpCount++; }elseif(log.getProtocol().equals("TCP")){ tcpCount++; }else{ other++;} } //數據初始化data.setValue("TCP",tcpCount);data.setValue("UDP",udpCount);data.setValue("ICMP",icmpCount);data.setValue("other",other);//HttpSessionsession=request.getSession();PiePlot3Dplot=newPiePlot3D(data);//生成一個3D餅圖JFreeChartchart=newJFreeChart("",JFreeChart.DEFAULT_TITLE_FONT,plot,true);chart.setBackgroundPaint(java.awt.Color.white);//可選,設置圖片背景色chart.setTitle("攻擊統(tǒng)計");//可選,設置圖片標題plot.setToolTipGenerator(newStandardPieToolTipGenerator());StandardEntityCollectionsec=newStandardEntityCollection();ChartRenderingInfoinfo=newChartRenderingInfo(sec);PrintWriterw=newPrintWriter(out);//輸出MAP信息//500是圖片長度,300是圖片高度 Stringfilename=ServletUtilities.saveChartAsJPEG(chart,500,300,info,session);ChartUtilities.writeImageMap(w,"map0",info,false);StringgraphURL=request.getContextPath()+"/servlet/DisplayChart?filename="+filename;%><PALIGN="CENTER"><imgsrc="<%=graphURL%>"width=500height=300border
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- CCAA - 2014年09月建筑施工領域專業(yè)答案及解析 - 詳解版(70題)
- 建筑工地安全責任協(xié)議2025
- 養(yǎng)老院消防安全制度
- 養(yǎng)老院安全巡查制度
- 企業(yè)內部信息傳播制度
- 2025年高考(上海卷)歷史真題(學生版+解析版)
- 系統(tǒng)結構自考通簡答
- 灌區(qū)管理工10S執(zhí)行考核試卷含答案
- 我國上市公司環(huán)境信息披露:現狀、問題與突破路徑
- 貨裝值班員安全實踐測試考核試卷含答案
- 焊工獎罰管理辦法
- 2024版電網典型設計10kV配電站房分冊
- 《SPSS與AMOS在中介效應與調節(jié)效應分析中的應用》
- 家屬院停車管理暫行辦法
- 單位開展女神節(jié)活動方案
- 錫圓電子科技有限公司高端半導體封測項目環(huán)評資料環(huán)境影響
- T/CGAS 031-2024城鎮(zhèn)燃氣加臭技術要求
- T/CGAS 026.2-2023瓶裝液化石油氣管理規(guī)范第2部分:平臺建設
- 《新能源汽車電力電子技術》電子教案-新能源汽車電力電子技術.第一版.電子教案
- 金屬非金屬礦山開采方法手冊
- GB/T 45356-2025無壓埋地排污、排水用聚丙烯(PP)管道系統(tǒng)
評論
0/150
提交評論