簡易WINDOWS防火墻的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)論文_第1頁
簡易WINDOWS防火墻的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)論文_第2頁
簡易WINDOWS防火墻的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)論文_第3頁
簡易WINDOWS防火墻的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)論文_第4頁
簡易WINDOWS防火墻的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)論文_第5頁
已閱讀5頁,還剩54頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、畢畢 業(yè)業(yè) 設(shè)設(shè) 計(jì)計(jì)( 論論 文文) 簡易簡易 windowswindows 防火墻的設(shè)計(jì)與實(shí)現(xiàn)防火墻的設(shè)計(jì)與實(shí)現(xiàn) 論論文作者姓名:文作者姓名: 申申請請學(xué)位學(xué)位專業(yè)專業(yè): : 申申請請學(xué)位學(xué)位類別類別: : 指指導(dǎo)導(dǎo)教教師師姓姓名名( (職職稱稱) ): : 論論文提交日期:文提交日期: 簡易簡易 windowswindows 防火墻的設(shè)計(jì)與實(shí)現(xiàn)防火墻的設(shè)計(jì)與實(shí)現(xiàn) 摘摘 要要 當(dāng)今時代是飛速發(fā)展的信息時代,計(jì)算機(jī)與信息處理技術(shù)日漸成熟。隨著 internet 和計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的蓬勃發(fā)展,網(wǎng)絡(luò)安全問題現(xiàn)在已經(jīng)得到普遍重視。 網(wǎng)絡(luò)防火墻系統(tǒng)就是網(wǎng)絡(luò)安全技術(shù)在實(shí)際中的應(yīng)用之一。本設(shè)計(jì)實(shí)現(xiàn)的防火墻

2、 采用 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ī)則添加模塊,過濾規(guī)則顯示模塊,過濾規(guī)則存儲模塊, 文件儲存模塊,安裝卸載規(guī)則模塊,ip 封包過濾驅(qū)動功能模塊。用戶只需要通 過主界面菜單和按鈕就可以靈活地操作防火墻,有效地保護(hù) windows 系統(tǒng)的安 全。 關(guān)鍵詞關(guān)鍵詞:防火墻;過濾鉤子;過濾驅(qū)動;包過濾 the design and implement of simple windows firewall a

3、bstract the current era is a rapid development of information age. the technologies of computer and information processing become 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 tec

4、hnologies that used in the network. this design has implemented a firewall adopting the ip filter-hook driver technology; its driven 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 s

5、ystem. the ip filter driver uses the filter-hook to handle the data packets in and out. the firewall is composed of the following modules: adding filter rules module, display filter rules module, storage filter rules module, storage file module, installation and unloading rules module, ip packet dri

6、ver module. users can finish the operation by using main menu and button and protect the system effectively. key words: firewall; filter-hook; filter driver; packet filtering 目目 錄錄 論文總頁數(shù):21 頁 1 引言.1 1.1課題背景.1 1.2本課題研究意義.1 1.3本課題研究方法.1 2 防火墻概述.1 2.1防火墻的定義.1 2.2防火墻的基本策略.2 2.3包過濾防火墻.2 2.3.1 數(shù)據(jù)包.2 2.3.2

7、 包過濾防火墻的工作原理.2 3 開發(fā)工具.3 3.1visual c+ 6.0 .3 3.2vss.3 4 防火墻系統(tǒng)構(gòu)成.3 4.1需求分析.3 4.2設(shè)計(jì)思路.4 4.3功能模塊構(gòu)成.4 4.4功能模塊介紹.4 4.4.1 過濾規(guī)則添加刪除功能模塊.4 4.4.2 過濾規(guī)則顯示功能模塊.4 4.4.3 過濾規(guī)則存儲功能模塊.5 4.4.4 文件存儲功能模塊.5 4.4.5 文件載入功能模塊.5 4.4.6 安裝卸載功能摸塊.5 4.4.7 ip 封包過濾驅(qū)動功能模塊.5 5 防火墻設(shè)計(jì).5 5.1程序關(guān)鍵類.5 5.1.1 應(yīng)用程序類 cfirewallapp.5 5.1.2 主框架類

8、cmainframe.5 5.1.3 文檔類 cfirewalldoc.6 5.1.4 視圖類 cfirewallview.7 5.1.5 _ruleinfo 類.7 5.2詳細(xì)設(shè)計(jì).8 5.2.1 主界面.8 5.2.2 添加過濾規(guī)則.8 5.2.3 刪除過濾規(guī)則.11 5.3驅(qū)動程序設(shè)計(jì).13 5.3.1 簡介.13 5.3.2 結(jié)構(gòu)圖.14 5.3.3 該驅(qū)動的優(yōu)點(diǎn).14 5.3.4 本程序的驅(qū)動設(shè)計(jì).14 6 程序測試.16 結(jié) 論.18 參考文獻(xiàn).19 致 謝.20 聲 明.21 1 1引言引言 1.11.1課題背景課題背景 防火墻是一種隔離技術(shù),是一類防范措施的總稱,利用它使得內(nèi)部

9、網(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ò)的安全。 1.21.2本課題研究意義本課題研究意義 隨著計(jì)算機(jī)技術(shù)和網(wǎng)絡(luò)技術(shù)的發(fā)展,計(jì)算機(jī)網(wǎng)絡(luò)給人們帶來了很多便利, 于此同時網(wǎng)絡(luò)安全的問題也伴隨著網(wǎng)絡(luò)技術(shù)的發(fā)展而日趨嚴(yán)重。使用防火墻能 很好的提高系統(tǒng)

10、的安全性,減少系統(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)具有重要意義。 1.31.3本課題研究方法本課題研究方法 本設(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ì)中以需求 分析為基礎(chǔ),寫出系統(tǒng)開發(fā)計(jì)劃、實(shí)現(xiàn)流程及相關(guān)問題的實(shí)現(xiàn)方法;同時,在 開發(fā)設(shè)計(jì)與實(shí)現(xiàn)中,要保存好相關(guān)的

11、設(shè)計(jì)文檔。 2 2防火墻概述防火墻概述 2.12.1防火墻的定義防火墻的定義 防火墻是指設(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)的抗 攻擊能力,它是提供

12、信息安全服務(wù)、實(shí)現(xiàn)網(wǎng)絡(luò)和信息安全的基礎(chǔ)設(shè)施。 2.22.2防火墻的基本策略防火墻的基本策略 按照美國國家計(jì)算機(jī)安全協(xié)會(ncsa)的建議,制定安全計(jì)劃必須包括 服務(wù)訪問策略和防火墻設(shè)計(jì)策略。服務(wù)訪問策略應(yīng)包括控制用戶對某些 internet 服務(wù)的訪問。另外,用戶也需要限制訪問的方式,如 ppp 或 slip。在建立服務(wù) 訪問政策時,需要注意兩個方式: 1、不允許從 internet 上訪問到用戶的網(wǎng)絡(luò),但是允許個別用戶(設(shè)定得到) 的網(wǎng)絡(luò)訪問有限 internet 站點(diǎn)。但必須進(jìn)行地址偽裝; 2、允許有限的從 internet 上訪問到公司網(wǎng)絡(luò),如從 internet 上只能訪問公 司的 w

13、ww 和 ftp 服務(wù)器。 作為防火墻策略,就是定義實(shí)現(xiàn)服務(wù)訪問策略的具體規(guī)則。在實(shí)現(xiàn)防火墻 策略時,用戶可以采用以下兩個原則之一: 1、除了允許的事件之外,拒絕其它的任何事件。 2、除了拒絕的事件之外,允許其它的任何事件。 制定的策略是由一條條規(guī)則構(gòu)成的,防火墻的規(guī)則可分為三條鏈:輸入鏈、 輸出鏈和轉(zhuǎn)發(fā)鏈。 2.32.3包過濾防火墻包過濾防火墻 .1 數(shù)據(jù)包數(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 消息類型:icm

14、p(internet 控制消息協(xié)議)、 udp(用戶數(shù)據(jù)報(bào)協(xié)議)和 tcp(傳輸控制協(xié)議)。所有的 ip 包頭包含了源、目 的 ip 地址、ip 協(xié)議消息類型。包頭里根據(jù)協(xié)議類型還包括了不同的字段。 icmp 數(shù)據(jù)包包含了一個類型字段,用來標(biāo)識控制或狀態(tài)消息類型。udp 和 tcp 包包含了源和目的服務(wù)端口號。 .2 包過濾防火墻的工作原理包過濾防火墻的工作原理 采用這種技術(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ù)包通過

15、防火墻進(jìn)入到內(nèi)部網(wǎng)絡(luò),而將不合乎邏輯的數(shù)據(jù)包加以刪除。因?yàn)槁酚善魍ǔ?分布在有不同安全需求和安全策略的網(wǎng)絡(luò)的交界處,因此可以通過在路由器上 使用包過濾在可能的情況下實(shí)現(xiàn)只允許授權(quán)網(wǎng)絡(luò)的數(shù)據(jù)進(jìn)入。在這些路由器上 使用包過濾師一種比較經(jīng)濟(jì)的在現(xiàn)有路由基礎(chǔ)結(jié)構(gòu)上增加防火墻功能的機(jī)制。 顧名思義,包過濾在路由過程中對指定包進(jìn)行過濾(丟棄) 。對過濾的判斷通常 基于單個包的頭部所包含的內(nèi)容(例如源地址,目的地址,協(xié)議,端口等) 。 包過濾防火墻通常在操作系統(tǒng)內(nèi)部實(shí)現(xiàn),并且操作在 ip 網(wǎng)絡(luò)和傳輸協(xié)議層。 它在對基于 ip 包頭信息實(shí)施過濾后,通過對包的路由作決策來保護(hù)系統(tǒng)。包過 濾防火墻由一組接受或禁止

16、規(guī)則列表組成。這些規(guī)則明確定義了哪個包將被允 許或不允許通過網(wǎng)絡(luò)接口。防火墻規(guī)則使用在上面描述的包頭字段來決定是否 允許路由一個包通過,以達(dá)到它的目的,或則無聲息的將包丟棄掉,或阻止包 并向它的發(fā)送機(jī)器返回一個錯誤狀態(tài)。這些規(guī)則是基于特定的網(wǎng)絡(luò)接口卡和主 機(jī) ip 地址、網(wǎng)絡(luò)層源和目的 ip 地址、傳輸層 tcp 和 udp 服務(wù)端口、tcp 連 接標(biāo)志、網(wǎng)絡(luò)層 icmp 消息類型及這些包是進(jìn)入的還是發(fā)出的。 包過濾功能是所有的防火墻都具備的一個基本功能,實(shí)際上防火墻要完成的 功能從根本上來說,就是要按照用戶的要求來控制網(wǎng)絡(luò)所流通的數(shù)據(jù)包,屏蔽那 些無益的連接。 3 3開發(fā)工具開發(fā)工具 3.1

17、3.1visual c+ 6.06.0 visual 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)境支持。 3.23.2vss 版本控制是工作組軟件開發(fā)中的重要方面,它能防止意外的文件丟失、允 許反追蹤到早期版本、并能對版本進(jìn)行分支、合并和管理。在軟件開發(fā)和您需 要比較兩種版本的文件或找回早期版本的文件時,源代碼的控制是非常有用的。 vss 可以同 visual b

18、asic、visual c+、visual j+、visual interdev、visual foxpro 開發(fā)環(huán)境以及 microsoft office 應(yīng)用程序集成在一起, 提供了方便易用、面向項(xiàng)目的版本控制功能。visual sourcesafe 可以處理由各 種開發(fā)語言、創(chuàng)作工具或應(yīng)用程序所創(chuàng)建的任何文件類型。在提倡文件再使用 的今天,用戶可以同時在文件和項(xiàng)目級進(jìn)行工作。visual sourcesafe 面向項(xiàng)目 的特性能更有效地管理工作組應(yīng)用程序開發(fā)工作中的日常任務(wù)。 4 4防火墻系統(tǒng)構(gòu)成防火墻系統(tǒng)構(gòu)成 4.14.1需求分析需求分析 該防火墻的主要功能是實(shí)現(xiàn)包過濾,其他功能主要包

19、括以下幾個方面。 1、能設(shè)置過濾規(guī)則,包括:ip 地址、子網(wǎng)掩碼、端口號、協(xié)議。 2、能添加刪除規(guī)則。 3、能將過濾規(guī)則保存。 4、能對過濾規(guī)則進(jìn)行安裝和卸載操作,即:將規(guī)則發(fā)送給 ip 過濾驅(qū)動或 從 ip 過濾驅(qū)動中刪除規(guī)則。 5、能正確完整的顯示所添加的過濾規(guī)則。 4.24.2設(shè)計(jì)思路設(shè)計(jì)思路 根據(jù)程序的需求來完成功能和模塊化設(shè)計(jì)的思想,總體設(shè)計(jì)思路如下: 任何程序都必須具有和用戶進(jìn)行信息交互的功能,因此用戶接口部必須考 慮,根據(jù)功能要求,該部分應(yīng)具備:用戶操作的功能菜單、能對過濾規(guī)則進(jìn)行 設(shè)置、顯示規(guī)則界面、添加規(guī)則界面。 這樣程序的功能模塊應(yīng)該有:過濾規(guī)則添加刪除功能模塊,過濾規(guī)則顯

20、示 功能模塊,過濾規(guī)則存儲功能模塊,文件儲存功能模塊,安裝卸載規(guī)則功能模 塊。 4.34.3功能模塊構(gòu)成功能模塊構(gòu)成 功能模塊構(gòu)成如圖 1。 包過濾防火墻 過濾規(guī)則添加刪除功能模塊 過濾規(guī)則顯示功能模塊 過濾規(guī)則存儲功能模塊 文件儲存功能模塊 文件載入功能模塊 安裝卸載功能模塊 ip 封包過濾驅(qū)動功能模塊 圖 1 功能模塊圖 4.44.4功能模塊介紹功能模塊介紹 .1 過濾規(guī)則添加刪除功能模塊過濾規(guī)則添加刪除功能模塊 包過濾防火墻要進(jìn)行數(shù)據(jù)包過濾就需要按照用戶定義的規(guī)則進(jìn)行包過濾, 該功能模塊就是使用戶能夠添加或刪除過濾規(guī)則。過濾規(guī)則主要包括:源 ip 地 址、子網(wǎng)掩碼、端口號

21、,目的 ip 地址、子網(wǎng)掩碼、端口號,協(xié)議,以及對符合 該規(guī)則的數(shù)據(jù)包是放行還是阻止進(jìn)行設(shè)置。然后將設(shè)置好的規(guī)則添加到存儲功 能模塊。 .2 過濾規(guī)則顯示功能模塊過濾規(guī)則顯示功能模塊 該功能用于顯示用戶添加的規(guī)則,能夠?qū)γ恳粭l規(guī)則進(jìn)行刪除、安裝、卸 載的操作,使防火墻過濾規(guī)則能夠很詳細(xì)的顯示給用戶。 .3 過濾規(guī)則存儲功能模塊過濾規(guī)則存儲功能模塊 該功能用于存儲用戶添加的過濾規(guī)則,接受用戶對每一條規(guī)則的操作,并 按照用戶的操作將規(guī)則進(jìn)行處理。如:安裝規(guī)則,則把用戶選擇的規(guī)則安裝到 ip 過濾驅(qū)動,ip 接收到此規(guī)則后按照此規(guī)則進(jìn)行數(shù)據(jù)包過濾。 .

22、4 文件存儲功能模塊文件存儲功能模塊 使用戶添加的過濾規(guī)則能夠保存成文件的形式方便儲存,在用戶添加規(guī)則 后可以選擇某一條規(guī)則進(jìn)行保存,防火墻會將該規(guī)則保存為后綴名為.rul 的文 件,在下次打開防火墻的時候可以直接加載該規(guī)則。 .5 文件載入功能模塊文件載入功能模塊 相對于文件儲存功能模塊,該功能是實(shí)現(xiàn)用戶可以導(dǎo)入一個后綴名為.rul 的并且保存了有效規(guī)則的文件。 .6 安裝卸載功能摸塊安裝卸載功能摸塊 防火墻要過濾數(shù)據(jù)包,就需要將 ip 過濾驅(qū)動按照定義的規(guī)則進(jìn)行過濾。用 戶通過添加規(guī)則將規(guī)則存儲于防火墻的存儲功能模塊中,想要將規(guī)則發(fā)送給 ip 過濾驅(qū)動,就需

23、要對該規(guī)則進(jìn)行安裝。安裝和卸載的功能就是將過濾規(guī)則傳送 給 ip 過濾驅(qū)動或是將已安裝的規(guī)則從過濾驅(qū)動中刪除。 .7 ipip 封包過濾驅(qū)動功能模塊封包過濾驅(qū)動功能模塊 該功能模塊是整個包過濾防火墻的核心部分,ip 封包過濾驅(qū)動能按照用戶 定義的規(guī)則對數(shù)據(jù)包做出阻止或是放行的選擇。 5 5防火墻設(shè)計(jì)防火墻設(shè)計(jì) 5.15.1程序關(guān)鍵類程序關(guān)鍵類 .1 應(yīng)用程序類應(yīng)用程序類 cfirewallapp 每個 mfc 應(yīng)用程序都必須包括一個從 cwinapp 派生的應(yīng)用程序類,在本 程序中的應(yīng)用程序類就是 cfirewallapp。應(yīng)用程序類構(gòu)成了應(yīng)用程序的主執(zhí)行 線程

24、,它封裝了一個 windows 應(yīng)用程序的初始化、運(yùn)行和終止。 .2 主框架類主框架類 cmainframe 主框架類 cmainframe 構(gòu)成整個程序的框架,包括菜單、工具、按鈕等。 它構(gòu)成了程序功能的主框架。下面列出了 cmainframe 類中的主要方法和變量。 class cmainframe:public cframewnd protected: bool installed;/規(guī)則安裝標(biāo)志 true-已安裝,false-未安裝 protected: bool started;/開始過濾的標(biāo)志,true-已開始,false-未開始 tdriver filterdri

25、ver;/定義一個 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 onbuttonstart();/開始過濾按鈕 afx_msg void onbuttonstop();/停止過

26、濾按鈕 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 onmenustart();/開始過濾菜單 afx_msg void onmenustop();/停

27、止過濾菜單 afx_msg void onmenusaverules();/保存規(guī)則菜單 afx_msg void onmenuloadrules();/加載規(guī)則菜單 /afx_msg ; 在主框架類 cmainframe 中定義了應(yīng)用程序的所有基本功能。 .3 文檔類文檔類 cfirewalldoc mfc 程序中的文檔類是用來存儲數(shù)據(jù)變量的。在本程序中 cfirewalldoc 主 要用來存儲用戶添加的規(guī)則,當(dāng)用戶添加規(guī)則或刪除規(guī)則時,就要向文檔類 cfirewalldoc 中寫入數(shù)據(jù);當(dāng)視圖類 cfirewallview 需要將用戶添加的規(guī)則顯 示在規(guī)則列表時,或者將規(guī)則

28、安裝到驅(qū)動,就需要從文檔類 cfirewalldoc 中讀 取數(shù)據(jù)。 class cfirewalldoc:public cdocument public: 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 rulemax_rules是_

29、ruleinfo 結(jié)構(gòu)體的一個變量,該數(shù)組用 來存儲規(guī)則,_ruleinfo 類詳細(xì)情況見 5.1.5 節(jié)介紹。 .4 視圖類視圖類 cfirewallview 視圖類一般是用來顯示信息的,在本程序中,cfirewallview 主要用來在 規(guī)則列表中顯示存儲在文檔類 cfirewalldoc 中的規(guī)則。 class cfirewallview:public cformview public: cfirewalldoc* getdocument();/指針指向文檔類,和文檔類 cfirewalldoc 關(guān)聯(lián)。 /afx_virtual(cfirewallview) public

30、: protected: virtual void oninitialupdate();/在這個函數(shù)中初始化規(guī)則列表 /afx_virtual public: void updatelist();/更新規(guī)則列表,和 doc 文檔類保持一致 protected: void addruletolist();/將文檔類 cfirewalldoc 中的規(guī)則顯示出來 ; .5 _ruleinfo 類類 _ruleinfo 類是用來定義過濾規(guī)則的數(shù)據(jù)結(jié)構(gòu)。 typedef struct _ruleinfo unsigned long sourceip; unsigned long sour

31、cemask; unsigned short sourceport; unsigned long destinationip; unsigned long destinationmask; unsigned short destinationport; unsigned int protocol; int action; ruleinfo,*pruleinfo; 5.25.2詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì) .1 主界面主界面 程序主界面如圖 2。 圖 2 程序主界面 .2 添加過濾規(guī)則添加過濾規(guī)則 添加過濾規(guī)則的功能是通過一個“添加規(guī)則”對話框完成,如圖 3。 圖 3 添加規(guī)

32、則對話框 添加規(guī)則功能是將對話框中的規(guī)則添加到存儲數(shù)據(jù)的文檔中。分兩個步驟: 1、取得添加規(guī)則對話框中的數(shù)據(jù): int result; updatedata(true);/使控件列表與控件關(guān)聯(lián) result=inet_addr(m_ipsource,/從源 ip 地址編輯框獲取源 ip 地址 賦給 srcip。 result = inet_addr(m_srcmask, /從源 ip 掩碼編輯框獲取源 ip 地址掩碼賦給 srcmask。 result=inet_addr(m_ipdestination, /從目的 ip 地址編輯框獲取目 的 ip 地址賦給 dstip。 result = i

33、net_addr(m_dstmask, /從目的 ip 掩碼編輯框獲取目 的 ip 掩碼賦給 dstmask。 if(m_protocol = tcp) protocol = 6; else if(m_protocol = udp) protocol = 17; else if(m_protocol = icmp) protocol = 1; else if(m_protocol = 所有) protocol = 0; if(m_action = 放行) caction = 0; else caction = 1; srcport = m_portsource;/源端口 dstport = m

34、_portdestination;/目的端口 2、將取得的數(shù)據(jù)添加到文檔類中: bool cfirewalldoc:addrule(unsigned long srcip, unsigned long srcmask, unsigned short srcport, unsigned long dstip, unsigned long dstmask, unsigned short dstport, unsigned int protocol, int action) rulesnrules.sourceip = srcip; rulesnrules.sourcemask = srcmask;

35、 rulesnrules.sourceport = srcport; rulesnrules.destinationip = dstip; rulesnrules.destinationmask = dstmask; rulesnrules.destinationport = dstport; rulesnrtocol = protocol; rulesnrules.action = action; nrules+; return true; 實(shí)現(xiàn)添加規(guī)則功能的程序流程圖如圖 4。 圖 4 添加規(guī)則流程圖 .3 刪除過濾規(guī)則刪除過濾規(guī)則 刪除規(guī)則時,首先需要確定

36、所要刪除的規(guī)則,再將其從文檔類中刪除,同 時更新視圖類的顯示。當(dāng)正在進(jìn)行過濾時,則要先停止過濾,才能刪除規(guī)則。 刪除規(guī)則: void cmainframe:onbuttondel() cfirewallview *view = (cfirewallview *)getactiveview(); cfirewalldoc *doc = (cfirewalldoc *)getactivedocument(); position pos = view-m_rules.getfirstselecteditemposition();/選中的規(guī) 則 if(started = true)/如果正在過濾 cs

37、tring strtemp; strtemp.format(請先停止過濾); 是 開始 格式匹配? 取得對話框中的數(shù)據(jù) 將數(shù)據(jù)添加到 doc 中 彈出添加規(guī)則對話框 結(jié)束 輸入正確的規(guī)則 否 int position; position = view-m_rules.getnextselecteditem(pos);/position 是當(dāng)前選擇 的規(guī)則的下一條的序數(shù) 實(shí)現(xiàn)刪除規(guī)則功能的程序流程如圖 5。 圖 5 刪除規(guī)則流程圖 其中調(diào)用 deleterule()的代碼為: cfirewalldoc *doco = (cfirewalldoc *)getactivedocument();/關(guān)聯(lián)

38、文檔 類 doco-deleterule(position);/調(diào)用 deleterule()函數(shù)刪除規(guī)則 view-updatelist();/更新規(guī)則列表的顯示 void cfirewalldoc:deleterule(unsigned int position) if(position = nrules) return; if(position != nrules - 1)/如果刪除的規(guī)則不是最后一條,則將它刪除后, 后面的規(guī)則要往前移動 unsigned int i; for(i = position + 1;im_rules.getfirstselecteditemposition(

39、);/選中的規(guī) 則 if(started = true)/如果正在過濾 cstring strtemp; strtemp.format(請先停止過濾); 是 開始 格式匹配? 取得對話框中的數(shù)據(jù) 將數(shù)據(jù)添加到 doc 中 彈出添加規(guī)則對話框 結(jié)束 輸入正確的規(guī)則 否 int position; position = view-m_rules.getnextselecteditem(pos);/position 是當(dāng)前選擇 的規(guī)則的下一條的序數(shù) 實(shí)現(xiàn)刪除規(guī)則功能的程序流程如圖 5。 圖 5 刪除規(guī)則流程圖 其中調(diào)用 deleterule()的代碼為: cfirewalldoc *doco = (

40、cfirewalldoc *)getactivedocument();/關(guān)聯(lián)文檔 類 doco-deleterule(position);/調(diào)用 deleterule()函數(shù)刪除規(guī)則 view-updatelist();/更新規(guī)則列表的顯示 void cfirewalldoc:deleterule(unsigned int position) if(position = nrules) return; if(position != nrules - 1)/如果刪除的規(guī)則不是最后一條,則將它刪除后, 后面的規(guī)則要往前移動 unsigned int i; for(i = position + 1;

41、inrules;i+) 否 開始 取得當(dāng)前選擇的規(guī)則 正在過濾? 調(diào)用 deleterule() 更新列表顯示 結(jié)束 停止過濾 是 rulesi - 1.sourceip = rulesi.sourceip; rulesi - 1.sourcemask = rulesi.sourcemask; rulesi - 1.sourceport = rulesi.sourceport; rulesi - 1.destinationip = rulesi.destinationip; rulesi - 1.destinationmask = rulesi.destinationmask; rulesi

42、- 1.destinationport = rulesi.destinationport; rulesi - 1.protocol = tocol; rulesi - 1.action = rulesi.action; nrules-; deleterule()調(diào)用的流程圖如圖 6。 圖 6 deleterule()的調(diào)用 5.65.6驅(qū)動程序設(shè)計(jì)驅(qū)動程序設(shè)計(jì) .5 簡介簡介 基于 firewall-hook driver 的包過濾驅(qū)動程序位于核心態(tài),運(yùn)行效率高,主 要用于在 ip 過濾驅(qū)動中攔截所有的網(wǎng)絡(luò)數(shù)據(jù)包,根據(jù)過濾規(guī)則判別是否接收或 發(fā)送數(shù)據(jù)包。同時

43、處理上層應(yīng)用程序發(fā)送的 irp,接收應(yīng)用程序發(fā)送的過濾規(guī) 則等。 安裝過濾函數(shù)之前,先將過濾函數(shù)的地址填入 刪除 開始 是最后一條 規(guī)則? 后面規(guī)則往前移 刪除 結(jié)束 取得當(dāng)前規(guī)則 否是 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)先級,系

44、統(tǒng)調(diào)用這些函數(shù)的時候按照優(yōu)先級 的順序進(jìn)行,直到某個函數(shù)返回“丟棄包”為止。如果所有的過濾函數(shù)都返回 “允許包” ,那么這個包才能順利通過系統(tǒng)??梢园堰@些過濾函數(shù)想象成一個過 濾鏈,所有的函數(shù)按照優(yōu)先級排列,如果一個函數(shù)返回“丟棄包” ,這條過濾鏈 就斷開了。 .6 結(jié)構(gòu)圖結(jié)構(gòu)圖 驅(qū)動程序結(jié)構(gòu)如圖 7。 圖 7 驅(qū)動結(jié)構(gòu)圖 .7 該驅(qū)動的優(yōu)點(diǎn)該驅(qū)動的優(yōu)點(diǎn) 在 windows 中這不是開發(fā)防火墻的唯一方法,其它的有諸如 ndis 防火墻, tdi 防火墻,winsock 分層防火墻,包過濾 api 等等。而 filter-hook driver 的 優(yōu)點(diǎn)在于: 1

45、、 這種方法所擁有的彈性可以使你過濾所有 ip 層(或以上)的通訊。但 不能過濾更低層的頭部數(shù)據(jù),例如:不能過濾以太幀數(shù)據(jù)。需要用 ndis 過濾器 來做。 2、 這是一種簡單的方法。安裝防火墻和執(zhí)行過濾功能非常簡單。但包過 濾 api(packet filtering api)更加容易使用,盡管它缺少彈性,例如不能處理包 的內(nèi)容,不能用包過濾 api 修改內(nèi)容。 .8 本程序的驅(qū)動設(shè)計(jì)本程序的驅(qū)動設(shè)計(jì) 本程序驅(qū)動的設(shè)計(jì)核心是通過使用 tdriver 類向 drvfltip 驅(qū)動程序發(fā)送控 制代碼 (start_ip_hook、stop_ip_hook、add_filter、c

46、lear_filter) , 達(dá)到實(shí)現(xiàn)數(shù)據(jù)包過濾的目的。 1、程序初始化時,調(diào)用 loaddriver()加載 drvfltip 驅(qū)動: cmainframe:oncreate() ipfltdrv.loaddriver(ipfilterdriver,system32driversipfltdrv.sys,nu ll,true); 2、當(dāng)用戶單擊“開始過濾”按鈕時,程序向驅(qū)動發(fā)送 start_ip_hook 控制代碼,開始過濾: cmainframe:onbuttonstart() filterdriver.writeio(start_ip_hook,null,0); 3、當(dāng)用戶單擊“停止過濾

47、”按鈕時,程序向驅(qū)動發(fā)送 start_ip_hook 控制代碼,停止過濾: cmainframe:onbuttonstop() filterdriver.writeio(stop_ip_hook,null,0); 4、當(dāng)用戶單擊“安裝規(guī)則”按鈕時,程序向驅(qū)動發(fā)送 add_filter 控制 代碼: cmainframe:onbuttoninstall() addfiltertofw(); addfiltertofw() filterdriver.writeio(add_filter, 5、當(dāng)用戶單擊“卸載規(guī)則”按鈕時,程序向驅(qū)動發(fā)送 clear_filter 控 制代碼: cmainframe

48、:onbuttonuninstall() filterdriver.writeio(clear_filter, null, 0); 1212 程序測試程序測試 計(jì)算機(jī)位于網(wǎng)關(guān)地址為 的局域網(wǎng)內(nèi),本地 ip 地址為:5。 通過局域網(wǎng)連接于外部網(wǎng)絡(luò),可以 ping 通本地網(wǎng)關(guān)地址 和電信 dns 服務(wù)器地址 9,如圖 8 和圖 9。 圖 8 ping 圖 9 ping 9 運(yùn)行防火墻,點(diǎn)擊“添加”按鈕進(jìn)行過濾規(guī)則設(shè)置,如圖 10。 源地址: 目的地址 5 端

49、口號: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)(路由器)進(jìn)行 icmp 數(shù) 據(jù)包收發(fā),也能和電信 dns 服務(wù)器進(jìn)行數(shù)據(jù)包收發(fā)。而當(dāng)防火墻設(shè)置為過濾源 地址為 、協(xié)議為 icmp 的規(guī)則之后運(yùn)行,本地計(jì)算機(jī)將不能和本地網(wǎng)關(guān) (路由器)進(jìn)行數(shù)據(jù)包收發(fā),pin

50、g 命令顯示為“request timed out” 。但是本地 計(jì)算機(jī)還能和電信 dns 服務(wù)器 9 進(jìn)行數(shù)據(jù)收發(fā)。 結(jié)結(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ū)動的基礎(chǔ)上,運(yùn)用 vc+這一編程語言來開發(fā)的。相對于互聯(lián)網(wǎng)上的知 名防火墻相比整個防火墻還不成熟,但它具有操作簡單明了的特點(diǎn)。在以后的 學(xué)習(xí)

51、中隨著自身技術(shù)的提高,我會進(jìn)一步完善整個防火墻,使它具有更多的功 能對計(jì)算機(jī)安全起到更好的作用。 通過這次畢業(yè)設(shè)計(jì)的編程,使我對網(wǎng)絡(luò)編程和防火墻技術(shù)有了新的認(rèn)識, 同時我也對 vc+這一編程語言有了更深的了解。對以后的學(xué)習(xí)和工作都有很 大的幫助。 參考文獻(xiàn)參考文獻(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ī)械工業(yè)出版社, 2003。 3 朱雁輝.windows 防火墻與網(wǎng)絡(luò)封包截獲技術(shù)m.北京:電子工業(yè)出版社,2002。 4 黎連業(yè),張維.防火墻及其

52、應(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ù)闹?學(xué)作風(fēng)使我受益匪淺,對順利完成本課題起到了極大的作用。在此向他表示我 最衷心的感謝! 在論文完成過程中,本人還得到了王守兵同學(xué)的熱心幫助,本人向他們表 示深深的謝意! 最后向在百

53、忙之中評審本文的各位專家、老師表示衷心的感謝! 作者簡介: 姓 名:劉鐘 性別: 男 出生年月:1982 年 3 月 民族: 漢 e-mail: 聲聲 明明 本論文的工作是 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é)院有關(guān)保管使用學(xué)位論文的規(guī)定,其中包括: (1)學(xué)校有權(quán)保管并向有關(guān)部門遞交學(xué)位論文的原件

54、與復(fù)印件。 (2)學(xué)??梢圆捎糜坝?、縮印或其他復(fù)制方式保存學(xué)位論文。 (3)學(xué)??梢詫W(xué)術(shù)交流為目的復(fù)制、贈送和交換學(xué)位論文。 (4)學(xué)??稍试S學(xué)位論文被查閱或借閱。 (5)學(xué)校可以公布學(xué)位論文的全部或部分內(nèi)容(保密學(xué)位論文在解密后 遵守此規(guī)定) 。 除非另有科研合同和其他法律文書的制約,本論文的科研成果屬于成都信息 工程學(xué)院。 特此聲明! are you hungry now? no, i am tired and lazy now; if i pursue you i will not catch you, and if i catch you-through your own slowne

55、ss and clumsiness-i will not kill you, and if i kill you i will not eat you. nicholas had begun to back away, and at the last; words, realizing that they were a signal, he turned and began to run, splashing through the shallow water. ignacio ran after him, much helped by his longer legs, his hair fl

56、ying behind his dark young face, his square teeth-each white as a bone and as big as nicholass thumbnail-showing like spectators who lined the railings of his lips. dont run, nicholas, dr. island said with the voice of a wave. it only makes him angry that you run. nicholas did not answer, but cut to

57、 his left, up the beach and among the trunks of the palms, sprinting all the way because he had no way of knowing ignacio was not right behind him, about to grab him by the neck. when he stopped it was in the thick jungle, among the boles of the hardwoods, where he leaned,.; out of breath, the thump

58、ing of his own heart the only . sound in an atmosphere silent and unwaked as earths long, prehuman day. for a time he listened for any sound ignacio might make searching for him; there was none. he drew a deep breath then and said, well, thats over, expecting dr. island to answer from somewhere; the

59、re was only the green hush. the light was still bright and strong and nearly, shadowless, but some interior sense told him the day, was nearly over, and he noticed that such faint shades as he could see stretched long, horizontal distortions of their objects. he felt no hunger, but he had fasted be-

60、 fore and knew on which side of hunger he stood; he was not as strong as he had been only a day past, and by this time next day he would probably be unable to outrun ignacio. he should, he now realized, have eaten the monkey he had killed; but his stomach revolted at the thought of the raw flesh, an

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論