畢業論文範文:個人防火牆的實現

摘 要:論文通過介紹如何運用包過濾技術實現個人防火牆,深入的剖析了個人防火牆中所用到的各種技術,並重點介紹了通過微軟的ndis 中間驅動程式實現網路封裝包,以及驅動程式與應用程式之間的通訊方法.

關鍵字:包過濾技術 ndis 中間層驅動程式

隨著網路的迅速發展,各種各樣的網路軟體也隨之出現,人們的生活和學習對網路的依賴也越來越多,但問題也接踵而來,網站被攻擊,病毒泛濫,個人信息被竊取,使人們面臨這樣一個問題:網路是否安全?

而防火牆正是網路的保護傘,形形色色的防火牆很多,本文通過介紹包過濾技術實現個人防火牆,使大家對防火牆的知識有進一步的了解。

一、防火牆和包過濾技術簡介

防火牆是一種用於在兩個網路間進行訪問控制的設備,防火牆系統防範的對象是來自被保護的網路的外部的對網路安全的威脅,它通過檢測、限制、更改跨越防火牆的數據流,儘可能的實現對外部網路的安全保護。

而包過濾技術是防火牆最基本的實現技術,具有包過濾技術的裝置是用來控制內、外網路數據流入和流出,包過濾技術的數據包大部分是基於tcp/ip協定平台的,對數據流的每個包進行檢查,根據數據報的源地址、目的地址、tcp和ip的端口號,以及tcp的其他狀態來確定是否允許數據包通過。

二、截獲網路封裝包

截獲數據包是實現一個防火牆的第一步,截獲數據包的方法有很多種,既可以在用戶態下攔截網路數據包,又可以在核心狀態下進行數據包截獲。

在用戶態下進行網路數據包攔截有以下幾種方法:

(1)winsock layered service provider (lsp)。

(2)windows 2017 包過濾接口。

(3)替換系統自帶的winsock動態連線庫。

很顯然,在用戶態下可以很簡單的進行數據包攔截,但其最致命的缺點就是只能在winsock層次上進行,而對於網路協定棧中底層協定的數據包無法進行處理。對於一些木馬和病毒來說很容易避開這個層次的防火牆。

因此大多數的個人防火牆選擇利用網路驅動程式來實現的。例如用中間層驅動程式來截獲數據包。

中間層驅動介於協定層驅動和小連線埠驅動之間,它能夠截獲所有的網路數據包(如果是乙太網那就是以太幀)。ndis中間層驅動的套用很廣泛,不僅僅是個人防火牆,還可以用來實現vpn,nat,pppoverethernet以及vlan。中間層驅動的概念是在window nt sp4之後才有的,因此對於windows9x來說無法直接利用中間層驅動的功能。windows ddk提供了兩個著名的中間層驅動例子:passthru以及mux。開發人員可以在passthru的基礎上進行開發,mux則實現了vlan功能。目前個人防火牆的產品還很少用到這種技術,主要的原因在於中間層驅動的安裝過於複雜,尤其是在windows nt下。windows 2017下可以通過程式實現自動安裝,但是如果驅動沒有經過數字簽名的話,系統會提示用戶是否繼續安裝。中層層驅動功能強大,應該是今後個人防火牆技術的趨勢所在,特別是一些附加功能的實現。

圖1. ndis驅動程式模型

三、驅動程式和應用程式間的通訊

當驅動程式截獲網路數據包後,驅動程式要和應用程式進行通訊,通知應用程式對數據包進行判斷,如果符合過濾規則,則接受數據包,否則,則放棄該數據包,其步驟大致如下:

(1)應用程式創建一事件event;

(2)應用程式通過createfile創建驅動程式實例;

(3)把該事件的句柄傳給驅動程式;

(4)驅動程式通過devicecontrol函式接受event的句柄;

(5)應用程式通過deviceiocontrol函式傳遞控制驅動程式的訊息;

(6)驅動程式通過dispatch歷程得到應用程式傳來的訊息,然後根據訊息類型進行不同的服務;

(7)把結果數據放入共享記憶體區,設定event事件通知應用程式所請求的事情已經辦完;

(8)應用程式通過waitforsingleobject來獲知事件發生;

(9)應用程式在共享記憶體區獲得數據,並重置該事件。

圖2  驅動程式與應用程式通訊模型

四、過濾規則設定

包過濾防火牆的過濾規則集由若干條規則組成,它應涵蓋對所有出入防火牆的數據包的處理方法,

對於沒有明確定義的數據包,應該有一個預設處理方法;過濾規則應易於理解,易於編輯修改;

同時應具備一致性檢測機制,防止衝突。ip包過濾的依據主要是根據ip包頭部信息如源地址和目的地址進行過濾,

如果ip頭中的協定欄位表明封裝協定為icmp、tcp或udp,那么再根據icmp頭信息(類型和代碼值)、

tcp頭信息(源連線埠和目的連線埠)或udp頭信息(源連線埠和目的連線埠)執行過濾,其他的還有mac地址過濾。

套用層協定過濾要求主要包括ftp過濾、基於rpc的套用服務過濾、基於udp的套用服務過濾要求以及動態包過濾技術等。

在一般情況下,我們可以從以下幾個方面來進行訪問規則的設定:

(1)禁止一切源路由尋徑的ip包通過;

(2)ip包的源地址和目的地址;

(3)ip包中tcp與udp的源連線埠和目的連線埠;

(4)運行協定;

(5)ip包的選擇。

動作 協定 方向 訪問時間 遠端ip 連線埠 應用程式 備註

放行 ip 流進 工作時間 202.114.165.240 8080 ie

詢問 tcp 流進 工作時間 202.114.165.192 1080 ie

拒絕 ip 流出 工作時間 202.114.204.153 80 ie

圖3 一個典型的規則表

五、記錄和報警

防火牆處理完整日誌的方法:防火牆規定了對於符合條件的報文做日誌,應該提供日誌信息管理和存儲方法。

提供自動日誌掃描:指防火牆是否具有日誌的自動分析和掃描功能,這可以獲得更詳細的統計結果,達到事後分析、亡羊補牢的目的。

提供自動報表、日誌報告書寫器:防火牆實現的一種輸出方式,提供自動報表和日誌報告功能。

動作 開始時間

-結束時間 協定 進流量 出流量 本地ip:連線埠-

遠端ip:連線埠 應用程式 備註

放行 21:54 -

22:00 tcp 200 400 202.114.165.240:80

202.114.165.225:80 ie

放行 22:01-

22:10 ip 250 100 202.114.165.240:80

202.114.165.193:80 ie

圖4 一個典型的日誌記錄表

警告通知機制:防火牆應提供告警機制,在檢測到入侵網路以及設備運轉異常情況時,通過告警來通知管理員採取必要的措施,包括e-mail、呼機、手機等。

提供簡要報表(按照用戶id或ip 地址):防火牆實現的一種輸出方式,按要求提供報表分類列印。

提供實時統計:防火牆實現的一種輸出方式,日誌分析後所獲得的智慧型統計結果,一般是圖表顯示。

用包過濾技術實現防火牆較為容易,具有比較好的網路安全保障功能,但也存在不足之處,由於過濾技術中無法包括用戶名,而僅僅是客戶機的ip地址,那么如果要過濾用戶名就不能使用包過濾技術了,另外,由於包過濾技術遵循”未禁止就允許通過”的規則,因此,一些未經禁止的包的進出,可能對網路產生安全威脅。今後防火牆的發展會朝著簡單化、安全化方向邁進, 綜合包過濾和套用代理的功能,達到兩者的有效結合,實現新型加密算法的設計,使數據的傳輸更加安全, 會和ids、病毒檢測等相關安全產品聯合起來,充分發揮各自的長處,協同配合,共同建立一個有效的安全防範體系。

參考文獻:

[1] terry william ogletree. 防火牆原理與實施[m] . 北京: 機械工業出版社,2017

[2] 謝希仁. 計算機網路技術[m] . 北京: 電子工業出版社,1999

[3] chris cant. windows wdm設備驅動程式開發指南[m]. 北京:機械工業出版社,2017