版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、PAGE 第1頁(yè) 共26頁(yè)數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院畢業(yè)論文(設(shè)計(jì))論文(設(shè)計(jì))名稱(chēng):防火墻的研究與設(shè)計(jì) 姓 名: 學(xué) 號(hào): 專(zhuān) 業(yè): 班 級(jí): 指導(dǎo)老師: 簡(jiǎn)易Windows防火墻的設(shè)計(jì)與實(shí)現(xiàn)摘 要當(dāng)今是網(wǎng)絡(luò),信息等飛速發(fā)展的時(shí)代,網(wǎng)絡(luò)與信息處理以及硬件技術(shù)逐漸成熟。隨著萬(wàn)維網(wǎng)的普遍覆蓋,以及計(jì)算機(jī)技術(shù)的不斷發(fā)展,網(wǎng)絡(luò)安全問(wèn)題已經(jīng)逐漸浮出水面,受到廣大網(wǎng)民的重視。防火墻就是網(wǎng)絡(luò)安全技術(shù)在實(shí)際中的應(yīng)用之一。本設(shè)計(jì)實(shí)現(xiàn)的防火墻運(yùn)用IP過(guò)濾鉤子驅(qū)動(dòng),此驅(qū)動(dòng)為內(nèi)核模式,它實(shí)現(xiàn)一個(gè)鉤子過(guò)濾回調(diào)函數(shù),并用系統(tǒng)提供的IP過(guò)濾驅(qū)動(dòng)注冊(cè)它,IP過(guò)濾驅(qū)動(dòng)隨后使用這個(gè)過(guò)濾鉤子來(lái)決定如何處理進(jìn)出系統(tǒng)的數(shù)據(jù)包。本防火墻由以
2、下幾個(gè)模塊組成:過(guò)濾規(guī)則添加模塊,過(guò)濾規(guī)則顯示模塊,過(guò)濾規(guī)則存儲(chǔ)模塊,文件儲(chǔ)存模塊,安裝卸載規(guī)則模塊,IP封包過(guò)濾驅(qū)動(dòng)功能模塊。用戶(hù)只需要通過(guò)主界面菜單和按鈕就可以靈活地操作防火墻,有效地保護(hù)Windows系統(tǒng)的安全。關(guān)鍵詞:防火墻;過(guò)濾鉤子;數(shù)據(jù)包;IP過(guò)濾;過(guò)濾規(guī)則The Design and Implement of Simple Windows FirewallAbstractToday is the network, information, such as the rapid development of the times, network and information pro
3、cessing and hardware technology is gradually mature. With the universal coverage of the world wide web, as well as the continuous development of computer technology, network security issues have gradually surfaced, by the majority of Internet users to pay attention to. Firewall is one of the applica
4、tions of network security technology in practice. The design and implementation of firewall using IP filter hook driver, the driver is a kernel mode, it achieves a filter hook callback function, and provides the IP filter driver registered it, the IP filter driver then uses the filter hook to decide
5、 how to deal with access number of the system according to the package. The firewall is composed of the following modules: module to add filtering rules, filter rules display module, storage filter rules module, file storage module, installation and unloading rules module, IP packet driver module. U
6、sers only need through the main interface menu and button can be flexible to operate the firewall, to effectively protect the safety of the Windows system.Key words: Firewall; filter hook; data packet; IP filter; filter rule目 錄論文總頁(yè)數(shù):21頁(yè) TOC o 1-3 h z u HYPERLINK l _Toc446931748 1引言 PAGEREF _Toc44693
7、1748 h 1 HYPERLINK l _Toc446931749 1.1課題背景 PAGEREF _Toc446931749 h 1 HYPERLINK l _Toc446931750 1.2本課題研究意義 PAGEREF _Toc446931750 h 1 HYPERLINK l _Toc446931751 1.3本課題研究方法 PAGEREF _Toc446931751 h 1 HYPERLINK l _Toc446931752 2防火墻概述 PAGEREF _Toc446931752 h 1 HYPERLINK l _Toc446931753 2.1防火墻的定義 PAGEREF _T
8、oc446931753 h 1 HYPERLINK l _Toc446931754 2.2防火墻的基本策略 PAGEREF _Toc446931754 h 2 HYPERLINK l _Toc446931755 2.3包過(guò)濾防火墻 PAGEREF _Toc446931755 h 2 HYPERLINK l _Toc446931756 2.3.1數(shù)據(jù)包 PAGEREF _Toc446931756 h 2 HYPERLINK l _Toc446931757 2.3.2包過(guò)濾防火墻的工作原理 PAGEREF _Toc446931757 h 2 HYPERLINK l _Toc446931758 3開(kāi)
9、發(fā)工具 PAGEREF _Toc446931758 h 3 HYPERLINK l _Toc446931759 3.1Visual C+ 6.0 PAGEREF _Toc446931759 h 3 HYPERLINK l _Toc446931760 3.2VSS PAGEREF _Toc446931760 h 3 HYPERLINK l _Toc446931761 4防火墻系統(tǒng)構(gòu)成 PAGEREF _Toc446931761 h 4 HYPERLINK l _Toc446931762 4.1需求分析 PAGEREF _Toc446931762 h 4 HYPERLINK l _Toc44693
10、1763 4.2設(shè)計(jì)思路 PAGEREF _Toc446931763 h 4 HYPERLINK l _Toc446931764 4.3功能模塊構(gòu)成 PAGEREF _Toc446931764 h 4 HYPERLINK l _Toc446931765 4.4功能模塊介紹 PAGEREF _Toc446931765 h 5 HYPERLINK l _Toc446931766 4.4.1過(guò)濾規(guī)則添加刪除模塊 PAGEREF _Toc446931766 h 5 HYPERLINK l _Toc446931767 4.4.2過(guò)濾規(guī)則顯示模塊 PAGEREF _Toc446931767 h 5 HYP
11、ERLINK l _Toc446931768 4.4.3過(guò)濾規(guī)則存儲(chǔ)模塊 PAGEREF _Toc446931768 h 5 HYPERLINK l _Toc446931769 4.4.4文件存儲(chǔ)模塊 PAGEREF _Toc446931769 h 5 HYPERLINK l _Toc446931770 4.4.5文件載入模塊 PAGEREF _Toc446931770 h 5 HYPERLINK l _Toc446931771 4.4.6安裝卸載摸塊 PAGEREF _Toc446931771 h 5 HYPERLINK l _Toc446931772 4.4.7IP封包過(guò)濾驅(qū)動(dòng)模塊 PAG
12、EREF _Toc446931772 h 5 HYPERLINK l _Toc446931773 5防火墻設(shè)計(jì) PAGEREF _Toc446931773 h 6 HYPERLINK l _Toc446931774 5.1程序關(guān)鍵類(lèi) PAGEREF _Toc446931774 h 6 HYPERLINK l _Toc446931775 5.1.1派生類(lèi)CFireWallAPP PAGEREF _Toc446931775 h 6 HYPERLINK l _Toc446931776 5.1.2框架類(lèi)CMainFrame PAGEREF _Toc446931776 h 6 HYPERLINK l _
13、Toc446931777 5.1.3文檔類(lèi)CFireWallDoc PAGEREF _Toc446931777 h 7 HYPERLINK l _Toc446931778 5.1.4視圖類(lèi)CFireWallView PAGEREF _Toc446931778 h 7 HYPERLINK l _Toc446931779 5.1.5_RuleInfo類(lèi) PAGEREF _Toc446931779 h 8 HYPERLINK l _Toc446931780 5.2詳細(xì)設(shè)計(jì) PAGEREF _Toc446931780 h 8 HYPERLINK l _Toc446931781 5.2.1主界面 PAG
14、EREF _Toc446931781 h 8 HYPERLINK l _Toc446931782 5.2.2添加過(guò)濾規(guī)則 PAGEREF _Toc446931782 h 9 HYPERLINK l _Toc446931783 5.2.3刪除過(guò)濾規(guī)則 PAGEREF _Toc446931783 h 11 HYPERLINK l _Toc446931784 5.3驅(qū)動(dòng)程序設(shè)計(jì) PAGEREF _Toc446931784 h 14 HYPERLINK l _Toc446931785 5.3.1簡(jiǎn)介 PAGEREF _Toc446931785 h 14 HYPERLINK l _Toc44693178
15、6 5.3.2結(jié)構(gòu)圖 PAGEREF _Toc446931786 h 14 HYPERLINK l _Toc446931787 5.3.3該驅(qū)動(dòng)的優(yōu)點(diǎn) PAGEREF _Toc446931787 h 15 HYPERLINK l _Toc446931788 5.3.4本程序的驅(qū)動(dòng)設(shè)計(jì) PAGEREF _Toc446931788 h 15 HYPERLINK l _Toc446931789 6程序測(cè)試 PAGEREF _Toc446931789 h 16 HYPERLINK l _Toc446931790 結(jié) 論 PAGEREF _Toc446931790 h 19 HYPERLINK l _T
16、oc446931791 參考文獻(xiàn) PAGEREF _Toc446931791 h 20 HYPERLINK l _Toc446931792 致 謝 PAGEREF _Toc446931792 h 21 HYPERLINK l _Toc446931793 聲 明 PAGEREF _Toc446931793 h 22第21頁(yè) 共 21 頁(yè)引言課題背景Internet的出現(xiàn)及迅速的發(fā)展給現(xiàn)代的人們帶來(lái)了新的飛躍。網(wǎng)絡(luò)不僅促進(jìn)了人們之間的交流,而且提高了人們的工作效率,豐富了人們的生活。但網(wǎng)絡(luò)的安雀問(wèn)題也越來(lái)越明顯。由于黑客攻擊和信息泄露并不是直接對(duì)系統(tǒng)進(jìn)行破壞。所以往往不能引起人們的注意。隨著網(wǎng)絡(luò)的
17、進(jìn)一步普及,網(wǎng)絡(luò)安全產(chǎn)品逐漸進(jìn)入了人們的視野,而防火墻作為把手用戶(hù)安全大門(mén)的重要工具,越來(lái)越受到人們的重視。所以,對(duì)防火墻的研究顯得格外重要。本課題研究意義現(xiàn)如今,市場(chǎng)上的大多數(shù)的防火墻僅僅是網(wǎng)關(guān)型的。雖然功能很強(qiáng)大。但是,他們防外不防內(nèi),難以解決每一個(gè)用戶(hù)所在主機(jī)的安全問(wèn)題。個(gè)人用戶(hù)多使用的是windows操作系統(tǒng),黑客利用這種系統(tǒng)的漏洞來(lái)進(jìn)行對(duì)用戶(hù)的攻擊。如:假冒IP包對(duì)通信雙方進(jìn)行欺騙;對(duì)主機(jī)發(fā)送大量的IP數(shù)據(jù)包進(jìn)行轟炸攻擊,使之崩潰,等等。所以,為了用戶(hù)主機(jī)的安全,研究有效的個(gè)人防火墻技術(shù)很有必要。本課題研究方法本本設(shè)計(jì)是使用Win2000 DDK中的提供的Filter-Hook Dr
18、iver來(lái)實(shí)現(xiàn)數(shù)據(jù)包的過(guò)濾。過(guò)濾鉤子驅(qū)動(dòng)程序是一個(gè)永遠(yuǎn)過(guò)濾網(wǎng)絡(luò)包的核心模式驅(qū)動(dòng)程序,它擴(kuò)展了系統(tǒng)提供的IP過(guò)濾驅(qū)動(dòng)程序的功能。過(guò)濾鉤子驅(qū)動(dòng)程序完成一個(gè)過(guò)濾鉤子回調(diào)函數(shù),并在系統(tǒng)提供的IP過(guò)濾驅(qū)動(dòng)程序中注冊(cè)這個(gè)回調(diào)函數(shù)。這個(gè)回調(diào)函數(shù)被看作是一個(gè)過(guò)濾鉤子。當(dāng)有數(shù)據(jù)包需要通過(guò)是,IP過(guò)濾驅(qū)動(dòng)程序會(huì)調(diào)用這個(gè)過(guò)濾鉤子以決定怎樣處理到達(dá)和輸出的包。防火墻概述防火墻的定義防火墻(Firewall),也稱(chēng)防護(hù)墻,是由Check Point創(chuàng)立者Gil Shwed于1993年發(fā)明并引入國(guó)際互聯(lián)網(wǎng)(US5606668(A)1993-12-15)。它是一種位于內(nèi)部網(wǎng)絡(luò)與外部網(wǎng)絡(luò)之間的網(wǎng)絡(luò)安全系統(tǒng)。一項(xiàng)信息安全的防護(hù)
19、系統(tǒng),依照特定的規(guī)則,允許或是限制傳輸?shù)臄?shù)據(jù)通過(guò)。在網(wǎng)絡(luò)中,所謂“ HYPERLINK /view/3067.htm t _blank 防火墻”,是指一種將 HYPERLINK /view/21848.htm t _blank 內(nèi)部網(wǎng)和公眾訪問(wèn)網(wǎng)(如Internet)分開(kāi)的方法,它實(shí)際上是一種 HYPERLINK /view/1155408.htm t _blank 隔離技術(shù)。防火墻是在兩個(gè)網(wǎng)絡(luò)通訊時(shí)執(zhí)行的一種 HYPERLINK /view/469056.htm t _blank 訪問(wèn)控制尺度,它能允許你“同意”的人和數(shù)據(jù)進(jìn)入你的網(wǎng)絡(luò),同時(shí)將你“不同意”的人和數(shù)據(jù)拒之門(mén)外,最大限度地阻止網(wǎng)絡(luò)
20、中的 HYPERLINK /view/1960.htm t _blank 黑客來(lái)訪問(wèn)你的網(wǎng)絡(luò)。換句話說(shuō),如果不通過(guò)防火墻,公司內(nèi)部的人就無(wú)法訪問(wèn)Internet,Internet上的人也無(wú)法和公司內(nèi)部的人進(jìn)行通信防火墻的基本策略按照美國(guó)國(guó)家計(jì)算機(jī)安全協(xié)會(huì)(NCSA)的建議,制定安全計(jì)劃必須包括服務(wù)訪問(wèn)策略和防火墻設(shè)計(jì)策略。服務(wù)訪問(wèn)策略應(yīng)包括控制用戶(hù)對(duì)某些Internet服務(wù)的訪問(wèn)。另外,用戶(hù)也需要限制訪問(wèn)的方式,如PPP或SLIP。在建立服務(wù)訪問(wèn)政策時(shí),需要注意兩個(gè)方式:1、不允許從Internet上訪問(wèn)到用戶(hù)的網(wǎng)絡(luò),但是允許個(gè)別用戶(hù)(設(shè)定得到)的網(wǎng)絡(luò)訪問(wèn)有限Internet站點(diǎn)。但必須進(jìn)行地
21、址偽裝;2、允許有限的從Internet上訪問(wèn)到公司網(wǎng)絡(luò),如從Internet上只能訪問(wèn)公司的WWW和FTP服務(wù)器。作為防火墻策略,就是定義實(shí)現(xiàn)服務(wù)訪問(wèn)策略的具體規(guī)則。在實(shí)現(xiàn)防火墻策略時(shí),用戶(hù)可以采用以下兩個(gè)原則之一:1、除了允許的事件之外,拒絕其它的任何事件。2、除了拒絕的事件之外,允許其它的任何事件。制定的策略是由一條條規(guī)則構(gòu)成的,防火墻的規(guī)則可分為三條鏈:輸入鏈、輸出鏈和轉(zhuǎn)發(fā)鏈。包過(guò)濾防火墻數(shù)據(jù)包包(Packet):在包交換網(wǎng)絡(luò)里,單個(gè)消息被劃分為多個(gè)數(shù)據(jù)塊,這些數(shù)據(jù)塊稱(chēng)為包,它包含發(fā)送者和接收者的地址信息。這些包然后沿著不同的路徑在一個(gè)或多個(gè)網(wǎng)絡(luò)中傳輸,并且在目的地重新組合。Linux
22、中包含的IP防火墻機(jī)制3種IP消息類(lèi)型:ICMP(Internet控制消息協(xié)議)、UDP(用戶(hù)數(shù)據(jù)報(bào)協(xié)議)和 TCP(傳輸控制協(xié)議)。所有的IP包包含了源、目的IP地址、IP協(xié)議消息類(lèi)型。包頭里根據(jù)協(xié)議類(lèi)型還包括了不同的字段。ICMP數(shù)據(jù)包包含了一個(gè)類(lèi)型字段,用來(lái)標(biāo)識(shí)控制或狀態(tài)消息類(lèi)型。UDP和TCP包包含了源和目的服務(wù)端口號(hào)。包過(guò)濾防火墻的工作原理 HYPERLINK /view/1162820.htm t _blank 數(shù)據(jù)包過(guò)濾是通過(guò)對(duì)數(shù)據(jù)包的IP頭和TCP頭或UDP頭的檢查來(lái)實(shí)現(xiàn)的,主要信息有:* IP源地址* IP目標(biāo)地址* 協(xié)議(TCP包、UDP包和ICMP包)* TCP或UDP包
23、的 HYPERLINK /view/4728590.htm t _blank 源端口* TCP或UDP包的目標(biāo)端口* ICMP消息類(lèi)型* TCP包頭中的ACK位* 數(shù)據(jù)包到達(dá)的端口* 數(shù)據(jù)包出去的端口在TCP/IP中,存在著一些標(biāo)準(zhǔn)的服務(wù) HYPERLINK /view/642103.htm t _blank 端口號(hào),例如,HTTP的端口號(hào)為80。通過(guò)屏蔽特定的端口可以禁止特定的服務(wù)。包過(guò)濾系統(tǒng)可以阻塞內(nèi)部主機(jī)和外部主機(jī)或另外一個(gè)網(wǎng)絡(luò)之間的連接,例如,可以阻塞一些被視為是有敵意的或不可信的主機(jī)或網(wǎng)絡(luò)連接到內(nèi)部網(wǎng)絡(luò)中。過(guò)濾器的實(shí)現(xiàn) HYPERLINK /view/1162820.htm t _b
24、lank 數(shù)據(jù)包過(guò)濾一般使用過(guò)濾 HYPERLINK /view/1360.htm t _blank 路由器來(lái)實(shí)現(xiàn),這種路由器與普通的路由器有所不同。普通的路由器只檢查 HYPERLINK /view/25880.htm t _blank 數(shù)據(jù)包的目標(biāo)地址,并選擇一個(gè)達(dá)到目的地址的最佳路徑。它處理數(shù)據(jù)包是以目標(biāo)地址為基礎(chǔ)的,存在著兩種可能性:若路由器可以找到一個(gè)路徑到達(dá)目標(biāo)地址則發(fā)送出去;若路由器不知道如何發(fā)送數(shù)據(jù)包則通知數(shù)據(jù)包的發(fā)送者“數(shù)據(jù)包不可達(dá)”。過(guò)濾路由器會(huì)更加仔細(xì)地檢查數(shù)據(jù)包,除了決定是否有到達(dá)目標(biāo)地址的路徑外,還要決定是否應(yīng)該發(fā)送數(shù)據(jù)包?!皯?yīng)該與否”是由路由器的過(guò)濾策略決定并強(qiáng)行執(zhí)
25、行的。開(kāi)發(fā)工具Visual C+ 6.0Microsoft Visual C+ 6.0是微軟推出的一款C+編譯器,將“高級(jí)語(yǔ)言”翻譯為“機(jī)器語(yǔ)言(低級(jí)語(yǔ)言)”的程序。 HYPERLINK /view/100377.htm t _blank Visual C+是一個(gè)功能強(qiáng)大的可視化 HYPERLINK /view/973702.htm t _blank 軟件開(kāi)發(fā)工具。自1993年Microsoft公司推出Visual C+1.0后,隨著其新版本的不斷問(wèn)世,Visual C+已成為專(zhuān)業(yè)程序員進(jìn)行軟件開(kāi)發(fā)的首選工具。雖然 HYPERLINK /view/39784.htm t _blank 微軟公司
26、推出了 Visual C+.NET(Visual C+7.0),但它的應(yīng)用的很大的局限性,只適用于Windows 2000、Windows XP和Windows NT4.0。所以實(shí)際中,更多的是以Visual C+6.0為平臺(tái)。Visual C+6.0不僅是一個(gè)C+ HYPERLINK /view/487018.htm t _blank 編譯器,而且是一個(gè)基于Windows操作系統(tǒng)的可視化 HYPERLINK /view/14867.htm t _blank 集成開(kāi)發(fā)環(huán)境(integrated development environment,IDE)。Visual C+6.0由許多組件組成,包
27、括編輯器、調(diào)試器以及程序向?qū)ppWizard、類(lèi)向?qū)lass Wizard等開(kāi)發(fā)工具。 這些組件通過(guò)一個(gè)名為Developer Studio的組件集成為和諧的開(kāi)發(fā)環(huán)境。VSS HYPERLINK /view/60376.htm t _blank 源代碼 HYPERLINK /view/183136.htm t _blank 版本控制機(jī)制是現(xiàn)代軟件開(kāi)發(fā)中必不可少的管理機(jī)制之一,通常借助 HYPERLINK /view/2942399.htm t _blank 版本控制軟件即Source Code Management(SCM) systems或者Version Control systems
28、來(lái)實(shí)現(xiàn)。版本控制在軟件開(kāi)發(fā)中的重要作用如下:1)作為代碼倉(cāng)庫(kù)有效的管理軟件開(kāi)發(fā)中各個(gè)不同版本的源代碼和文檔,占用空間小并且方便各個(gè)版本代碼和文檔的獲取。2)對(duì)開(kāi)發(fā)小組中對(duì)源代碼的訪問(wèn)進(jìn)行有效的協(xié)調(diào)(不同的版本控制軟件采取不同的協(xié)調(diào)策略)。常用的版本控制軟件有Clearcase, CVS, PVCS和Microsoft公司的Visual SourceSafe (VSS)。防火墻系統(tǒng)構(gòu)成需求分析該防火墻的主要功能包括以下幾個(gè)方面。1、能設(shè)置過(guò)濾規(guī)則,包括:IP地址、子網(wǎng)掩碼、端口號(hào)、協(xié)議。2、能添加刪除規(guī)則。3、能保存讀取規(guī)則。4、能安裝卸載規(guī)則,即:將規(guī)則發(fā)送給IP過(guò)濾驅(qū)動(dòng)或從IP過(guò)濾驅(qū)動(dòng)中刪除
29、規(guī)則。5、能正確完整的顯示所添加的過(guò)濾規(guī)則。設(shè)計(jì)思路根據(jù)具體需求來(lái)進(jìn)行模塊分析,總體設(shè)計(jì)思路如下:每一個(gè)程序都要有與用戶(hù)交流的界面,而且必須簡(jiǎn)單明了,因此可從這一步入手。根據(jù)具體需求可以知道,該程序界面需要有以下幾個(gè)按鍵。開(kāi)始過(guò)濾、停止、添加規(guī)則、刪除規(guī)則、安裝、卸載、保存、讀取。因此該程序的功能模塊應(yīng)該有:規(guī)則添加刪除功能模塊,規(guī)則顯示功能模塊,規(guī)則存儲(chǔ)功能模塊,文件儲(chǔ)存功能模塊,安裝卸載規(guī)則功能模塊。功能模塊構(gòu)成功能模塊構(gòu)成如圖1。防火墻防火墻規(guī)則添加刪除模塊規(guī)則顯示模塊規(guī)則存儲(chǔ)模塊文件儲(chǔ)存模塊文件載入模塊安裝卸載模塊IP封包過(guò)濾驅(qū)動(dòng)模塊圖1 功能模塊圖功能模塊介紹過(guò)濾規(guī)則添加刪除模塊該防
30、火墻若要進(jìn)行數(shù)據(jù)包的過(guò)濾就必須按照用戶(hù)所定義的過(guò)濾規(guī)則來(lái)執(zhí)行,此模塊就是為用戶(hù)提供添加與刪除規(guī)則的職能。過(guò)濾規(guī)則主要包括:源IP地址、子網(wǎng)掩碼、端口號(hào),目的IP地址、子網(wǎng)掩碼、端口號(hào),協(xié)議,以及對(duì)符合該規(guī)則的數(shù)據(jù)包是放行還是阻止進(jìn)行設(shè)置。并且將設(shè)置好的規(guī)則添加到存儲(chǔ)功能模塊并顯示出來(lái)。過(guò)濾規(guī)則顯示模塊該功能顧名思義用來(lái)顯示用戶(hù)所定義的規(guī)則,能夠?qū)γ恳粭l規(guī)則進(jìn)行刪除、安裝、卸載等操作,使過(guò)濾規(guī)則能夠詳細(xì)的顯示給用戶(hù)。過(guò)濾規(guī)則存儲(chǔ)模塊該功能用于存儲(chǔ)用戶(hù)定義的過(guò)濾規(guī)則,記錄用戶(hù)對(duì)每一條規(guī)則的操作,并按照用戶(hù)的操作將規(guī)則進(jìn)行處理。如:安裝規(guī)則,則把用戶(hù)選擇的規(guī)則安裝到IP過(guò)濾驅(qū)動(dòng),IP接收到此規(guī)則后按
31、照此規(guī)則進(jìn)行數(shù)據(jù)包過(guò)濾。文件存儲(chǔ)模塊該功能使用戶(hù)所定義并且添加的過(guò)濾規(guī)則以文件的形式保存起來(lái),方便存儲(chǔ)日后使用,防火墻會(huì)將該規(guī)則保存為后綴名為.rul的文件,在下次打開(kāi)防火墻的時(shí)候可以直接加載該規(guī)則。文件載入模塊該功能與文件存儲(chǔ)功能對(duì)應(yīng),即用戶(hù)可以導(dǎo)入一個(gè)后綴名為.rul的文件,并且添加文件中所定義的所有規(guī)則。安裝卸載摸塊防火墻要過(guò)濾數(shù)據(jù)包,就需要將IP過(guò)濾驅(qū)動(dòng)按照用戶(hù)定義的規(guī)則進(jìn)行過(guò)濾。用戶(hù)通過(guò)添加規(guī)則可以將過(guò)濾規(guī)則添加到存儲(chǔ)模塊中并且顯示出來(lái),但想要將這些規(guī)則發(fā)送給IP過(guò)濾驅(qū)動(dòng),就需要對(duì)這些規(guī)則進(jìn)行安裝。安裝和卸載功能就是將過(guò)濾規(guī)則傳送給IP過(guò)濾驅(qū)動(dòng)或是將已安裝的規(guī)則從過(guò)濾驅(qū)動(dòng)中刪除。IP
32、封包過(guò)濾驅(qū)動(dòng)模塊該功能是整個(gè)防火墻的核心模塊,IP封包過(guò)濾驅(qū)動(dòng)可以按照用戶(hù)定義的規(guī)則執(zhí)行對(duì)數(shù)據(jù)包的阻止或是放行。防火墻設(shè)計(jì)程序關(guān)鍵類(lèi)派生類(lèi)CFireWallAPP每一個(gè)MFC的程序都需要有一個(gè)CwinApp的派生類(lèi),在本程序中的派生類(lèi)就是CFireWAllApp。此派生類(lèi)封裝了Windows應(yīng)用程序的初始化、運(yùn)行和終止,構(gòu)成了程序的主執(zhí)行線程。框架類(lèi)CMainFrame主框架類(lèi)CMainFrame構(gòu)成了整個(gè)程序的框架,其中包括菜單、按鈕、工具等。下面列出了CmainFrame類(lèi)中的一些主要方法和變量。class CMainFrame:public CFrameWndprotected:BOOL
33、 Installed;規(guī)則安裝TRUE-已安裝,F(xiàn)ALSE-未安裝protected: BOOL started;開(kāi)始過(guò)濾,TRUE-已開(kāi)始,F(xiàn)ALSE-未開(kāi)始protected:BOOL AddFilterToFw();安裝過(guò)濾鉤子。afx_msg void OnAppExit();退出程序afx_msg void OnButtonadd();添加規(guī)則afx_msg void OnButtondel();刪除規(guī)則afx_msg void OnButtonstart();開(kāi)始過(guò)濾afx_msg void OnButtonstop();停止過(guò)濾afx_msg void OnButtonInsta
34、ll();安裝規(guī)則afx_msg void OnButtonuninstall();卸載規(guī)則以上均為按鈕。afx_msg void OnMenuAddRule();添加規(guī)則afx_msg void OnMenuDelRule();刪除規(guī)則afx_msg void OnMenuInstallRules();安裝規(guī)則afx_msg void OnMenuUninstallRules();卸載規(guī)則afx_msg void OnMenuStart();開(kāi)始過(guò)濾afx_msg void OnMenuStop();停止過(guò)濾afx_msg void OnMenuSaveRules();保存規(guī)則afx_msg
35、 void OnMenuLoadRules();加載規(guī)則/AFX_MSG;在CMainFrame中定義了本程序的所有基本功能以及重要變量。文檔類(lèi)CFireWallDoc文檔類(lèi)是用來(lái)存儲(chǔ)數(shù)據(jù)的。在本程序中該文檔類(lèi)主要用于存儲(chǔ)用戶(hù)所定義的規(guī)則。當(dāng)用戶(hù)想要添加或刪除規(guī)則時(shí),就要向此類(lèi)中寫(xiě)入數(shù)據(jù)并保存起來(lái);當(dāng)視圖類(lèi)CFireWallView需要將用戶(hù)定義的規(guī)則顯示在規(guī)則列表時(shí),或者將規(guī)則安裝到驅(qū)動(dòng)或從驅(qū)動(dòng)中刪除時(shí),就需要從文檔類(lèi)中讀取數(shù)據(jù)。class CFireWallDoc:public CDocumentpublic:unsigned int nRules;規(guī)則數(shù)RuleInfo rulesMAX
36、_RULES;最大規(guī)則數(shù)int AddRule();添加規(guī)則void DeleteRule(unsigned int position);刪除規(guī)則void ResetRules();重置規(guī)則,即在加載規(guī)則前,需要?jiǎng)h除規(guī)則列表中及存儲(chǔ)在文檔類(lèi)中的所有規(guī)則;其中RuleInfo ruleMAX_RULES是_RuleInfo結(jié)構(gòu)體的一個(gè)變量,該數(shù)組用來(lái)存儲(chǔ)規(guī)則,_RuleInfo類(lèi)詳細(xì)情況見(jiàn)5.1.5節(jié)介紹。視圖類(lèi)CFireWallView視圖類(lèi)給用戶(hù)提供顯示信息,在本程序中,該類(lèi)主要用于在規(guī)則列表中顯示出存儲(chǔ)在文檔類(lèi)CFireWallDoc的規(guī)則。class CFireWallView:publ
37、ic CFormViewpublic:CFireWallDoc* GetDocument();指向文檔類(lèi),和文檔類(lèi)CFireWallDoc關(guān)聯(lián)。public:protected:virtual void OnInitialUpdate();初始化規(guī)則列表public:void UpdateList();更新規(guī)則列表 protected:void AddRuleToList();將文檔類(lèi)CFireWallDoc中的規(guī)則顯示出來(lái);_RuleInfo類(lèi)_RuleInfo類(lèi)用于構(gòu)成過(guò)濾規(guī)則的數(shù)據(jù)。typedef struct _RuleInfounsigned long sourceIp;unsign
38、ed long sourceMask;unsigned short sourcePort;unsigned long destinationIp;unsigned long destinationMask;unsigned short destinationPort;unsigned int protocol;int action;RuleInfo,*PRuleInfo;詳細(xì)設(shè)計(jì)主界面程序主界面如圖2。圖2 程序主界面添加過(guò)濾規(guī)則用戶(hù)點(diǎn)擊添加按鈕將會(huì)顯示已個(gè)“添加規(guī)則”對(duì)話框,如圖。 圖3 添加規(guī)則添加規(guī)則功能是將用戶(hù)設(shè)置好的對(duì)話框中的數(shù)據(jù)存儲(chǔ)到文檔類(lèi)中。此過(guò)程分兩個(gè)步驟:1、獲取對(duì)話框中的數(shù)
39、據(jù):result=inet_addr(m_ipsource,&srcIp);獲取源IP地址編輯框的值賦給srcIp。result = inet_addr(m_srcMask, &srcMask);獲取源IP掩碼編輯框的值賦給srcMask。result=inet_addr(m_ipdestination, &dstIp);獲取目的IP地址編輯框的值賦給dstIp。result = inet_addr(m_dstMask, &dstMask);獲取目的IP掩碼編輯框的值賦給dstMask。if(m_protocol = TCP)protocol = 6;else if(m_protocol =
40、UDP)protocol = 17;else if(m_protocol = ICMP)protocol = 1;else if(m_protocol = 所有)protocol = 0;if(m_action = 放行)cAction = 0;else if(m_action = 丟棄)cAction = 1;elsecAction = 2;srcPort = m_portsource;源端口dstPort = m_portDestination;目的端口2、將獲取到的數(shù)據(jù)添加到文檔類(lèi)中:BOOL CFireWallDoc:AddRule(unsigned long srcIp,unsign
41、ed 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;rulesnRules.sourcePort = srcPort;rulesnRules.destinationIp = dstIp;rulesnRules.destinationMask = dst
42、Mask;rulesnRules.destinationPort = dstPort;rulesnRtocol = protocol;rulesnRules.action = action;nRules+;return TRUE;添加規(guī)則功能流程圖如圖4。開(kāi)始開(kāi)始格式匹配?獲取對(duì)話框中的數(shù)據(jù)將數(shù)據(jù)添加到Doc中彈出添加規(guī)則對(duì)話框結(jié)束輸入正確的規(guī)則否是是圖4 添加規(guī)則流程圖刪除過(guò)濾規(guī)則刪除規(guī)則時(shí),首先要選定想刪除的規(guī)則,否則將彈出對(duì)話框提示選擇,再將選定的規(guī)則從文檔類(lèi)中刪除,同時(shí)更新規(guī)則界面中的顯示。當(dāng)正在進(jìn)行過(guò)濾時(shí),則要提示先停止過(guò)濾,才能刪除規(guī)則。刪除規(guī)則:void CMai
43、nFrame:OnButtondel()CFireWallView *view = (CFireWallView *)GetActiveView();CFireWallDoc *doc = (CFireWallDoc *)GetActiveDocument();POSITION pos = view-m_rules.GetFirstSelectedItemPosition(); if(started = TRUE) 是否正在過(guò)濾。AfxMessageBox(請(qǐng)先停止);return;elseif(doc-nRules m_rules.GetNextSelectedItem(pos); 選中規(guī)則
44、的下一條規(guī)則。CFireWallDoc *doco = (CFireWallDoc *)GetActiveDocument();doco-DeleteRule(position); view-UpdateList(); 刪除規(guī)則功能的流程如圖5。否否開(kāi)始獲取當(dāng)前選擇的規(guī)則正在過(guò)濾?調(diào)用DeleteRule()更新顯示結(jié)束停止過(guò)濾是圖5 刪除規(guī)則流程圖其中調(diào)用DeleteRule()的代碼為:CFireWallDoc *doco = (CFireWallDoc *)GetActiveDocument();關(guān)聯(lián)文檔類(lèi)doco-DeleteRule(position);調(diào)用DeleteRule()。
45、view-UpdateList();/更新顯示。void CFireWallDoc:DeleteRule(unsigned int position)if(position = nRules)return;if(position != nRules - 1)如果刪除的規(guī)則不是最后一條,則將它刪除后,后面的規(guī)則要往前移動(dòng)unsigned int i;for(i = position + 1;inRules;i+)rulesi - 1.sourceIp = rulesi.sourceIp;rulesi - 1.sourceMask = rulesi.sourceMask;rulesi - 1.so
46、urcePort = rulesi.sourcePort;rulesi - 1.destinationIp = 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。刪除刪除開(kāi)始是最后一條規(guī)則?后面規(guī)則
47、往前移刪除結(jié)束獲取當(dāng)前規(guī)則否是圖6 DeleteRule()的調(diào)用驅(qū)動(dòng)程序設(shè)計(jì)簡(jiǎn)介基于Firewall-Hook Driver的包過(guò)濾驅(qū)動(dòng)程序運(yùn)行效率高,主要用于IP過(guò)濾驅(qū)動(dòng)中所經(jīng)過(guò)的所有數(shù)據(jù)包,并且根據(jù)過(guò)濾規(guī)則對(duì)數(shù)據(jù)包進(jìn)行篩選,判斷是否符合要求通過(guò),或者攔截。同時(shí)處理上級(jí)應(yīng)用發(fā)來(lái)的IRP,接收程序發(fā)送的過(guò)濾規(guī)則等。安裝過(guò)濾函數(shù)之前,先將IP_SET_FIREWALL_HOOK_INFO結(jié)構(gòu)中的FirewallPtr指針指向過(guò)濾函數(shù)的地址,Add值為T(mén)RUE,并設(shè)置該函數(shù)的優(yōu)先級(jí)Priority,然后向IP設(shè)備IOCTL IOCTL_IP_SET_FIREWALL_HOOK發(fā)送控制碼,這樣就完
48、成了對(duì)過(guò)濾函數(shù)的安裝。卸載過(guò)濾函數(shù)的時(shí)候只需要將Add值設(shè)為FALSE,其他參數(shù)和安裝時(shí)一樣即可。每一個(gè)過(guò)濾函數(shù)都可以設(shè)置優(yōu)先級(jí),系統(tǒng)將會(huì)按照優(yōu)先級(jí)的次序依次調(diào)用這些函數(shù),直到某個(gè)函數(shù)返回“丟棄包”為止。只有所有的過(guò)濾函數(shù)都返回“允許包”時(shí),這個(gè)包才能順利通過(guò)防火墻。結(jié)構(gòu)圖驅(qū)動(dòng)程序結(jié)構(gòu)如圖7。圖7 驅(qū)動(dòng)結(jié)構(gòu)圖該驅(qū)動(dòng)的優(yōu)點(diǎn)在 HYPERLINK /keywords/windows.html t _blank Windows中這不是開(kāi)發(fā)防火墻的唯一方法,其它還有例如 NDIS防火墻,TDI防火墻,Winsock分層防火墻,包過(guò)濾API等等。而Filter-Hook Driver的優(yōu)點(diǎn)在于:1、 該
49、驅(qū)動(dòng)所具備的特性可以使防火墻過(guò)濾所有IP層(或以上)的數(shù)據(jù)。但不能過(guò)濾更低層的頭部數(shù)據(jù),例如:不能過(guò)濾以太幀數(shù)據(jù)。需要用NDIS過(guò)濾器來(lái)做。2、 這種驅(qū)動(dòng)非常簡(jiǎn)單方便。安裝過(guò)濾驅(qū)動(dòng)和執(zhí)行過(guò)濾功能非常容易。但包過(guò)濾API(Packet Filtering API)更加容易使用,盡管它缺少?gòu)椥?,例如不能處理包的?nèi)容,不能用包過(guò)濾API修改內(nèi)容。本程序的驅(qū)動(dòng)設(shè)計(jì)本驅(qū)動(dòng)的設(shè)計(jì)核心是通過(guò)TDriver類(lèi)向DrvFltIp驅(qū)動(dòng)發(fā)送控制代碼(START_IP_HOOK、STOP_IP_HOOK、ADD_FILTER、CLEAR_FILTER),來(lái)實(shí)現(xiàn)過(guò)濾數(shù)據(jù)包的功能。1、程序初始化時(shí),調(diào)用LoadDrive
50、r()加載DrvFltIp驅(qū)動(dòng):CMainFrame:OnCreate()ipFltDrv.LoadDriver(IpFilterDriver,System32DriversIpFltDrv.sys,NULL,TRUE);2、用戶(hù)點(diǎn)擊“開(kāi)始”按鈕,程序會(huì)發(fā)送控制代碼START_IP_HOOK給驅(qū)動(dòng),并且開(kāi)始過(guò)濾:CMainFrame:OnButtonstart()filterDriver.WriteIo(START_IP_HOOK,NULL,0);3、用戶(hù)點(diǎn)擊“停止”按鈕,程序會(huì)發(fā)送控制代碼STOP _IP_HOOK給驅(qū)動(dòng),并且停止過(guò)濾:CMainFrame:OnButtonstop()filterDriver.WriteIo(STOP_IP_HOOK,NULL,0);4、用戶(hù)點(diǎn)擊“安裝規(guī)則”按鈕時(shí),程序會(huì)發(fā)送控制代碼ADD_FIL
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 科技驅(qū)動(dòng)農(nóng)產(chǎn)品電商
- 科技農(nóng)業(yè)投資視角
- 專(zhuān)業(yè)房產(chǎn)經(jīng)紀(jì)服務(wù)協(xié)議2024版范本版
- 二零二四宇通客車(chē)零部件銷(xiāo)售代理及市場(chǎng)拓展合作協(xié)議3篇
- 2025年度電商新零售線下體驗(yàn)店合作合同3篇
- 專(zhuān)業(yè)銷(xiāo)售服務(wù)協(xié)議書(shū)2024年3篇
- 2025年度跨境電商物流中心場(chǎng)地承包經(jīng)營(yíng)合同4篇
- 2025年度航空航天復(fù)合材料加工技術(shù)合同4篇
- 2025年度茶樓裝修工程合同標(biāo)準(zhǔn)樣本8篇
- 2025年度教育機(jī)構(gòu)場(chǎng)地租賃保證金合同8篇
- 2024版塑料購(gòu)銷(xiāo)合同范本買(mǎi)賣(mài)
- 【高一上】【期末話收獲 家校話未來(lái)】期末家長(zhǎng)會(huì)
- JJF 2184-2025電子計(jì)價(jià)秤型式評(píng)價(jià)大綱(試行)
- GB/T 44890-2024行政許可工作規(guī)范
- 有毒有害氣體崗位操作規(guī)程(3篇)
- 二年級(jí)下冊(cè)加減混合豎式練習(xí)360題附答案
- 吞咽解剖和生理研究
- TSG11-2020 鍋爐安全技術(shù)規(guī)程
- 汽輪機(jī)盤(pán)車(chē)課件
- 異地就醫(yī)備案?jìng)€(gè)人承諾書(shū)
- 蘇教版五年級(jí)數(shù)學(xué)下冊(cè)解方程五種類(lèi)型50題
評(píng)論
0/150
提交評(píng)論