版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、畢業(yè)設(shè)計(jì)(論文)簡易Windows防火墻的設(shè)計(jì)與實(shí)現(xiàn)論文作者姓名:申請學(xué)位專業(yè):申請學(xué)位類別:指導(dǎo)教師姓名職稱:論文提交日期:簡易Windows防火墻的設(shè)計(jì)與實(shí)現(xiàn)摘 要當(dāng)今時代是飛速開展的信息時代,計(jì)算機(jī)與信息處理技術(shù)日漸成熟。隨著Internet和計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的蓬勃開展,網(wǎng)絡(luò)平安問題現(xiàn)在已經(jīng)得到普遍重視。網(wǎng)絡(luò)防火墻系統(tǒng)就是網(wǎng)絡(luò)平安技術(shù)在實(shí)際中的應(yīng)用之一。本設(shè)計(jì)實(shí)現(xiàn)的防火墻采用IP過濾鉤子驅(qū)動技術(shù),過濾鉤子驅(qū)動是內(nèi)核模式驅(qū)動,它實(shí)現(xiàn)一個鉤子過濾回調(diào)函數(shù),并用系統(tǒng)提供的IP過濾驅(qū)動注冊它,IP過濾驅(qū)動隨后使用這個過濾鉤子來決定如何處理進(jìn)出系統(tǒng)的數(shù)據(jù)包。本防火墻由以下幾個模塊組成:過濾規(guī)那么添加
2、模塊,過濾規(guī)那么顯示模塊,過濾規(guī)那么存儲模塊,文件儲存模塊,安裝卸載規(guī)那么模塊,IP封包過濾驅(qū)動功能模塊。用戶只需要通過主界面菜單和按鈕就可以靈活地操作防火墻,有效地保護(hù)Windows系統(tǒng)的平安。關(guān)鍵詞:防火墻;過濾鉤子;過濾驅(qū)動;包過濾The Design and Implement of Simple Windows FirewallAbstractThe current era is a rapid development of information age. The technologies of computer and information processing become
3、maturity. With the Internet and computer network technology to be flourishing, network security that has been widely concerned. Firewall system is one of the security technologies that used in the network. This design has implemented a firewall adopting the IP filter-hook driver technology; its driv
4、en through the kernel mode, the filter-hook callback function has been implemented and the filter-hook driver is registered by the IP filter driver which is provided by system. The IP filter driver uses the filter-hook to handle the data packets in and out. The firewall is composed of the following
5、modules: adding filter rules module, display filter rules module, storage filter rules module, storage file module, installation and unloading rules module, IP packet driver module. Users can finish the operation by using main menu and button and protect the system effectively.Key words: Firewall; F
6、ilter-Hook; Filter Driver; Packet Filtering目 錄論文總頁數(shù):21頁 TOC o 1-3 h z u HYPERLINK l _Toc178740814 1引言 PAGEREF _Toc178740814 h 1 HYPERLINK l _Toc178740815 1.1課題背景 PAGEREF _Toc178740815 h 1 HYPERLINK l _Toc178740816 1.2本課題研究意義 PAGEREF _Toc178740816 h 1 HYPERLINK l _Toc178740817 1.3本課題研究方法 PAGEREF _Toc
7、178740817 h 1 HYPERLINK l _Toc178740818 2防火墻概述 PAGEREF _Toc178740818 h 1 HYPERLINK l _Toc178740819 2.1防火墻的定義 PAGEREF _Toc178740819 h 1 HYPERLINK l _Toc178740820 2.2防火墻的根本策略 PAGEREF _Toc178740820 h 2 HYPERLINK l _Toc178740821 2.3包過濾防火墻 PAGEREF _Toc178740821 h 2 HYPERLINK l _Toc178740822 2.3.1 數(shù)據(jù)包 PAG
8、EREF _Toc178740822 h 2 HYPERLINK l _Toc178740823 2.3.2 包過濾防火墻的工作原理 PAGEREF _Toc178740823 h 2 HYPERLINK l _Toc178740824 3開發(fā)工具 PAGEREF _Toc178740824 h 3 HYPERLINK l _Toc178740825 3.1Visual C+ 6.0 PAGEREF _Toc178740825 h 3 HYPERLINK l _Toc178740826 3.2VSS PAGEREF _Toc178740826 h 3 HYPERLINK l _Toc17874
9、0827 4防火墻系統(tǒng)構(gòu)成 PAGEREF _Toc178740827 h 3 HYPERLINK l _Toc178740828 4.1需求分析 PAGEREF _Toc178740828 h 3 HYPERLINK l _Toc178740829 4.2設(shè)計(jì)思路 PAGEREF _Toc178740829 h 4 HYPERLINK l _Toc178740830 4.3功能模塊構(gòu)成 PAGEREF _Toc178740830 h 4 HYPERLINK l _Toc178740831 4.4功能模塊介紹 PAGEREF _Toc178740831 h 4 HYPERLINK l _Toc
10、178740832 4.4.1 過濾規(guī)那么添加刪除功能模塊 PAGEREF _Toc178740832 h 4 HYPERLINK l _Toc178740833 4.4.2 過濾規(guī)那么顯示功能模塊 PAGEREF _Toc178740833 h 4 HYPERLINK l _Toc178740834 4.4.3 過濾規(guī)那么存儲功能模塊 PAGEREF _Toc178740834 h 5 HYPERLINK l _Toc178740835 4.4.4 文件存儲功能模塊 PAGEREF _Toc178740835 h 5 HYPERLINK l _Toc178740836 4.4.5 文件載入功
11、能模塊 PAGEREF _Toc178740836 h 5 HYPERLINK l _Toc178740837 4.4.6 安裝卸載功能摸塊 PAGEREF _Toc178740837 h 5 HYPERLINK l _Toc178740838 4.4.7 IP封包過濾驅(qū)動功能模塊 PAGEREF _Toc178740838 h 5 HYPERLINK l _Toc178740839 5防火墻設(shè)計(jì) PAGEREF _Toc178740839 h 5 HYPERLINK l _Toc178740840 5.1程序關(guān)鍵類 PAGEREF _Toc178740840 h 5 HYPERLINK l
12、_Toc178740841 5.1.1 應(yīng)用程序類CFireWallAPP PAGEREF _Toc178740841 h 5 HYPERLINK l _Toc178740842 5.1.2 主框架類CMainFrame PAGEREF _Toc178740842 h 5 HYPERLINK l _Toc178740843 5.1.3 文檔類CFireWallDoc PAGEREF _Toc178740843 h 6 HYPERLINK l _Toc178740844 5.1.4 視圖類CFireWallView PAGEREF _Toc178740844 h 7 HYPERLINK l _T
13、oc178740845 5.1.5 _RuleInfo類 PAGEREF _Toc178740845 h 7 HYPERLINK l _Toc178740846 5.2詳細(xì)設(shè)計(jì) PAGEREF _Toc178740846 h 8 HYPERLINK l _Toc178740847 5.2.1 主界面 PAGEREF _Toc178740847 h 8 HYPERLINK l _Toc178740848 5.2.2 添加過濾規(guī)那么 PAGEREF _Toc178740848 h 8 HYPERLINK l _Toc178740849 5.2.3 刪除過濾規(guī)那么 PAGEREF _Toc17874
14、0849 h 11 HYPERLINK l _Toc178740850 5.3驅(qū)動程序設(shè)計(jì) PAGEREF _Toc178740850 h 13 HYPERLINK l _Toc178740851 5.3.1 簡介 PAGEREF _Toc178740851 h 13 HYPERLINK l _Toc178740852 5.3.2 結(jié)構(gòu)圖 PAGEREF _Toc178740852 h 14 HYPERLINK l _Toc178740853 5.3.3 該驅(qū)動的優(yōu)點(diǎn) PAGEREF _Toc178740853 h 14 HYPERLINK l _Toc178740854 5.3.4 本程序的
15、驅(qū)動設(shè)計(jì) PAGEREF _Toc178740854 h 14 HYPERLINK l _Toc178740855 6程序測試 PAGEREF _Toc178740855 h 16 HYPERLINK l _Toc178740856 結(jié) 論 PAGEREF _Toc178740856 h 18 HYPERLINK l _Toc178740857 參考文獻(xiàn) PAGEREF _Toc178740857 h 19 HYPERLINK l _Toc178740858 致 謝 PAGEREF _Toc178740858 h 20 HYPERLINK l _Toc178740859 聲 明 PAGEREF
16、 _Toc178740859 h 21引言課題背景防火墻是一種隔離技術(shù),是一類防范措施的總稱,利用它使得內(nèi)部網(wǎng)絡(luò)與Internet或者其他外部網(wǎng)絡(luò)之間相互隔離,通過限制網(wǎng)絡(luò)互訪來保護(hù)內(nèi)部網(wǎng)絡(luò)。防火墻是建立在內(nèi)部網(wǎng)絡(luò)與外部網(wǎng)絡(luò)之間的唯一平安通道,簡單的可以只用路由器實(shí)現(xiàn),復(fù)雜的可以用主機(jī)甚至一個子網(wǎng)來實(shí)現(xiàn),它可以在IP層設(shè)置屏障,也可以用應(yīng)用軟件來阻止外來攻擊。通過制定相應(yīng)的平安規(guī)那么,可以允許符合條件的數(shù)據(jù)進(jìn)入,同時將不符合條件的數(shù)據(jù)拒之門外,這樣就可以阻止非法用戶的侵入,保證內(nèi)部網(wǎng)絡(luò)的平安。本課題研究意義隨著計(jì)算機(jī)技術(shù)和網(wǎng)絡(luò)技術(shù)的開展,計(jì)算機(jī)網(wǎng)絡(luò)給人們帶來了很多便利,于此同時網(wǎng)絡(luò)平安的問題也
17、伴隨著網(wǎng)絡(luò)技術(shù)的開展而日趨嚴(yán)重。使用防火墻能很好的提高系統(tǒng)的平安性,減少系統(tǒng)受到網(wǎng)絡(luò)平安方面的威脅。本畢業(yè)設(shè)計(jì)選擇開發(fā)一個Windows下的防火墻,它能夠?qū)W(wǎng)絡(luò)IP數(shù)據(jù)包按照用戶的設(shè)置進(jìn)行過濾。通過此防火墻的開發(fā)鍛煉了學(xué)生的實(shí)際動手能力對以后的學(xué)習(xí)和工作能力的培養(yǎng)具有重要意義。本課題研究方法本設(shè)計(jì)是使用VC+ 6.0的開發(fā)環(huán)境,運(yùn)用IP過濾鉤子驅(qū)動技術(shù)設(shè)計(jì)和實(shí)現(xiàn)的。本次畢業(yè)設(shè)計(jì)應(yīng)首先分析防火墻的相關(guān)功能,結(jié)合本次畢業(yè)設(shè)計(jì)的相關(guān)要求寫出需求分析;其次,綜合運(yùn)用以前所學(xué)的相關(guān)知識,在設(shè)計(jì)中以需求分析為根底,寫出系統(tǒng)開發(fā)方案、實(shí)現(xiàn)流程及相關(guān)問題的實(shí)現(xiàn)方法;同時,在開發(fā)設(shè)計(jì)與實(shí)現(xiàn)中,要保存好相關(guān)的設(shè)計(jì)
18、文檔。防火墻概述防火墻的定義防火墻是指設(shè)置在不同網(wǎng)絡(luò)如可信任的企業(yè)內(nèi)部網(wǎng)和不可信的公共網(wǎng)或網(wǎng)絡(luò)平安域之間的一系列部件的組合。它可通過監(jiān)測、限制、更改跨越防火墻的數(shù)據(jù)流,盡可能地對外部屏蔽網(wǎng)絡(luò)內(nèi)部的信息、結(jié)構(gòu)和運(yùn)行狀況,以此來實(shí)現(xiàn)網(wǎng)絡(luò)的平安保護(hù)。在邏輯上,防火墻是一個別離器,一個限制器,也是一個分析器,有效地監(jiān)控了內(nèi)部網(wǎng)和Internet之間的任何活動,保證了內(nèi)部網(wǎng)絡(luò)的平安。防火墻是設(shè)置在被保護(hù)網(wǎng)絡(luò)和外部網(wǎng)絡(luò)之間的一道屏障,實(shí)現(xiàn)網(wǎng)絡(luò)的平安保護(hù),以防止發(fā)生不可預(yù)測的、潛在破壞性的侵入。防火墻本身具有較強(qiáng)的抗攻擊能力,它是提供信息平安效勞、實(shí)現(xiàn)網(wǎng)絡(luò)和信息平安的根底設(shè)施。防火墻的根本策略按照美國國家計(jì)
19、算機(jī)平安協(xié)會NCSA的建議,制定平安方案必須包括效勞訪問策略和防火墻設(shè)計(jì)謀略。效勞訪問策略應(yīng)包括控制用戶對某些Internet效勞的訪問。另外,用戶也需要限制訪問的方式,如PPP或SLIP。在建立效勞訪問政策時,需要注意兩個方式:1、不允許從Internet上訪問到用戶的網(wǎng)絡(luò),但是允許個別用戶設(shè)定得到的網(wǎng)絡(luò)訪問有限Internet站點(diǎn)。但必須進(jìn)行地址偽裝;2、允許有限的從Internet上訪問到公司網(wǎng)絡(luò),如從Internet上只能訪問公司的WWW和FTP效勞器。作為防火墻策略,就是定義實(shí)現(xiàn)效勞訪問策略的具體規(guī)那么。在實(shí)現(xiàn)防火墻策略時,用戶可以采用以下兩個原那么之一:1、除了允許的事件之外,拒絕
20、其它的任何事件。2、除了拒絕的事件之外,允許其它的任何事件。制定的策略是由一條條規(guī)那么構(gòu)成的,防火墻的規(guī)那么可分為三條鏈:輸入鏈、輸出鏈和轉(zhuǎn)發(fā)鏈。包過濾防火墻數(shù)據(jù)包數(shù)據(jù)包是指IP網(wǎng)絡(luò)消息。IP標(biāo)準(zhǔn)定義了在網(wǎng)上兩臺計(jì)算機(jī)之間發(fā)送的消息的結(jié)構(gòu).結(jié)構(gòu)上,一個包包含了一個信息頭和應(yīng)被傳送數(shù)據(jù)的一段消息體。Linux中包含的IP防火墻機(jī)制3種IP消息類型:ICMP(Internet控制消息協(xié)議)、UDP(用戶數(shù)據(jù)報(bào)協(xié)議)和 TCP(傳輸控制協(xié)議)。所有的IP包頭包含了源、目的IP地址、IP協(xié)議消息類型。包頭里根據(jù)協(xié)議類型還包括了不同的字段。ICMP數(shù)據(jù)包包含了一個類型字段,用來標(biāo)識控制或狀態(tài)消息類型。U
21、DP和TCP包包含了源和目的效勞端口號。包過濾防火墻的工作原理采用這種技術(shù)的防火墻產(chǎn)品,通過在網(wǎng)絡(luò)中的適當(dāng)位置對數(shù)據(jù)包進(jìn)行過濾,根據(jù)檢查數(shù)據(jù)流中每個數(shù)據(jù)包的源地址、目的地址、所有的TCP端口號和TCP鏈路狀態(tài)等要素,然后依據(jù)一組預(yù)定義的規(guī)那么,以允許符合邏輯的數(shù)據(jù)包通過防火墻進(jìn)入到內(nèi)部網(wǎng)絡(luò),而將不符合邏輯的數(shù)據(jù)包加以刪除。因?yàn)槁酚善魍ǔ7植荚谟胁煌桨残枨蠛推桨膊呗缘木W(wǎng)絡(luò)的交界處,因此可以通過在路由器上使用包過濾在可能的情況下實(shí)現(xiàn)只允許授權(quán)網(wǎng)絡(luò)的數(shù)據(jù)進(jìn)入。在這些路由器上使用包過濾師一種比擬經(jīng)濟(jì)的在現(xiàn)有路由根底結(jié)構(gòu)上增加防火墻功能的機(jī)制。顧名思義,包過濾在路由過程中對指定包進(jìn)行過濾丟棄。對過濾的
22、判斷通常基于單個包的頭部所包含的內(nèi)容例如源地址,目的地址,協(xié)議,端口等。包過濾防火墻通常在操作系統(tǒng)內(nèi)部實(shí)現(xiàn),并且操作在IP網(wǎng)絡(luò)和傳輸協(xié)議層。它在對基于IP包頭信息實(shí)施過濾后,通過對包的路由作決策來保護(hù)系統(tǒng)。包過濾防火墻由一組接受或禁止規(guī)那么列表組成。這些規(guī)那么明確定義了哪個包將被允許或不允許通過網(wǎng)絡(luò)接口。防火墻規(guī)那么使用在上面描述的包頭字段來決定是否允許路由一個包通過,以到達(dá)它的目的,或那么無聲息的將包丟棄掉,或阻止包并向它的發(fā)送機(jī)器返回一個錯誤狀態(tài)。這些規(guī)那么是基于特定的網(wǎng)絡(luò)接口卡和主機(jī)IP地址、網(wǎng)絡(luò)層源和目的IP地址、傳輸層TCP和UDP效勞端口、TCP連接標(biāo)志、網(wǎng)絡(luò)層ICMP消息類型及這
23、些包是進(jìn)入的還是發(fā)出的。包過濾功能是所有的防火墻都具備的一個根本功能,實(shí)際上防火墻要完成的功能從根本上來說,就是要按照用戶的要求來控制網(wǎng)絡(luò)所流通的數(shù)據(jù)包,屏蔽那些無益的連接。開發(fā)工具Visual C+ 6.0Visual C+6.0 是微軟98 年推出的產(chǎn)品,它提供了強(qiáng)大的編譯能力以及良好的界面操作性。能夠?qū)indows 9x、Windows NT 以及Windows 2000 下的C+程序設(shè)計(jì)提供完善的編程環(huán)境。同時Visual C+6.0 對網(wǎng)絡(luò)、數(shù)據(jù)庫等方面的編程也都提供相應(yīng)的環(huán)境支持。VSS版本控制是工作組軟件開發(fā)中的重要方面,它能防止意外的文件喪失、允許反追蹤到早期版本、并能對版本
24、進(jìn)行分支、合并和管理。在軟件開發(fā)和您需要比擬兩種版本的文件或找回早期版本的文件時,源代碼的控制是非常有用的。 VSS可以同 Visual Basic、Visual C+、Visual J+、Visual InterDev、Visual FoxPro 開發(fā)環(huán)境以及 Microsoft Office 應(yīng)用程序集成在一起,提供了方便易用、面向工程的版本控制功能。Visual SourceSafe 可以處理由各種開發(fā)語言、創(chuàng)作工具或應(yīng)用程序所創(chuàng)立的任何文件類型。在提倡文件再使用的今天,用戶可以同時在文件和工程級進(jìn)行工作。Visual SourceSafe 面向工程的特性能更有效地管理工作組應(yīng)用程序開發(fā)
25、工作中的日常任務(wù)。防火墻系統(tǒng)構(gòu)成需求分析該防火墻的主要功能是實(shí)現(xiàn)包過濾,其他功能主要包括以下幾個方面。1、能設(shè)置過濾規(guī)那么,包括:IP地址、子網(wǎng)掩碼、端口號、協(xié)議。2、能添加刪除規(guī)那么。3、能將過濾規(guī)那么保存。4、能對過濾規(guī)那么進(jìn)行安裝和卸載操作,即:將規(guī)那么發(fā)送給IP過濾驅(qū)動或從IP過濾驅(qū)動中刪除規(guī)那么。5、能正確完整的顯示所添加的過濾規(guī)那么。設(shè)計(jì)思路根據(jù)程序的需求來完成功能和模塊化設(shè)計(jì)的思想,總體設(shè)計(jì)思路如下:任何程序都必須具有和用戶進(jìn)行信息交互的功能,因此用戶接口部必須考慮,根據(jù)功能要求,該局部應(yīng)具備:用戶操作的功能菜單、能對過濾規(guī)那么進(jìn)行設(shè)置、顯示規(guī)那么界面、添加規(guī)那么界面。這樣程序的
26、功能模塊應(yīng)該有:過濾規(guī)那么添加刪除功能模塊,過濾規(guī)那么顯示功能模塊,過濾規(guī)那么存儲功能模塊,文件儲存功能模塊,安裝卸載規(guī)那么功能模塊。功能模塊構(gòu)成功能模塊構(gòu)成如圖1。包過濾防火墻過濾規(guī)那么添加刪除功能模塊過濾規(guī)那么顯示功能模塊過濾規(guī)那么存儲功能模塊文件儲存功能模塊文件載入功能模塊安裝卸載功能模塊IP封包過濾驅(qū)動功能模塊圖1 功能模塊圖功能模塊介紹過濾規(guī)那么添加刪除功能模塊包過濾防火墻要進(jìn)行數(shù)據(jù)包過濾就需要按照用戶定義的規(guī)那么進(jìn)行包過濾,該功能模塊就是使用戶能夠添加或刪除過濾規(guī)那么。過濾規(guī)那么主要包括:源IP地址、子網(wǎng)掩碼、端口號,目的IP地址、子網(wǎng)掩碼、端口號,協(xié)議,以及對符合該規(guī)那么的數(shù)據(jù)包
27、是放行還是阻止進(jìn)行設(shè)置。然后將設(shè)置好的規(guī)那么添加到存儲功能模塊。過濾規(guī)那么顯示功能模塊該功能用于顯示用戶添加的規(guī)那么,能夠?qū)γ恳粭l規(guī)那么進(jìn)行刪除、安裝、卸載的操作,使防火墻過濾規(guī)那么能夠很詳細(xì)的顯示給用戶。過濾規(guī)那么存儲功能模塊該功能用于存儲用戶添加的過濾規(guī)那么,接受用戶對每一條規(guī)那么的操作,并按照用戶的操作將規(guī)那么進(jìn)行處理。如:安裝規(guī)那么,那么把用戶選擇的規(guī)那么安裝到IP過濾驅(qū)動,IP接收到此規(guī)那么后按照此規(guī)那么進(jìn)行數(shù)據(jù)包過濾。文件存儲功能模塊使用戶添加的過濾規(guī)那么能夠保存成文件的形式方便儲存,在用戶添加規(guī)那么后可以選擇某一條規(guī)那么進(jìn)行保存,防火墻會將該規(guī)那么保存為后綴名為.rul的文件,在
28、下次翻開防火墻的時候可以直接加載該規(guī)那么。文件載入功能模塊相對于文件儲存功能模塊,該功能是實(shí)現(xiàn)用戶可以導(dǎo)入一個后綴名為.rul的并且保存了有效規(guī)那么的文件。安裝卸載功能摸塊防火墻要過濾數(shù)據(jù)包,就需要將IP過濾驅(qū)動按照定義的規(guī)那么進(jìn)行過濾。用戶通過添加規(guī)那么將規(guī)那么存儲于防火墻的存儲功能模塊中,想要將規(guī)那么發(fā)送給IP過濾驅(qū)動,就需要對該規(guī)那么進(jìn)行安裝。安裝和卸載的功能就是將過濾規(guī)那么傳送給IP過濾驅(qū)動或是將已安裝的規(guī)那么從過濾驅(qū)動中刪除。IP封包過濾驅(qū)動功能模塊該功能模塊是整個包過濾防火墻的核心局部,IP封包過濾驅(qū)動能按照用戶定義的規(guī)那么對數(shù)據(jù)包做出阻止或是放行的選擇。防火墻設(shè)計(jì)程序關(guān)鍵類應(yīng)用程
29、序類CFireWallAPP每個MFC應(yīng)用程序都必須包括一個從CWinApp派生的應(yīng)用程序類,在本程序中的應(yīng)用程序類就是CFireWAllApp。應(yīng)用程序類構(gòu)成了應(yīng)用程序的主執(zhí)行線程,它封裝了一個Windows應(yīng)用程序的初始化、運(yùn)行和終止。主框架類CMainFrame主框架類CMainFrame構(gòu)成整個程序的框架,包括菜單、工具、按鈕等。它構(gòu)成了程序功能的主框架。下面列出了CmainFrame類中的主要方法和變量。class CMainFrame:public CFrameWndprotected:BOOL Installed;/規(guī)那么安裝標(biāo)志TRUE-已安裝,F(xiàn)ALSE-未安裝protect
30、ed: BOOL started;/開始過濾的標(biāo)志,TRUE-已開始,F(xiàn)ALSE-未開始TDriver filterDriver;/定義一個TDriver類的變量,TDriver ipFltDrv;/protected:BOOL AddFilterToFw();/AddFilterToFw完成將過濾鉤子安裝到防火墻的功能。/AFX_MSG(CMainFrame)afx_msg void OnAppExit();/退出程序afx_msg void OnButtonadd();/添加規(guī)那么按鈕afx_msg void OnButtondel();/刪除規(guī)那么按鈕afx_msg void OnBut
31、tonstart();/開始過濾按鈕afx_msg void OnButtonstop();/停止過濾按鈕afx_msg void OnButtonInstall();/安裝規(guī)那么afx_msg void OnButtonuninstall();/卸載規(guī)那么afx_msg void OnMenuAddRule();/添加規(guī)那么菜單afx_msg void OnMenuDelRule();/刪除規(guī)那么菜單afx_msg void OnMenuInstallRules();安裝菜單afx_msg void OnMenuUninstallRules();/卸載規(guī)那么菜單afx_msg void On
32、MenuStart();/開始過濾菜單afx_msg void OnMenuStop();/停止過濾菜單afx_msg void OnMenuSaveRules();/保存規(guī)那么菜單afx_msg void OnMenuLoadRules();/加載規(guī)那么菜單/AFX_MSG;在主框架類CMainFrame中定義了應(yīng)用程序的所有根本功能。文檔類CFireWallDocMFC程序中的文檔類是用來存儲數(shù)據(jù)變量的。在本程序中CFireWallDoc主要用來存儲用戶添加的規(guī)那么,當(dāng)用戶添加規(guī)那么或刪除規(guī)那么時,就要向文檔類CFireWallDoc中寫入數(shù)據(jù);當(dāng)視圖類CFireWallView需要將用戶
33、添加的規(guī)那么顯示在規(guī)那么列表時,或者將規(guī)那么安裝到驅(qū)動,就需要從文檔類CFireWallDoc中讀取數(shù)據(jù)。class CFireWallDoc:public CDocumentpublic:unsigned int nRules;/規(guī)那么序數(shù)RuleInfo rulesMAX_RULES;/最大規(guī)那么數(shù)int AddRule();/添加規(guī)那么void DeleteRule(unsigned int position);/刪除規(guī)那么void ResetRules();/重置規(guī)那么,即在加載規(guī)那么前,需要刪除規(guī)那么列表中及存儲在文檔類CFireWallDoc中的所有規(guī)那么;其中RuleInfo r
34、uleMAX_RULES是_RuleInfo結(jié)構(gòu)體的一個變量,該數(shù)組用來存儲規(guī)那么,_RuleInfo類詳細(xì)情況見5.1.5節(jié)介紹。視圖類CFireWallView視圖類一般是用來顯示信息的,在本程序中,CFireWallView主要用來在規(guī)那么列表中顯示存儲在文檔類CFireWallDoc中的規(guī)那么。class CFireWallView:public CFormViewpublic:CFireWallDoc* GetDocument();/指針指向文檔類,和文檔類CFireWallDoc關(guān)聯(lián)。/AFX_VIRTUAL(CFireWallView)public:protected:virtu
35、al void OnInitialUpdate();/在這個函數(shù)中初始化規(guī)那么列表/AFX_VIRTUALpublic:void UpdateList();/更新規(guī)那么列表,和Doc文檔類保持一致protected:void AddRuleToList();/將文檔類CFireWallDoc中的規(guī)那么顯示出來;_RuleInfo類_RuleInfo類是用來定義過濾規(guī)那么的數(shù)據(jù)結(jié)構(gòu)。typedef struct _RuleInfounsigned long sourceIp;unsigned long sourceMask;unsigned short sourcePort;unsigned l
36、ong destinationIp;unsigned long destinationMask;unsigned short destinationPort;unsigned int protocol;int action;RuleInfo,*PRuleInfo;詳細(xì)設(shè)計(jì)主界面程序主界面如圖2。圖2 程序主界面添加過濾規(guī)那么添加過濾規(guī)那么的功能是通過一個“添加規(guī)那么對話框完成,如圖3。 圖3 添加規(guī)那么對話框添加規(guī)那么功能是將對話框中的規(guī)那么添加到存儲數(shù)據(jù)的文檔中。分兩個步驟:1、取得添加規(guī)那么對話框中的數(shù)據(jù):int result;UpdateData(TRUE);/使控件列表與控件關(guān)聯(lián)res
37、ult=inet_addr(m_ipsource,&srcIp);/從源IP地址編輯框獲取源IP地址賦給srcIp。result = inet_addr(m_srcMask, &srcMask);/從源IP掩碼編輯框獲取源IP地址掩碼賦給srcMask。result=inet_addr(m_ipdestination, &dstIp);/從目的IP地址編輯框獲取目的IP地址賦給dstIp。result = inet_addr(m_dstMask, &dstMask);/從目的IP掩碼編輯框獲取目的IP掩碼賦給dstMask。if(m_protocol = TCP)protocol = 6;el
38、se if(m_protocol = UDP)protocol = 17;else if(m_protocol = ICMP)protocol = 1;else if(m_protocol = 所有)protocol = 0;if(m_action = 放行)cAction = 0;elsecAction = 1;srcPort = m_portsource;/源端口dstPort = m_portDestination;/目的端口2、將取得的數(shù)據(jù)添加到文檔類中:BOOL CFireWallDoc:AddRule(unsigned long srcIp,unsigned long srcMas
39、k,unsigned short srcPort, unsigned long dstIp,unsigned long dstMask,unsigned short dstPort,unsigned int protocol,int action)rulesnRules.sourceIp = srcIp;rulesnRules.sourceMask = srcMask;rulesnRules.sourcePort = srcPort;rulesnRules.destinationIp = dstIp;rulesnRules.destinationMask = dstMask;rulesnRul
40、es.destinationPort = dstPort;rulesnRtocol = protocol;rulesnRules.action = action;nRules+;return TRUE;實(shí)現(xiàn)添加規(guī)那么功能的程序流程圖如圖4。開始格式匹配?取得對話框中的數(shù)據(jù)將數(shù)據(jù)添加到Doc中彈出添加規(guī)那么對話框結(jié)束輸入正確的規(guī)那么否是圖4 添加規(guī)那么流程圖刪除過濾規(guī)那么刪除規(guī)那么時,首先需要確定所要刪除的規(guī)那么,再將其從文檔類中刪除,同時更新視圖類的顯示。當(dāng)正在進(jìn)行過濾時,那么要先停止過濾,才能刪除規(guī)那么。刪除規(guī)那么:void CMainFrame:OnButtondel()CFireWall
41、View *view = (CFireWallView *)GetActiveView();CFireWallDoc *doc = (CFireWallDoc *)GetActiveDocument();POSITION pos = view-m_rules.GetFirstSelectedItemPosition();/選中的規(guī)那么if(started = TRUE)/如果正在過濾CString strTemp;strTemp.Format(請先停止過濾);int position;position = view-m_rules.GetNextSelectedItem(pos);/posit
42、ion是當(dāng)前選擇的規(guī)那么的下一條的序數(shù)實(shí)現(xiàn)刪除規(guī)那么功能的程序流程如圖5。否開始取得當(dāng)前選擇的規(guī)那么正在過濾?調(diào)用DeleteRule()更新列表顯示結(jié)束停止過濾是圖5 刪除規(guī)那么流程圖其中調(diào)用DeleteRule()的代碼為:CFireWallDoc *doco = (CFireWallDoc *)GetActiveDocument();/關(guān)聯(lián)文檔類doco-DeleteRule(position);/調(diào)用DeleteRule()函數(shù)刪除規(guī)那么view-UpdateList();/更新規(guī)那么列表的顯示void CFireWallDoc:DeleteRule(unsigned int posi
43、tion)if(position = nRules)return;if(position != nRules - 1)/如果刪除的規(guī)那么不是最后一條,那么將它刪除后,后面的規(guī)那么要往前移動unsigned int i;for(i = position + 1;im_rules.GetFirstSelectedItemPosition();/選中的規(guī)那么if(started = TRUE)/如果正在過濾CString strTemp;strTemp.Format(請先停止過濾);int position;position = view-m_rules.GetNextSelectedItem(po
44、s);/position是當(dāng)前選擇的規(guī)那么的下一條的序數(shù)實(shí)現(xiàn)刪除規(guī)那么功能的程序流程如圖5。否開始取得當(dāng)前選擇的規(guī)那么正在過濾?調(diào)用DeleteRule()更新列表顯示結(jié)束停止過濾是圖5 刪除規(guī)那么流程圖其中調(diào)用DeleteRule()的代碼為:CFireWallDoc *doco = (CFireWallDoc *)GetActiveDocument();/關(guān)聯(lián)文檔類doco-DeleteRule(position);/調(diào)用DeleteRule()函數(shù)刪除規(guī)那么view-UpdateList();/更新規(guī)那么列表的顯示void CFireWallDoc:DeleteRule(unsigned
45、 int position)if(position = nRules)return;if(position != nRules - 1)/如果刪除的規(guī)那么不是最后一條,那么將它刪除后,后面的規(guī)那么要往前移動unsigned int i;for(i = position + 1;inRules;i+)rulesi - 1.sourceIp = rulesi.sourceIp;rulesi - 1.sourceMask = rulesi.sourceMask;rulesi - 1.sourcePort = rulesi.sourcePort;rulesi - 1.destinationIp = r
46、ulesi.destinationIp;rulesi - 1.destinationMask = rulesi.destinationMask;rulesi - 1.destinationPort = rulesi.destinationPort;rulesi - 1.protocol = tocol;rulesi - 1.action = rulesi.action;nRules-;DeleteRule()調(diào)用的流程圖如圖6。刪除開始是最后一條規(guī)那么?后面規(guī)那么往前移刪除結(jié)束取得當(dāng)前規(guī)那么否是圖6 DeleteRule()的調(diào)用驅(qū)動程序設(shè)計(jì)簡介基于Firewall-Hook Driver的包
47、過濾驅(qū)動程序位于核心態(tài),運(yùn)行效率高,主要用于在IP過濾驅(qū)動中攔截所有的網(wǎng)絡(luò)數(shù)據(jù)包,根據(jù)過濾規(guī)那么判別是否接收或發(fā)送數(shù)據(jù)包。同時處理上層應(yīng)用程序發(fā)送的IRP,接收應(yīng)用程序發(fā)送的過濾規(guī)那么等。安裝過濾函數(shù)之前,先將過濾函數(shù)的地址填入IP_SET_FIREWALL_HOOK_INFO結(jié)構(gòu)的FirewallPtr指針中,Add設(shè)置為TRUE,并指定該過濾函數(shù)優(yōu)先級Priority,然后向IP設(shè)備發(fā)送IOCTL IOCTL_IP_SET_FIREWALL_HOOK控制碼,這樣就完成了過濾函數(shù)的安裝。卸載過濾函數(shù)的時候只用把Add設(shè)置為FALSE就行了,其他參數(shù)和安裝時一樣。每個過濾函數(shù)可以設(shè)置一個優(yōu)先級
48、,系統(tǒng)調(diào)用這些函數(shù)的時候按照優(yōu)先級的順序進(jìn)行,直到某個函數(shù)返回“丟棄包為止。如果所有的過濾函數(shù)都返回“允許包,那么這個包才能順利通過系統(tǒng)??梢园堰@些過濾函數(shù)想象成一個過濾鏈,所有的函數(shù)按照優(yōu)先級排列,如果一個函數(shù)返回“丟棄包,這條過濾鏈就斷開了。結(jié)構(gòu)圖驅(qū)動程序結(jié)構(gòu)如圖7。圖7 驅(qū)動結(jié)構(gòu)圖該驅(qū)動的優(yōu)點(diǎn)在 HYPERLINK :/ qqread /keywords/windows.html t _blank Windows中這不是開發(fā)防火墻的唯一方法,其它的有諸如 NDIS防火墻,TDI防火墻,Winsock分層防火墻,包過濾API等等。而Filter-Hook Driver的優(yōu)點(diǎn)在于:1、 這種
49、方法所擁有的彈性可以使你過濾所有IP層或以上的通訊。但不能過濾更低層的頭部數(shù)據(jù),例如:不能過濾以太幀數(shù)據(jù)。需要用NDIS過濾器來做。2、 這是一種簡單的方法。安裝防火墻和執(zhí)行過濾功能非常簡單。但包過濾API(Packet Filtering API)更加容易使用,盡管它缺少彈性,例如不能處理包的內(nèi)容,不能用包過濾API修改內(nèi)容。本程序的驅(qū)動設(shè)計(jì)本程序驅(qū)動的設(shè)計(jì)核心是通過使用TDriver類向DrvFltIp驅(qū)動程序發(fā)送控制代碼START_IP_HOOK、STOP_IP_HOOK、ADD_FILTER、CLEAR_FILTER,到達(dá)實(shí)現(xiàn)數(shù)據(jù)包過濾的目的。1、程序初始化時,調(diào)用LoadDriver
50、()加載DrvFltIp驅(qū)動:CMainFrame:OnCreate()ipFltDrv.LoadDriver(IpFilterDriver,System32DriversIpFltDrv.sys,NULL,TRUE);2、當(dāng)用戶單擊“開始過濾按鈕時,程序向驅(qū)動發(fā)送START_IP_HOOK控制代碼,開始過濾:CMainFrame:OnButtonstart()filterDriver.WriteIo(START_IP_HOOK,NULL,0);3、當(dāng)用戶單擊“停止過濾按鈕時,程序向驅(qū)動發(fā)送START_IP_HOOK控制代碼,停止過濾:CMainFrame:OnButtonstop()filt
51、erDriver.WriteIo(STOP_IP_HOOK,NULL,0);4、當(dāng)用戶單擊“安裝規(guī)那么按鈕時,程序向驅(qū)動發(fā)送ADD_FILTER控制代碼:CMainFrame:OnButtonInstall()AddFilterToFw();AddFilterToFw()filterDriver.WriteIo(ADD_FILTER, &pf, sizeof(pf);5、當(dāng)用戶單擊“卸載規(guī)那么按鈕時,程序向驅(qū)動發(fā)送CLEAR_FILTER控制代碼:CMainFrame:OnButtonuninstall()filterDriver.WriteIo(CLEAR_FILTER, NULL, 0);
52、程序測試計(jì)算機(jī)位于網(wǎng)關(guān)地址為的局域網(wǎng)內(nèi),本地IP地址為:5。通過局域網(wǎng)連接于外部網(wǎng)絡(luò),可以PING通本地網(wǎng)關(guān)地址和電信DNS效勞器地址9,如圖8和圖9。圖8 PING 圖9 Ping 9運(yùn)行防火墻,點(diǎn)擊“添加按鈕進(jìn)行過濾規(guī)那么設(shè)置,如圖10。源地址: 目的地址5端口號:0所有端口協(xié)議:由于PING命令基于ICMP協(xié)議,所以協(xié)議選擇:ICMP行為:丟棄圖10 添加規(guī)那么圖點(diǎn)擊“添加按鈕將規(guī)那么保存到防火墻:如圖11。圖11 規(guī)那么示圖點(diǎn)擊“安裝防火墻將過濾規(guī)那么添加到過濾驅(qū)動,點(diǎn)擊“開始防火墻開始按照規(guī)那么進(jìn)行數(shù)據(jù)包過濾,如圖12。圖12 開始過濾圖由圖12可以看出原來本地計(jì)算機(jī)可以和本地網(wǎng)關(guān)路
53、由器進(jìn)行ICMP數(shù)據(jù)包收發(fā),也能和電信DNS效勞器進(jìn)行數(shù)據(jù)包收發(fā)。而當(dāng)防火墻設(shè)置為過濾源地址為、協(xié)議為ICMP的規(guī)那么之后運(yùn)行,本地計(jì)算機(jī)將不能和本地網(wǎng)關(guān)路由器進(jìn)行數(shù)據(jù)包收發(fā),PING命令顯示為“Request timed out。但是本地計(jì)算機(jī)還能和電信DNS效勞器9進(jìn)行數(shù)據(jù)收發(fā)。結(jié) 論此防火墻操作簡單,能夠?qū)崿F(xiàn)包過濾功能。按照用戶設(shè)置的規(guī)那么進(jìn)行數(shù)據(jù)包過濾。能運(yùn)行于Windows系統(tǒng),屏蔽不平安的站點(diǎn)、對進(jìn)出的網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行過濾,在一定程度上提高了系統(tǒng)的平安性,可有效的防止計(jì)算機(jī)受到外部網(wǎng)絡(luò)攻擊。此防火墻的開發(fā)是在了解和熟悉了TCP、UDP、ICMP協(xié)議以及IP封包過濾驅(qū)動的根底上,運(yùn)用VC
54、+這一編程語言來開發(fā)的。相對于互聯(lián)網(wǎng)上的知名防火墻相比整個防火墻還不成熟,但它具有操作簡單明了的特點(diǎn)。在以后的學(xué)習(xí)中隨著自身技術(shù)的提高,我會進(jìn)一步完善整個防火墻,使它具有更多的功能對計(jì)算機(jī)平安起到更好的作用。通過這次畢業(yè)設(shè)計(jì)的編程,使我對網(wǎng)絡(luò)編程和防火墻技術(shù)有了新的認(rèn)識,同時我也對VC+這一編程語言有了更深的了解。對以后的學(xué)習(xí)和工作都有很大的幫助。 HYPERLINK 論文格式摸板(2007).doc 參考文獻(xiàn)1 張?jiān)?Visual C+網(wǎng)絡(luò)程序設(shè)計(jì)實(shí)例詳解M.北京:人民郵電出版社,2003。2 Keith E.Strassberg,Richard J.Gondek.防火墻技術(shù)大全M.北京:機(jī)
55、械工業(yè)出版社,2003。3 朱雁輝.Windows防火墻與網(wǎng)絡(luò)封包截獲技術(shù)M.北京:電子工業(yè)出版社,2002。4 黎連業(yè),張維.防火墻及其應(yīng)用技術(shù)M.北京:清華大學(xué)出版社,2004。5 Steven Holzner.Visual C+ 6.0輕松進(jìn)階M.北京:電子工業(yè)出版社,2005。6 John E.Swanke.Visual C+MFC編程實(shí)例M.北京:機(jī)械工業(yè)出版社,2005。7 張海棠.Visual C+ 6.0編程指南M.北京:航空工業(yè)出版社,2002。致 謝本文是在索望老師的熱情關(guān)心和指導(dǎo)下完成的,他淵博的知識和嚴(yán)謹(jǐn)?shù)闹螌W(xué)作風(fēng)使我受益匪淺,對順利完本錢課題起到了極大的作用。在此向他
56、表示我最衷心的感謝!在論文完成過程中,本人還得到了王守兵同學(xué)的熱心幫助,本人向他們表示深深的謝意!最后向在百忙之中評審本文的各位專家、老師表示衷心的感謝!作者簡介:姓 名:劉鐘 性別: 男出生年月:1982年3月 民族: 漢E-mail:egoddess5163 聲 明本論文的工作是 2007年2月至2007年6月在成都信息工程學(xué)院網(wǎng)絡(luò)工程系完成的。文中除了特別加以標(biāo)注地方外,不包含他人已經(jīng)發(fā)表或撰寫過的研究成果,也不包含為獲得成都信息工程學(xué)院或其他教學(xué)機(jī)構(gòu)的學(xué)位或證書而使用過的材料。除非另有說明,本文的工作是原始性工作。關(guān)于學(xué)位論文使用權(quán)和研究成果知識產(chǎn)權(quán)的說明:本人完全了解成都信息工程學(xué)院
57、有關(guān)保管使用學(xué)位論文的規(guī)定,其中包括:1學(xué)校有權(quán)保管并向有關(guān)部門遞交學(xué)位論文的原件與復(fù)印件。2學(xué)??梢圆捎糜坝?、縮印或其他復(fù)制方式保存學(xué)位論文。3學(xué)??梢詫W(xué)術(shù)交流為目的復(fù)制、贈送和交換學(xué)位論文。4學(xué)??稍试S學(xué)位論文被查閱或借閱。5學(xué)??梢怨紝W(xué)位論文的全部或局部內(nèi)容保密學(xué)位論文在解密后遵守此規(guī)定。除非另有科研合同和其他法律文書的制約,本論文的科研成果屬于成都信息工程學(xué)院。特此聲明! veother case beincurable. If any one convict in a court of law a stranger or aslave of a theft of public pr
58、operty, let the court determine whatpunishment he shall suffer, or what penalty he shall pay, bearing inmind that he is probably not incurable. But the citizen who has beenbrought up as our citizens will have been, if he be found guilty ofrobbing his country by fraud sold anyadulterated goods, in ad
59、dition to losing the goods themselves, shallbe beaten with stripes-a stripe for a drachma, according to theprice of the goods; and the herald shall proclaim in the agora theoffence for which he is going to be beaten. The warden of the agoraand the guardians of the law shall obtain information from e
60、xperiencedpersons about the rogueries and adulterations of the sellers, andshall write up what the seller ought and ought not to do in each case;and let them inscribe their laws on a column in front of the courtof the wardens of the agora, that they may be clear instructors ofthose who have business
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度自然人翻譯服務(wù)合同
- 2024年南昌客運(yùn)從業(yè)資格證培訓(xùn)資料
- 2024年度人工智能技術(shù)研發(fā)與應(yīng)用合同
- 2024年廣州客車考試題庫
- 2024年上??瓦\(yùn)資格證考試資料下載
- 2024年客運(yùn)資格證考試試題及答案解析
- 2024年內(nèi)蒙古客運(yùn)駕駛員考試題庫及答案選擇題
- 2024年襄陽客運(yùn)從業(yè)資格模擬考試
- 2024年杭州客運(yùn)從業(yè)資格證考試題庫APP
- 2024年復(fù)印機(jī)綠色環(huán)保認(rèn)證購買合同
- 農(nóng)場工作制度與農(nóng)民崗位職責(zé)
- 2024年山東公務(wù)員考試行測真題及解析【完美打印版】
- 田賽裁判法與規(guī)則2
- 社區(qū)心肺復(fù)蘇術(shù)普及
- 冬棗植保知識培訓(xùn)課件
- 校園突發(fā)事件與應(yīng)急管理課件
- 計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)職業(yè)生涯規(guī)劃
- DR拼接技術(shù)及常規(guī)攝片注意事項(xiàng)
- 《股票入門》課件
- 《不為人知的間歇泉》課件
- 某購物廣場公司風(fēng)險(xiǎn)分級管控體系實(shí)施指南
評論
0/150
提交評論