【正文】
. 1 國內(nèi)外研究現(xiàn)狀 ...................................................... 1 本課題研究的意義 .................................................... 1 本課題的研究方法 .................................................... 2 2 相關理論技術基礎 ....................................................... 2 防火墻技術簡介 ...................................................... 2 防火墻簡介 ....................................................... 2 ....................................................... 2 防火墻的局限性 ................................................... 3 VISUAL C++ ............................................ 3 3 總體設計方案 ........................................................... 4 設計過程 ............................................................ 4 設計方案 ............................................................ 4 4 過濾鉤子驅動的實現(xiàn) ..................................................... 5 FILTER_HOOK DRIVER 概述 ................................................. 5 過濾鉤子驅動的實現(xiàn) ................................................... 6 創(chuàng)建內(nèi)核模式驅動 ................................................. 6 設置和清除過濾鉤子 ............................................... 8 過濾器鉤子的 I/O控制 ............................................. 9 .................................................... 10 5 客戶端應用程序 ........................................................ 11 界面設計 ........................................................... 12 編碼規(guī)則 ........................................................... 13 主要的類 ........................................................... 13 核心代碼 ........................................................... 14 ............................................... 15 ............................................... 15 ........................................................ 16 結 論 .................................................................. 17 參考文獻 .................................................................. 17 致 謝 .................................................................. 19 聲 明 .................................................................. 20 第 1 頁 共 20 頁 1 引言 課題背景 Inter 的出現(xiàn)及迅速發(fā)展給現(xiàn)代人們的生產(chǎn)和生活都帶來了前所未有的飛躍。過濾鉤子驅動模塊主要功能是注冊過濾鉤子回調(diào)函數(shù),并按照用戶提供的過濾規(guī)則進行數(shù)據(jù)包的過濾;用戶操作界面模塊 的 主要功能是實現(xiàn) 用戶添加、刪除 過濾 規(guī)則,同時允許用戶以文件的形式保存所添加的過濾規(guī)則 。人們的學習、工作以及生活越來越依賴于計算機網(wǎng)絡,隨之 也 出現(xiàn)了許多網(wǎng)絡安全問題,因此當前網(wǎng)絡安全產(chǎn)品備受人們的重視。防火墻是保障系統(tǒng)安全的一種有效手段,它可以將個人電腦與不完全的網(wǎng)絡隔離開,按照預先設定的規(guī)則決定是否允許數(shù)據(jù)包 通過,以此保障了個人電腦的安全。 關鍵詞 : 防火墻;包過濾;鉤子;回調(diào)函數(shù) The Design and Realization of Simple Firewall for Windows Abstract With the rapid development of Inter, it brings us great convenience. We bee more and more dependent on the Inter, but it brought a lot of questions of work security, thereby the products of work security attract much attention. Firewall is an effective means to secure the system. It can separate personal puter from unsafe work, according to the preset rules to decide whether to let the packet through. It guarantees the safety of personal puter. This paper is based on Windows 2020, DDK for Windows 2020 and Visual C++ platform to develop simple firewall system. There are two parts in the system, which are hook filter driver module and the module of user interface. The main function of hook filter driver module is to register hook callback function and filter packet according to rules. The main function of user interface module is to add or delete filter rules, and save filter rules as file. Key words: firewall。互連網(wǎng)已經(jīng)成為擴展個人和企業(yè)發(fā)展的重要工具,人們已經(jīng)進入了信息時代。由于黑客攻擊和信息泄露并不是直接對系統(tǒng)造成損害,所以往往不能引起人們的注意。國內(nèi)外 已有數(shù) 家公司推出 了功能各不相同的防火墻產(chǎn)品系列。另外還有多種防火墻產(chǎn)品正朝 著數(shù)據(jù)安全與用戶認證、防止病毒與黑客侵入等方向發(fā)展。 個人上網(wǎng)用戶多使用 Windows 操作系統(tǒng),而 Windows 操作系統(tǒng)本身的安全性就不高。因此,為了保護主機的安全 第 2 頁 共 20 頁 通信,研究有效的個人防火墻技術很有必要。這個回調(diào)函數(shù) 被看作一個過濾鉤子。這就需要人們給網(wǎng)絡加一道安全之門,而這道門的重要守護者就是防火墻 。 在邏輯上,防火墻是 一 個分離器,一個限制器,也是一個分析器。那些不符合規(guī)則的數(shù)據(jù)包將被過濾 掉,以保證網(wǎng)絡的安全。這一點對系統(tǒng)安全是非常重要的,只有那些被認為 “可信賴的 ”服務才允許通過防火墻。 。和代理服務器一樣,外面的世界看到的只是應用網(wǎng)關的 IP 地址,這就有效地保護了內(nèi)部網(wǎng)絡。另外,防火墻很難防范來自于網(wǎng)絡內(nèi)部的攻擊以及病毒的威脅。它 是一個 C++實現(xiàn), 提供了一個功能強大的集成開發(fā)環(huán)境;另一方面,它提供了一些 C++類庫,其中最具影響力的是 MFC。 MFC 是一個很大的、擴展了的 C++類層次結構,它能使開發(fā) Windows 應用程序變得更加容易。 與傳統(tǒng)上使用 C 語言直接訪問 Windows API 相反,使用 MFC 和 C++的優(yōu)點是 MFC已經(jīng)包含和壓縮了所有標準的“樣板文件”代碼,這些代碼是所有用 C 編寫的 Windows程序所必需的。 使用 MFC 的最大優(yōu)點是它為你做了所有最難做的事。 3 總體 設計方案 設計過程 防火墻是對所截取的數(shù)據(jù)包按用戶定義的規(guī)則進行過濾的,所以要開發(fā)設計一個防火墻,第一步要實現(xiàn)對數(shù)據(jù)包的截取。也就是是說, Winpcap 不能阻塞、過濾或控制其他應用程序數(shù)據(jù)包的收發(fā),它僅僅是監(jiān)聽共享網(wǎng)絡上傳送的數(shù)據(jù)報。做折中比較后,在用驅動程序攔截數(shù)據(jù)包的方法中選擇了一個最簡單的方法:使用 Win2020 DDK 中提供的 FilterHook Driver 來實現(xiàn)數(shù)據(jù)包的過濾 。 程序模塊 該模塊主要就是用戶所看到的程序界面,是用戶和防火墻進行對話的對象。它是一種 KMD(Kernel Mode Driver 內(nèi)核模式驅動 ),與 IpFilterDrive 相配合。 它允許用戶注冊自己的 ip 數(shù)據(jù)報處理函數(shù)。操作系統(tǒng)提供的 ip 過濾驅動程序使用這個過濾鉤子來判斷 ip 數(shù)據(jù)包的處理方式。內(nèi)核中的過濾器鉤子驅動將本機進出的所有封包都傳入到我們的虛擬設備中,按照我們提供的過濾規(guī)則進行處理。 Typedef struct IPHearder { UCHAR iphverLen。 //封包標適,唯一 標識 發(fā)送的每一個數(shù)據(jù)報 USHORY ipFlags。 //效驗和 ULONG ipSoruce。 TCP 頭 : typedef stuct_TCPHeader { USHORT sourcePort。 //ack 序號 UCHAR dataoffset。 //校驗和 USHORT urgenPointer。 //封包長度 USHORT checksum。 不過,一般情況下要根據(jù)過濾器鉤子函數(shù)的基本功能來命名。 這 3 種回復響應代碼所代表的含義描述如下: 第 8 頁 共 20 頁 PF PASS 表小 IP 過濾驅動程序處理該數(shù)據(jù)包,并將結果動作回復給 IP 協(xié)議棧. IP過濾器驅動如何過濾數(shù)據(jù)包由它本身和包過濾 API 接口的設置方式來決定;如果過濾器鉤子認為自己不需要處理該數(shù)據(jù)包,而是讓 IP 過濾器驅動過濾包,則應該返回該 PF_PASS。為了記錄和清除鉤子回調(diào)函數(shù),過濾器鉤子驅動必須首先用設備對象的指針為 IP 過 濾 器 驅 動 和IOCTL_PF_SET_EXTENSION_POINTER 創(chuàng)建一個 IRP,然后,過濾器鉤子驅動把這個 IRP提交給 IP 過濾器驅動,過濾器鉤子驅動設置或清除鉤子回歸函數(shù)的過程描述是:為了獲得IP 過濾器 驅 動的設備對象指針,過濾器鉤子驅動需要 調(diào)用函數(shù) IoGetDeviceObjectPointer。 //指定這個對象要求訪問的權限 OUT PFILE_OBJECT *FileObject。 在這次調(diào)用中,過濾器鉤子驅動傳遞了指定 IOCTL_PF_SET_EXTENSION_POINTER值的參數(shù)、設備對象指針以及包含 PF_SET_EXTENSION_HOOK_INFO 結構的 緩沖區(qū)。當有數(shù)據(jù)包發(fā)送或接收時, IP 過濾驅動程序就要調(diào)用這些回調(diào)函數(shù)。 PF_SET_EXTENSION_HOOK_INFO 結構的定義如下,其包含回調(diào)函數(shù)的指針: Typedef struct_PF_SET_EXTENSION_HOOK_INFO { PacketFilterExtensionPtr ExtensionPointer。這個 Dispatch 例程處理發(fā)來的 I/O 控制請求 , 在 DriverEntry 入口函數(shù)中為這個 Dispatch 例程設置和輸出入口點 。 下面是典型過濾器鉤子驅動的備控制例程處理兩種 I/O 控制請求 : SetHook IOCTL 表示注冊一個過濾器鉤子 ;