版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、畢畢 業(yè)業(yè) 設設 計計( 論論 文文)簡易簡易 windowswindows 防火墻的設計與實現(xiàn)防火墻的設計與實現(xiàn)論論文作者姓名:文作者姓名:申申請請學位學位專業(yè)專業(yè): :申申請請學位學位類別類別: :指指導導教教師師姓姓名名( (職職稱稱) ): :論論文提交日期:文提交日期:簡易簡易 windowswindows 防火墻的設計與實現(xiàn)防火墻的設計與實現(xiàn)摘摘 要要當今時代是飛速發(fā)展的信息時代,計算機與信息處理技術(shù)日漸成熟。隨著internet 和計算機網(wǎng)絡技術(shù)的蓬勃發(fā)展,網(wǎng)絡安全問題現(xiàn)在已經(jīng)得到普遍重視。網(wǎng)絡防火墻系統(tǒng)就是網(wǎng)絡安全技術(shù)在實際中的應用之一。本設計實現(xiàn)的防火墻采用 ip 過濾鉤子驅(qū)
2、動技術(shù),過濾鉤子驅(qū)動是內(nèi)核模式驅(qū)動,它實現(xiàn)一個鉤子過濾回調(diào)函數(shù),并用系統(tǒng)提供的ip 過濾驅(qū)動注冊它, ip 過濾驅(qū)動隨后使用這個過濾鉤子來決定如何處理進出系統(tǒng)的數(shù)據(jù)包。 本防火墻由以下幾個模塊組成:過濾規(guī)則添加模塊,過濾規(guī)則顯示模塊,過濾規(guī)則存儲模塊,文件儲存模塊,安裝卸載規(guī)則模塊,ip 封包過濾驅(qū)動功能模塊。用戶只需要通過主界面菜單和按鈕就可以靈活地操作防火墻,有效地保護 windows 系統(tǒng)的安全。關(guān)鍵詞關(guān)鍵詞:防火墻;過濾鉤子;過濾驅(qū)動;包過濾the design and implement of simple windows firewallabstractthe current er
3、a 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 technologies that used in
4、 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 system. the ip filter d
5、river 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 driver module. users can
6、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 引言.11.1課題背景.11.2本課題研究意義.11.3本課題研究方法.12 防火墻概述.12.1防火墻的定義.12.2防火墻的基本策略.22.3包過濾防火墻.22.3.1 數(shù)據(jù)包.22.3.2 包過濾防火墻的工作原理.23 開發(fā)工具.33.1visual c+
7、6.0 .33.2vss.34 防火墻系統(tǒng)構(gòu)成.34.1需求分析.34.2設計思路.44.3功能模塊構(gòu)成.44.4功能模塊介紹.44.4.1 過濾規(guī)則添加刪除功能模塊.44.4.2 過濾規(guī)則顯示功能模塊.44.4.3 過濾規(guī)則存儲功能模塊.54.4.4 文件存儲功能模塊.54.4.5 文件載入功能模塊.54.4.6 安裝卸載功能摸塊.54.4.7 ip 封包過濾驅(qū)動功能模塊.55 防火墻設計.55.1程序關(guān)鍵類.55.1.1 應用程序類 cfirewallapp.55.1.2 主框架類 cmainframe.55.1.3 文檔類 cfirewalldoc.65.1.4 視圖類 cfirewal
8、lview.75.1.5 _ruleinfo 類.75.2詳細設計.85.2.1 主界面.85.2.2 添加過濾規(guī)則.85.2.3 刪除過濾規(guī)則.115.3驅(qū)動程序設計.135.3.1 簡介.135.3.2 結(jié)構(gòu)圖.145.3.3 該驅(qū)動的優(yōu)點.145.3.4 本程序的驅(qū)動設計.146 程序測試.16結(jié) 論.18參考文獻.19致 謝.20聲 明.21第 1 頁 共 21 頁1 1引言引言1.11.1課題背景課題背景防火墻是一種隔離技術(shù),是一類防范措施的總稱,利用它使得內(nèi)部網(wǎng)絡與internet 或者其他外部網(wǎng)絡之間相互隔離,通過限制網(wǎng)絡互訪來保護內(nèi)部網(wǎng)絡。防火墻是建立在內(nèi)部網(wǎng)絡與外部網(wǎng)絡之間的
9、唯一安全通道,簡單的可以只用路由器實現(xiàn),復雜的可以用主機甚至一個子網(wǎng)來實現(xiàn),它可以在 ip 層設置屏障,也可以用應用軟件來阻止外來攻擊。通過制定相應的安全規(guī)則,可以允許符合條件的數(shù)據(jù)進入,同時將不符合條件的數(shù)據(jù)拒之門外,這樣就可以阻止非法用戶的侵入,保證內(nèi)部網(wǎng)絡的安全。1.21.2本課題研究意義本課題研究意義隨著計算機技術(shù)和網(wǎng)絡技術(shù)的發(fā)展,計算機網(wǎng)絡給人們帶來了很多便利,于此同時網(wǎng)絡安全的問題也伴隨著網(wǎng)絡技術(shù)的發(fā)展而日趨嚴重。使用防火墻能很好的提高系統(tǒng)的安全性,減少系統(tǒng)受到網(wǎng)絡安全方面的威脅。本畢業(yè)設計選擇開發(fā)一個 windows 下的防火墻,它能夠?qū)W(wǎng)絡 ip 數(shù)據(jù)包按照用戶的設置進行過濾。
10、通過此防火墻的開發(fā)鍛煉了學生的實際動手能力對以后的學習和工作能力的培養(yǎng)具有重要意義。1.31.3本課題研究方法本課題研究方法本設計是使用 vc+ 6.0 的開發(fā)環(huán)境,運用 ip 過濾鉤子驅(qū)動技術(shù) 設計和實現(xiàn)的。本次畢業(yè)設計應首先分析防火墻的相關(guān)功能,結(jié)合本次畢業(yè)設計的相關(guān)要求寫出需求分析;其次,綜合運用以前所學的相關(guān)知識,在設計中以需求分析為基礎,寫出系統(tǒng)開發(fā)計劃、實現(xiàn)流程及相關(guān)問題的實現(xiàn)方法;同時,在開發(fā)設計與實現(xiàn)中,要保存好相關(guān)的設計文檔。2 2防火墻概述防火墻概述2.12.1防火墻的定義防火墻的定義防火墻是指設置在不同網(wǎng)絡(如可信任的企業(yè)內(nèi)部網(wǎng)和不可信的公共網(wǎng))或網(wǎng)絡安全域之間的一系列部
11、件的組合。它可通過監(jiān)測、限制、更改跨越防火墻的數(shù)據(jù)流,盡可能地對外部屏蔽網(wǎng)絡內(nèi)部的信息、結(jié)構(gòu)和運行狀況,以此來實現(xiàn)網(wǎng)絡的安全保護。在邏輯上,防火墻是一個分離器,一個限制器,也是一個分析器,有效地監(jiān)控了內(nèi)部網(wǎng)和 internet 之間的任何活動,保證了內(nèi)部網(wǎng)絡的安全。防火墻是設置在被保護網(wǎng)絡和外部網(wǎng)絡之間的一道屏障,實現(xiàn)網(wǎng)絡的安全保護,以防止發(fā)生不可預測的、潛在破壞性的侵入。防火墻本身具有較強的抗攻擊能力,它是提供信息安全服務、實現(xiàn)網(wǎng)絡和信息安全的基礎設施。第 2 頁 共 21 頁2.22.2防火墻的基本策略防火墻的基本策略按照美國國家計算機安全協(xié)會(ncsa)的建議,制定安全計劃必須包括服務訪
12、問策略和防火墻設計策略。服務訪問策略應包括控制用戶對某些 internet服務的訪問。另外,用戶也需要限制訪問的方式,如 ppp 或 slip。在建立服務訪問政策時,需要注意兩個方式:1、不允許從 internet 上訪問到用戶的網(wǎng)絡,但是允許個別用戶(設定得到)的網(wǎng)絡訪問有限 internet 站點。但必須進行地址偽裝;2、允許有限的從 internet 上訪問到公司網(wǎng)絡,如從 internet 上只能訪問公司的 www 和 ftp 服務器。作為防火墻策略,就是定義實現(xiàn)服務訪問策略的具體規(guī)則。在實現(xiàn)防火墻策略時,用戶可以采用以下兩個原則之一:1、除了允許的事件之外,拒絕其它的任何事件。2、除
13、了拒絕的事件之外,允許其它的任何事件。制定的策略是由一條條規(guī)則構(gòu)成的,防火墻的規(guī)則可分為三條鏈:輸入鏈、輸出鏈和轉(zhuǎn)發(fā)鏈。2.32.3包過濾防火墻包過濾防火墻.1 數(shù)據(jù)包數(shù)據(jù)包數(shù)據(jù)包是指 ip 網(wǎng)絡消息。ip 標準定義了在網(wǎng)上兩臺計算機之間發(fā)送的消息的結(jié)構(gòu).結(jié)構(gòu)上,一個包包含了一個信息頭和應被傳送數(shù)據(jù)的一段消息體。linux 中包含的 ip 防火墻機制 3 種 ip 消息類型:icmp(internet 控制消息協(xié)議)、udp(用戶數(shù)據(jù)報協(xié)議)和 tcp(傳輸控制協(xié)議)。所有的 ip 包頭包含了源、目的 ip 地址、ip 協(xié)議消息類型。包頭里根據(jù)協(xié)議類型還包括了不同的字段。icm
14、p 數(shù)據(jù)包包含了一個類型字段,用來標識控制或狀態(tài)消息類型。udp 和 tcp包包含了源和目的服務端口號。.2 包過濾防火墻的工作原理包過濾防火墻的工作原理采用這種技術(shù)的防火墻產(chǎn)品,通過在網(wǎng)絡中的適當位置對數(shù)據(jù)包進行過濾,根據(jù)檢查數(shù)據(jù)流中每個數(shù)據(jù)包的源地址、目的地址、所有的 tcp 端口號和 tcp鏈路狀態(tài)等要素,然后依據(jù)一組預定義的規(guī)則,以允許合乎邏輯的數(shù)據(jù)包通過防火墻進入到內(nèi)部網(wǎng)絡,而將不合乎邏輯的數(shù)據(jù)包加以刪除。因為路由器通常分布在有不同安全需求和安全策略的網(wǎng)絡的交界處,因此可以通過在路由器上使用包過濾在可能的情況下實現(xiàn)只允許授權(quán)網(wǎng)絡的數(shù)據(jù)進入。在這些路由器上使用包過濾師一
15、種比較經(jīng)濟的在現(xiàn)有路由基礎結(jié)構(gòu)上增加防火墻功能的機制。顧名思義,包過濾在路由過程中對指定包進行過濾(丟棄) 。對過濾的判斷通常基于單個包的頭部所包含的內(nèi)容(例如源地址,目的地址,協(xié)議,端口等) 。第 3 頁 共 21 頁包過濾防火墻通常在操作系統(tǒng)內(nèi)部實現(xiàn),并且操作在 ip 網(wǎng)絡和傳輸協(xié)議層。它在對基于 ip 包頭信息實施過濾后,通過對包的路由作決策來保護系統(tǒng)。包過濾防火墻由一組接受或禁止規(guī)則列表組成。這些規(guī)則明確定義了哪個包將被允許或不允許通過網(wǎng)絡接口。防火墻規(guī)則使用在上面描述的包頭字段來決定是否允許路由一個包通過,以達到它的目的,或則無聲息的將包丟棄掉,或阻止包并向它的發(fā)送機器返回一個錯誤狀
16、態(tài)。這些規(guī)則是基于特定的網(wǎng)絡接口卡和主機 ip 地址、網(wǎng)絡層源和目的 ip 地址、傳輸層 tcp 和 udp 服務端口、tcp 連接標志、網(wǎng)絡層 icmp 消息類型及這些包是進入的還是發(fā)出的。包過濾功能是所有的防火墻都具備的一個基本功能,實際上防火墻要完成的功能從根本上來說,就是要按照用戶的要求來控制網(wǎng)絡所流通的數(shù)據(jù)包,屏蔽那些無益的連接。3 3開發(fā)工具開發(fā)工具3.13.1visual c+ 6.06.0visual c+6.0 是微軟98 年推出的產(chǎn)品,它提供了強大的編譯能力以及良好的界面操作性。能夠?qū)indows 9x、windows nt 以及windows 2000 下的c+程序設計
17、提供完善的編程環(huán)境。同時visual c+6.0 對網(wǎng)絡、數(shù)據(jù)庫等方面的編程也都提供相應的環(huán)境支持。3.23.2vss版本控制是工作組軟件開發(fā)中的重要方面,它能防止意外的文件丟失、允許反追蹤到早期版本、并能對版本進行分支、合并和管理。在軟件開發(fā)和您需要比較兩種版本的文件或找回早期版本的文件時,源代碼的控制是非常有用的。 vss 可以同 visual basic、visual c+、visual j+、visual interdev、visual foxpro 開發(fā)環(huán)境以及 microsoft office 應用程序集成在一起,提供了方便易用、面向項目的版本控制功能。visual sources
18、afe 可以處理由各種開發(fā)語言、創(chuàng)作工具或應用程序所創(chuàng)建的任何文件類型。在提倡文件再使用的今天,用戶可以同時在文件和項目級進行工作。visual sourcesafe 面向項目的特性能更有效地管理工作組應用程序開發(fā)工作中的日常任務。4 4防火墻系統(tǒng)構(gòu)成防火墻系統(tǒng)構(gòu)成4.14.1需求分析需求分析該防火墻的主要功能是實現(xiàn)包過濾,其他功能主要包括以下幾個方面。1、能設置過濾規(guī)則,包括:ip 地址、子網(wǎng)掩碼、端口號、協(xié)議。2、能添加刪除規(guī)則。3、能將過濾規(guī)則保存。第 4 頁 共 21 頁4、能對過濾規(guī)則進行安裝和卸載操作,即:將規(guī)則發(fā)送給 ip 過濾驅(qū)動或從 ip 過濾驅(qū)動中刪除規(guī)則。5、能正確完整的
19、顯示所添加的過濾規(guī)則。4.24.2設計思路設計思路根據(jù)程序的需求來完成功能和模塊化設計的思想,總體設計思路如下:任何程序都必須具有和用戶進行信息交互的功能,因此用戶接口部必須考慮,根據(jù)功能要求,該部分應具備:用戶操作的功能菜單、能對過濾規(guī)則進行設置、顯示規(guī)則界面、添加規(guī)則界面。這樣程序的功能模塊應該有:過濾規(guī)則添加刪除功能模塊,過濾規(guī)則顯示功能模塊,過濾規(guī)則存儲功能模塊,文件儲存功能模塊,安裝卸載規(guī)則功能模塊。4.34.3功能模塊構(gòu)成功能模塊構(gòu)成功能模塊構(gòu)成如圖 1。包過濾防火墻過濾規(guī)則添加刪除功能模塊過濾規(guī)則顯示功能模塊過濾規(guī)則存儲功能模塊文件儲存功能模塊文件載入功能模塊安裝卸載功能模塊ip
20、 封包過濾驅(qū)動功能模塊圖 1 功能模塊圖4.44.4功能模塊介紹功能模塊介紹.1 過濾規(guī)則添加刪除功能模塊過濾規(guī)則添加刪除功能模塊包過濾防火墻要進行數(shù)據(jù)包過濾就需要按照用戶定義的規(guī)則進行包過濾,該功能模塊就是使用戶能夠添加或刪除過濾規(guī)則。過濾規(guī)則主要包括:源 ip 地址、子網(wǎng)掩碼、端口號,目的 ip 地址、子網(wǎng)掩碼、端口號,協(xié)議,以及對符合該規(guī)則的數(shù)據(jù)包是放行還是阻止進行設置。然后將設置好的規(guī)則添加到存儲功能模塊。第 5 頁 共 21 頁.2 過濾規(guī)則顯示功能模塊過濾規(guī)則顯示功能模塊該功能用于顯示用戶添加的規(guī)則,能夠?qū)γ恳粭l規(guī)則進行刪除、安裝、卸載的操作,使防火
21、墻過濾規(guī)則能夠很詳細的顯示給用戶。.3 過濾規(guī)則存儲功能模塊過濾規(guī)則存儲功能模塊該功能用于存儲用戶添加的過濾規(guī)則,接受用戶對每一條規(guī)則的操作,并按照用戶的操作將規(guī)則進行處理。如:安裝規(guī)則,則把用戶選擇的規(guī)則安裝到ip 過濾驅(qū)動,ip 接收到此規(guī)則后按照此規(guī)則進行數(shù)據(jù)包過濾。.4 文件存儲功能模塊文件存儲功能模塊使用戶添加的過濾規(guī)則能夠保存成文件的形式方便儲存,在用戶添加規(guī)則后可以選擇某一條規(guī)則進行保存,防火墻會將該規(guī)則保存為后綴名為.rul 的文件,在下次打開防火墻的時候可以直接加載該規(guī)則。.5 文件載入功能模塊文件載入功能模塊相對于文件儲存功能
22、模塊,該功能是實現(xiàn)用戶可以導入一個后綴名為.rul的并且保存了有效規(guī)則的文件。.6 安裝卸載功能摸塊安裝卸載功能摸塊防火墻要過濾數(shù)據(jù)包,就需要將 ip 過濾驅(qū)動按照定義的規(guī)則進行過濾。用戶通過添加規(guī)則將規(guī)則存儲于防火墻的存儲功能模塊中,想要將規(guī)則發(fā)送給 ip過濾驅(qū)動,就需要對該規(guī)則進行安裝。安裝和卸載的功能就是將過濾規(guī)則傳送給 ip 過濾驅(qū)動或是將已安裝的規(guī)則從過濾驅(qū)動中刪除。.7 ipip 封包過濾驅(qū)動功能模塊封包過濾驅(qū)動功能模塊該功能模塊是整個包過濾防火墻的核心部分,ip 封包過濾驅(qū)動能按照用戶定義的規(guī)則對數(shù)據(jù)包做出阻止或是放行的選擇。5 5防火墻設計防火墻
23、設計5.15.1程序關(guān)鍵類程序關(guān)鍵類.1 應用程序類應用程序類 cfirewallapp每個 mfc 應用程序都必須包括一個從 cwinapp 派生的應用程序類,在本程序中的應用程序類就是 cfirewallapp。應用程序類構(gòu)成了應用程序的主執(zhí)行線程,它封裝了一個 windows 應用程序的初始化、運行和終止。.2 主框架類主框架類 cmainframe主框架類 cmainframe 構(gòu)成整個程序的框架,包括菜單、工具、按鈕等。它構(gòu)成了程序功能的主框架。下面列出了 cmainframe 類中的主要方法和變量。第 6 頁 共 21 頁class cmainfra
24、me:public cframewndprotected:bool installed;/規(guī)則安裝標志 true-已安裝,false-未安裝protected: bool started;/開始過濾的標志,true-已開始,false-未開始tdriver filterdriver;/定義一個 tdriver 類的變量,tdriver ipfltdrv;/protected:bool addfiltertofw();/addfiltertofw 完成將過濾鉤子安裝到防火墻的功能。/afx_msg(cmainframe)afx_msg void onappexit();/退出程序afx_msg
25、void onbuttonadd();/添加規(guī)則按鈕afx_msg void onbuttondel();/刪除規(guī)則按鈕afx_msg void onbuttonstart();/開始過濾按鈕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 onmenuinst
26、allrules();安裝菜單afx_msg void onmenuuninstallrules();/卸載規(guī)則菜單afx_msg void onmenustart();/開始過濾菜單afx_msg void onmenustop();/停止過濾菜單afx_msg void onmenusaverules();/保存規(guī)則菜單afx_msg void onmenuloadrules();/加載規(guī)則菜單/afx_msg;在主框架類 cmainframe 中定義了應用程序的所有基本功能。.3 文檔類文檔類 cfirewalldocmfc 程序中的文檔類是用來存儲數(shù)據(jù)變量的。在本程序中
27、 cfirewalldoc 主要用來存儲用戶添加的規(guī)則,當用戶添加規(guī)則或刪除規(guī)則時,就要向文檔類第 7 頁 共 21 頁cfirewalldoc 中寫入數(shù)據(jù);當視圖類 cfirewallview 需要將用戶添加的規(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
28、position);/刪除規(guī)則void resetrules();/重置規(guī)則,即在加載規(guī)則前,需要刪除規(guī)則列表中及存儲在文檔類 cfirewalldoc 中的所有規(guī)則;其中 ruleinfo rulemax_rules是_ruleinfo 結(jié)構(gòu)體的一個變量,該數(shù)組用來存儲規(guī)則,_ruleinfo 類詳細情況見 5.1.5 節(jié)介紹。.4 視圖類視圖類 cfirewallview視圖類一般是用來顯示信息的,在本程序中,cfirewallview 主要用來在規(guī)則列表中顯示存儲在文檔類 cfirewalldoc 中的規(guī)則。class cfirewallview:public cform
29、viewpublic:cfirewalldoc* getdocument();/指針指向文檔類,和文檔類cfirewalldoc 關(guān)聯(lián)。/afx_virtual(cfirewallview)public:protected:virtual void oninitialupdate();/在這個函數(shù)中初始化規(guī)則列表/afx_virtualpublic:void updatelist();/更新規(guī)則列表,和 doc 文檔類保持一致protected:void addruletolist();/將文檔類 cfirewalldoc 中的規(guī)則顯示出來;第 8 頁 共 21 頁.5 _ru
30、leinfo 類類_ruleinfo 類是用來定義過濾規(guī)則的數(shù)據(jù)結(jié)構(gòu)。typedef struct _ruleinfounsigned long sourceip;unsigned long sourcemask;unsigned short sourceport;unsigned long destinationip;unsigned long destinationmask;unsigned short destinationport;unsigned int protocol;int action;ruleinfo,*pruleinfo;5.25.2詳細設計詳細設計.1
31、主界面主界面程序主界面如圖 2。圖 2 程序主界面.2 添加過濾規(guī)則添加過濾規(guī)則添加過濾規(guī)則的功能是通過一個“添加規(guī)則”對話框完成,如圖 3。第 9 頁 共 21 頁 圖 3 添加規(guī)則對話框添加規(guī)則功能是將對話框中的規(guī)則添加到存儲數(shù)據(jù)的文檔中。分兩個步驟:1、取得添加規(guī)則對話框中的數(shù)據(jù):int result;updatedata(true);/使控件列表與控件關(guān)聯(lián)result=inet_addr(m_ipsource,&srcip);/從源 ip 地址編輯框獲取源 ip 地址賦給 srcip。result = inet_addr(m_srcmask, &srcm
32、ask);/從源 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;第 10 頁 共 21 頁else if(m_protocol = udp)protocol = 17;else if(m_protocol =
33、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 srcmask,unsigned short srcport, unsigned long dstip,unsigned lon
34、g dstmask,unsigned short dstport,unsigned int protocol,int action)rulesnrules.sourceip = srcip;rulesnrules.sourcemask = srcmask;rulesnrules.sourceport = srcport;rulesnrules.destinationip = dstip;rulesnrules.destinationmask = dstmask;rulesnrules.destinationport = dstport;rulesnrtocol = protoc
35、ol;rulesnrules.action = action;nrules+;return true;實現(xiàn)添加規(guī)則功能的程序流程圖如圖 4。第 11 頁 共 21 頁圖 4 添加規(guī)則流程圖.3 刪除過濾規(guī)則刪除過濾規(guī)則刪除規(guī)則時,首先需要確定所要刪除的規(guī)則,再將其從文檔類中刪除,同時更新視圖類的顯示。當正在進行過濾時,則要先停止過濾,才能刪除規(guī)則。刪除規(guī)則:void cmainframe:onbuttondel()cfirewallview *view = (cfirewallview *)getactiveview();cfirewalldoc *doc = (cfirewa
36、lldoc *)getactivedocument();position pos = view-m_rules.getfirstselecteditemposition();/選中的規(guī)則if(started = true)/如果正在過濾cstring strtemp;strtemp.format(請先停止過濾);是開始格式匹配?取得對話框中的數(shù)據(jù)將數(shù)據(jù)添加到 doc 中彈出添加規(guī)則對話框結(jié)束輸入正確的規(guī)則否第 12 頁 共 21 頁int position;position = view-m_rules.getnextselecteditem(pos);/position 是當前選擇的規(guī)則的下
37、一條的序數(shù)實現(xiàn)刪除規(guī)則功能的程序流程如圖 5。圖 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 position)if(position = nrules)return;if(position != nrules - 1)
38、/如果刪除的規(guī)則不是最后一條,則將它刪除后,后面的規(guī)則要往前移動unsigned int i;for(i = position + 1;im_rules.getfirstselecteditemposition();/選中的規(guī)則if(started = true)/如果正在過濾cstring strtemp;strtemp.format(請先停止過濾);是開始格式匹配?取得對話框中的數(shù)據(jù)將數(shù)據(jù)添加到 doc 中彈出添加規(guī)則對話框結(jié)束輸入正確的規(guī)則否第 12 頁 共 21 頁int position;position = view-m_rules.getnextselecteditem(pos)
39、;/position 是當前選擇的規(guī)則的下一條的序數(shù)實現(xiàn)刪除規(guī)則功能的程序流程如圖 5。圖 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 position)if(position = nrules)return;if(po
40、sition != nrules - 1)/如果刪除的規(guī)則不是最后一條,則將它刪除后,后面的規(guī)則要往前移動unsigned int i;for(i = position + 1;inrules;i+)否開始取得當前選擇的規(guī)則正在過濾?調(diào)用 deleterule()更新列表顯示結(jié)束停止過濾是第 13 頁 共 21 頁rulesi - 1.sourceip = rulesi.sourceip;rulesi - 1.sourcemask = rulesi.sourcemask;rulesi - 1.sourceport = rulesi.sourceport;rulesi - 1.destinati
41、onip = rulesi.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。圖 6 deleterule()的調(diào)用5.65.6驅(qū)動程序設計驅(qū)動程序設計.5 簡介簡介基于 firewall-h
42、ook driver 的包過濾驅(qū)動程序位于核心態(tài),運行效率高,主要用于在 ip 過濾驅(qū)動中攔截所有的網(wǎng)絡數(shù)據(jù)包,根據(jù)過濾規(guī)則判別是否接收或發(fā)送數(shù)據(jù)包。同時處理上層應用程序發(fā)送的 irp,接收應用程序發(fā)送的過濾規(guī)則等。安裝過濾函數(shù)之前,先將過濾函數(shù)的地址填入刪除開始是最后一條規(guī)則?后面規(guī)則往前移刪除結(jié)束取得當前規(guī)則否是第 14 頁 共 21 頁ip_set_firewall_hook_info 結(jié)構(gòu)的 firewallptr 指針中,add 設置為 true,并指定該過濾函數(shù)優(yōu)先級 priority,然后向 ip 設備發(fā)送 ioctl ioctl_ip_set_firewall_hook 控制碼
43、,這樣就完成了過濾函數(shù)的安裝。卸載過濾函數(shù)的時候只用把 add 設置為 false 就行了,其他參數(shù)和安裝時一樣。每個過濾函數(shù)可以設置一個優(yōu)先級,系統(tǒng)調(diào)用這些函數(shù)的時候按照優(yōu)先級的順序進行,直到某個函數(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)點該驅(qū)動的優(yōu)點在 windows 中這不是開發(fā)防火墻的唯一方法,其它的有諸如 ndis 防火墻
44、,tdi 防火墻,winsock 分層防火墻,包過濾 api 等等。而 filter-hook driver 的優(yōu)點在于:1、 這種方法所擁有的彈性可以使你過濾所有 ip 層(或以上)的通訊。但不能過濾更低層的頭部數(shù)據(jù),例如:不能過濾以太幀數(shù)據(jù)。需要用 ndis 過濾器來做。2、 這是一種簡單的方法。安裝防火墻和執(zhí)行過濾功能非常簡單。但包過濾 api(packet filtering api)更加容易使用,盡管它缺少彈性,例如不能處理包第 15 頁 共 21 頁的內(nèi)容,不能用包過濾 api 修改內(nèi)容。.8 本程序的驅(qū)動設計本程序的驅(qū)動設計本程序驅(qū)動的設計核心是通過使用 tdri
45、ver 類向 drvfltip 驅(qū)動程序發(fā)送控制代碼(start_ip_hook、stop_ip_hook、add_filter、clear_filter) ,達到實現(xiàn)數(shù)據(jù)包過濾的目的。1、程序初始化時,調(diào)用 loaddriver()加載 drvfltip 驅(qū)動:cmainframe:oncreate()ipfltdrv.loaddriver(ipfilterdriver,system32driversipfltdrv.sys,null,true);2、當用戶單擊“開始過濾”按鈕時,程序向驅(qū)動發(fā)送 start_ip_hook控制代碼,開始過濾:cmainframe:onbuttonstart(
46、)filterdriver.writeio(start_ip_hook,null,0);3、當用戶單擊“停止過濾”按鈕時,程序向驅(qū)動發(fā)送 start_ip_hook控制代碼,停止過濾:cmainframe:onbuttonstop()filterdriver.writeio(stop_ip_hook,null,0);4、當用戶單擊“安裝規(guī)則”按鈕時,程序向驅(qū)動發(fā)送 add_filter 控制代碼:cmainframe:onbuttoninstall()addfiltertofw();addfiltertofw()filterdriver.writeio(add_filter, &pf,
47、 sizeof(pf);第 16 頁 共 21 頁5、當用戶單擊“卸載規(guī)則”按鈕時,程序向驅(qū)動發(fā)送 clear_filter 控制代碼:cmainframe:onbuttonuninstall()filterdriver.writeio(clear_filter, null, 0);1212 程序測試程序測試計算機位于網(wǎng)關(guān)地址為 的局域網(wǎng)內(nèi),本地 ip 地址為:5。通過局域網(wǎng)連接于外部網(wǎng)絡,可以 ping 通本地網(wǎng)關(guān)地址 和電信 dns服務器地址 9,如圖 8 和圖 9。圖 8 ping 第 17 頁 共
48、21 頁圖 9 ping 9運行防火墻,點擊“添加”按鈕進行過濾規(guī)則設置,如圖 10。源地址: 目的地址 5端口號:0(所有端口)協(xié)議:由于 ping 命令基于 icmp 協(xié)議,所以協(xié)議選擇:icmp行為:丟棄圖 10 添加規(guī)則圖點擊“添加”按鈕將規(guī)則保存到防火墻:如圖 11。第 18 頁 共 21 頁圖 11 規(guī)則示圖點擊“安裝”防火墻將過濾規(guī)則添加到過濾驅(qū)動,點擊“開始”防火墻開始按照規(guī)則進行數(shù)據(jù)包過濾,如圖 12。圖 12 開始過濾圖由圖 12 可以看出原來本地計算機可以和本地網(wǎng)關(guān)(路由器)進行 icmp 數(shù)據(jù)包收發(fā),也能和電信 dns
49、 服務器進行數(shù)據(jù)包收發(fā)。而當防火墻設置為過濾源地址為 、協(xié)議為 icmp 的規(guī)則之后運行,本地計算機將不能和本地網(wǎng)關(guān)(路由器)進行數(shù)據(jù)包收發(fā),ping 命令顯示為“request timed out” 。但是本地計算機還能和電信 dns 服務器 9 進行數(shù)據(jù)收發(fā)。結(jié)結(jié) 論論此防火墻操作簡單,能夠?qū)崿F(xiàn)包過濾功能。按照用戶設置的規(guī)則進行數(shù)據(jù)包過濾。能運行于 windows 系統(tǒng),屏蔽不安全的站點、對進出的網(wǎng)絡數(shù)據(jù)進行過濾,在一定程度上提高了系統(tǒng)的安全性,可有效的防止計算機受到外部網(wǎng)絡攻擊。此防火墻的開發(fā)是在了解和熟悉了 tcp、udp、icmp 協(xié)議以及 ip
50、封包過濾驅(qū)動的基礎上,運用 vc+這一編程語言來開發(fā)的。相對于互聯(lián)網(wǎng)上的知名防火墻相比整個防火墻還不成熟,但它具有操作簡單明了的特點。在以后的第 19 頁 共 21 頁學習中隨著自身技術(shù)的提高,我會進一步完善整個防火墻,使它具有更多的功能對計算機安全起到更好的作用。通過這次畢業(yè)設計的編程,使我對網(wǎng)絡編程和防火墻技術(shù)有了新的認識,同時我也對 vc+這一編程語言有了更深的了解。對以后的學習和工作都有很大的幫助。參考文獻參考文獻1 張越.visual c+網(wǎng)絡程序設計實例詳解m.北京:人民郵電出版社,2003。2 keith e.strassberg,richard j.gondek.防火墻技術(shù)大全
51、m.北京:機械工業(yè)出版社,2003。3 朱雁輝.windows 防火墻與網(wǎng)絡封包截獲技術(shù)m.北京:電子工業(yè)出版社,2002。4 黎連業(yè),張維.防火墻及其應用技術(shù)m.北京:清華大學出版社,2004。5 steven holzner.visual c+ 6.0 輕松進階m.北京:電子工業(yè)出版社,2005。6 john e.swanke.visual c+mfc 編程實例m.北京:機械工業(yè)出版社,2005。7 張海棠.visual c+ 6.0 編程指南m.北京:航空工業(yè)出版社,2002。第 20 頁 共 21 頁致致 謝謝本文是在索望老師的熱情關(guān)心和指導下完成的,他淵博的知識和嚴謹?shù)闹螌W作風使我受
52、益匪淺,對順利完成本課題起到了極大的作用。在此向他表示我最衷心的感謝!在論文完成過程中,本人還得到了王守兵同學的熱心幫助,本人向他們表示深深的謝意!最后向在百忙之中評審本文的各位專家、老師表示衷心的感謝!作者簡介:姓 名:劉鐘 性別: 男出生年月:1982 年 3 月 民族: 漢e-mail:第 21 頁 共 21 頁聲聲 明明本論文的工作是 2007 年 2 月至 2007 年 6 月在成都信息工程學院網(wǎng)絡工程系完成的。文中除了特別加以標注地方外,不包含他人已經(jīng)發(fā)表或撰寫過的研究成果,也不包含為獲得成都信息工程學院或其他教學機構(gòu)的學位或證書而使用過的材料。除非另有說明,本文的工作是原始性工作
53、。關(guān)于學位論文使用權(quán)和研究成果知識產(chǎn)權(quán)的說明:本人完全了解成都信息工程學院有關(guān)保管使用學位論文的規(guī)定,其中包括:(1)學校有權(quán)保管并向有關(guān)部門遞交學位論文的原件與復印件。(2)學??梢圆捎糜坝?、縮印或其他復制方式保存學位論文。(3)學校可以學術(shù)交流為目的復制、贈送和交換學位論文。(4)學??稍试S學位論文被查閱或借閱。(5)學??梢怨紝W位論文的全部或部分內(nèi)容(保密學位論文在解密后遵守此規(guī)定) 。除非另有科研合同和其他法律文書的制約,本論文的科研成果屬于成都信息工程學院。特此聲明! 第 22 頁 共 21 頁are you hungry now?no, i am tired and lazy n
54、ow; if i pursue you i will not catch you, and if i catch you-through your own slowness 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 andbegan to run, splashing through the
55、 shallow water. ignacio ran after him, much helped by his longer legs, his hair flying 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
56、a wave. it only makes him angry that you run. nicholas did not answer, but cut to 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 jung
57、le, among the boles of the hardwoods, where he leaned,.; out of breath, the thumping 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
58、 and said, well, thats over, expecting dr. island to answer from somewhere; there 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, hor
59、izontal distortions of their objects. he felt no hunger, but he had fasted be- fore and knew on which side of hunger he stood; he was not as strong as he had been only a day past, and bythis time next day he would probably be unable to outrun ignacio. he should, he now realized, have eaten the monke
60、y he had killed; but his stomach revolted at the thought of the raw flesh, and he did not know how he might build a fire, although ignacio seemed to have done so the night before. raw fish, even if he were able to catch a fish, would be as bad, or worse, than raw monkey; he remembered his effort to open a coconut-he
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 石河子大學《應用人工智能》2021-2022學年期末試卷
- 石河子大學《數(shù)字電路》2022-2023學年期末試卷
- 石河子大學《口腔頜面外科學二》2021-2022學年第一學期期末試卷
- 石河子大學《編譯原理》2022-2023學年第一學期期末試卷
- 沈陽理工大學《數(shù)學建模與應用》2023-2024學年第一學期期末試卷
- 沈陽理工大學《口譯理論與實踐》2022-2023學年第一學期期末試卷
- 沈陽理工大學《移動終端應用程序開發(fā)》2022-2023學年期末試卷
- 沈陽理工大學《電器學》2023-2024學年期末試卷
- 沈陽理工大學《Python程序設計》2021-2022學年期末試卷
- 國際貿(mào)易綜合技能實訓中對合同訂立報告
- 中國苯酐(PA)行業(yè)前景動態(tài)及投資盈利預測研究報告(2024-2030版)
- 專題13.6 等腰三角形(精練)(專項練習)(培優(yōu)練)(學生版) 2024-2025學年八年級數(shù)學上冊基礎知識專項突破講與練(人教版)
- 非新生兒破傷風診療規(guī)范(2024年版)解讀
- 2024至2030年中國硅灰數(shù)據(jù)監(jiān)測研究報告
- 2024-2025學年第一學期初二物理期中考試卷
- 2024至2030年中國智能應變測試系統(tǒng)數(shù)據(jù)監(jiān)測研究報告
- 員工技能競賽方案
- 江蘇省南京市六校聯(lián)考2024-2025學年高一上學期期中考試語文試題(無答案)
- 2022版義務教育物理課程標準
- 芯片基礎知識單選題100道及答案解析
評論
0/150
提交評論