• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      一種基于網(wǎng)絡(luò)驅(qū)動(dòng)的Windows防火墻設(shè)計(jì)

      2017-12-21 22:10:12張輝
      網(wǎng)絡(luò)空間安全 2017年10期
      關(guān)鍵詞:防火墻

      張輝

      摘 要:論文提供了一種Windows防火墻設(shè)計(jì)方案,它是基于Windows 2000操作系統(tǒng)、DDK for Windows 2000工具開發(fā)包以及VC++6.0等平臺(tái)而開發(fā)的程序。該程序按照功能模式劃分,可分為兩大塊內(nèi)容,一個(gè)是Filter_Hook Driver驅(qū)動(dòng),另一個(gè)就是用戶操作界面了。在這里,F(xiàn)ilter_Hook Driver驅(qū)動(dòng)的作用是注冊(cè)過(guò)濾鉤子回調(diào)函數(shù),并且按照用戶提供的過(guò)濾規(guī)則進(jìn)行數(shù)據(jù)包的過(guò)濾;用戶操作界面的作用是實(shí)現(xiàn)用戶自定義去增添與刪減過(guò)濾規(guī)則,用戶并且可以自行以文件形式來(lái)保存增添進(jìn)來(lái)的過(guò)濾規(guī)則。

      關(guān)鍵詞:網(wǎng)絡(luò)驅(qū)動(dòng);防火墻;回調(diào)函數(shù)

      中圖分類號(hào): TP309 文獻(xiàn)標(biāo)識(shí)碼:B

      1 引言

      Internet的高速發(fā)展對(duì)人們的生活習(xí)慣、事物認(rèn)知都產(chǎn)生了巨大的改變。人們體驗(yàn)著互聯(lián)網(wǎng)在生活上所帶來(lái)的全新感知,習(xí)慣著信息時(shí)代所帶來(lái)的各種的便利。然而,網(wǎng)絡(luò)在給大家?guī)?lái)生活便利的同時(shí),也給人們的安全帶來(lái)了威脅。防火墻作為一種重要的網(wǎng)絡(luò)安全技術(shù),越來(lái)越發(fā)揮著重要的作用。

      防火墻的作用是按用戶自定義的規(guī)則來(lái)過(guò)濾對(duì)其所抓取的數(shù)據(jù)包,因此防火墻設(shè)計(jì)的核心任務(wù)就是要實(shí)現(xiàn)對(duì)數(shù)據(jù)包的抓取。抓取數(shù)據(jù)包也有很多方法,比較簡(jiǎn)單的方法是使用一個(gè)基于Windows平臺(tái)的免費(fèi)公共網(wǎng)絡(luò)訪問(wèn)系統(tǒng)—Winpcap(Windows Packet Capture),但Winpcap的主要功能是獨(dú)立于主機(jī)協(xié)議(如TCP/IP)去發(fā)送和接收原始數(shù)據(jù)的。這就意味著,Winpcap并不能夠阻塞、過(guò)濾或者控制其它的應(yīng)用程序?qū)?shù)據(jù)包的接收和發(fā)送,它的作用僅僅是監(jiān)聽(tīng)網(wǎng)絡(luò)上傳送的數(shù)據(jù)包。使用Win2000 DDK中提供的Filter-Hook Driver驅(qū)動(dòng)(過(guò)濾鉤子驅(qū)動(dòng))來(lái)實(shí)現(xiàn)數(shù)對(duì)據(jù)包的過(guò)濾是一個(gè)更好的選擇[1,2]。

      2 程序設(shè)計(jì)方案

      如圖1所示,基于網(wǎng)絡(luò)驅(qū)動(dòng)的Windows防火墻設(shè)計(jì)可以分成兩個(gè)部分,用戶界面代碼部分和過(guò)濾鉤子驅(qū)動(dòng)代碼部分。而過(guò)濾鉤子驅(qū)動(dòng)代碼部分又是依賴于網(wǎng)絡(luò)適配器模塊,網(wǎng)絡(luò)適配器模塊是基于IP Filter_Hook代碼和網(wǎng)絡(luò)適配器代碼兩部分。也就是說(shuō)只要將IP Filter_Filter代碼以及網(wǎng)絡(luò)適配器驅(qū)動(dòng)代碼做出編寫,那么這個(gè)設(shè)計(jì)的過(guò)濾鉤子驅(qū)動(dòng)代碼部分也就能夠有了大概的輪廓;在用戶界面代碼部分,只要通過(guò)基礎(chǔ)的代碼編寫出簡(jiǎn)易的用戶界面即可。

      利用在Windows 2000 DDK中所介紹的Filter-Hook Driver驅(qū)動(dòng)來(lái)實(shí)現(xiàn)對(duì)所有的進(jìn)出接口的數(shù)據(jù)進(jìn)行過(guò)濾。這其中主要是包含這些過(guò)程:首先開始先要確定并且搭建Kernel模式Filter-Hook Driver驅(qū)動(dòng),接下來(lái)就是要獲取所有指向IP Filter Driver驅(qū)動(dòng)的指針,然后就要運(yùn)用前面所獲取到的指針,來(lái)進(jìn)行發(fā)送有不同類型的IRP(一種規(guī)范化的技術(shù)文檔)將過(guò)濾函數(shù)實(shí)現(xiàn)安裝,再接著將抓取到的數(shù)據(jù)準(zhǔn)備過(guò)濾,最后在過(guò)濾數(shù)據(jù)完成以后,將能夠過(guò)濾函數(shù)撤消掉[3]。

      在用戶界面代碼部分所涉及到的內(nèi)容其實(shí)就是用戶能夠看到的程序界面,也就是用戶和防火墻進(jìn)行對(duì)話的對(duì)象。它負(fù)責(zé)管理用戶自己定義的過(guò)濾規(guī)則,并且與數(shù)據(jù)Filter_Hook驅(qū)動(dòng)功能來(lái)實(shí)現(xiàn)互相通信。還有就是主要利用Filter_Hook Driver驅(qū)動(dòng)模塊的輸出接口所提供的對(duì)象指針來(lái)實(shí)現(xiàn)注冊(cè)過(guò)濾函數(shù),撤消過(guò)濾函數(shù),安裝新的過(guò)濾規(guī)則,清除所有規(guī)則這四個(gè)功能。

      3 Filter_Hook Driver驅(qū)動(dòng)的實(shí)現(xiàn)

      3.1 創(chuàng)建Kernel模式驅(qū)動(dòng)

      首先需要通過(guò)Filter_Hook Driver驅(qū)動(dòng)程序來(lái)設(shè)置回調(diào)函數(shù),在過(guò)濾鉤子驅(qū)動(dòng)程序作為該驅(qū)動(dòng)程序的主體,并且通過(guò)系統(tǒng)提供的IPFilter Driver驅(qū)動(dòng)注冊(cè)這些回調(diào)函數(shù),做完這些之后,IP Filter_Driver驅(qū)動(dòng)就可以通過(guò)濾器鉤子來(lái)想辦法去處理傳入或者傳出的數(shù)據(jù)包。PacketFilterExtensionPtr數(shù)據(jù)類型的定義是用來(lái)定義注冊(cè)過(guò)的過(guò)濾鉤子驅(qū)動(dòng)。

      Filter_Hook Driver驅(qū)動(dòng)函數(shù)會(huì)對(duì)這些傳進(jìn)來(lái)以及傳出去的數(shù)據(jù)包來(lái)做一些不一樣的處理動(dòng)作。開始是將數(shù)據(jù)包的專屬信息和IP Filter Driver驅(qū)動(dòng)提供給過(guò)Filter Hook的信息來(lái)做一次對(duì)比,通過(guò)這個(gè)來(lái)對(duì)比,數(shù)據(jù)包接下來(lái)該做怎樣的處理。接下來(lái),在Filter_Hook Driver驅(qū)動(dòng)對(duì)數(shù)據(jù)包做完檢測(cè)之后,就去回復(fù)響應(yīng)代碼或者將PF_PASS給IP Filter_Hook,并且告知IP Filter_Hook驅(qū)動(dòng)對(duì)數(shù)據(jù)包來(lái)做出處理[4]。

      3.2 設(shè)置和清除Filter_Hook

      通過(guò)Driver Entry函數(shù)來(lái)自定義驅(qū)動(dòng)初始化的部分以及驅(qū)動(dòng)卸載的部分。Filter_Hook Driver驅(qū)動(dòng)程序在設(shè)置Filter Hook回調(diào)函數(shù)的時(shí)候,并且對(duì)IP Filter Hook驅(qū)動(dòng)的每個(gè)傳入IP數(shù)據(jù)包或者傳出的IP數(shù)據(jù)包發(fā)出通知,讓它調(diào)來(lái)使用鉤子回調(diào)函數(shù)。Filter Hook會(huì)先清除之前注冊(cè)的過(guò)濾函數(shù)。Filter Hook驅(qū)動(dòng)首先需要將設(shè)備對(duì)象的指針作為IP過(guò)濾器驅(qū)動(dòng)來(lái)創(chuàng)建一個(gè)IRP,之后,F(xiàn)ilter_Hook Driver驅(qū)動(dòng)把這個(gè)IRP發(fā)送給IP Filter Hook驅(qū)動(dòng),這樣是為了記錄并且清除回調(diào)函數(shù)[5]。

      對(duì)Filter_Hook Driver驅(qū)動(dòng)的設(shè)置或者清除回歸函數(shù)的方式描述:想要獲得IP Filter Hook驅(qū)動(dòng)的對(duì)象指針,F(xiàn)ilter_Hook Driver驅(qū)動(dòng)函數(shù)就需要調(diào)用IoGet函數(shù)。在這次調(diào)用中,F(xiàn)ilter_Hook Driver驅(qū)動(dòng)傳遞了指向緩沖區(qū)的指針以及容納返回的文件和設(shè)備的指針。Filter_Hook Driver驅(qū)動(dòng)程序想要建立一個(gè)IRP,需要使用PF_SET_EXTENSION_POINTER控制碼,并且把它提交給IP Filter Hook驅(qū)動(dòng)程序來(lái)實(shí)現(xiàn),通常情況下,F(xiàn)ilter-hook驅(qū)動(dòng)程序建立所需的IRP都是通過(guò)調(diào)用IoBuildDeviceIoControlRequest函數(shù)。

      END_MESSAGE_MAP()

      CFirewallApp::CFirewallApp()

      {}

      CFirewallApp theApp;

      SetRegistryKey(_T("FirewallApp"));

      if (!ProcessShellCommand(cmdInfo))

      return FALSE;

      enum { IDD = IDD_ABOUTBOX };

      protected:

      }

      BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)

      END_MESSAGE_MAP()

      在這次調(diào)用之中,過(guò)濾器鉤子驅(qū)動(dòng)發(fā)送了指定值的IOCTL_PF_SET_EXTENSION參數(shù)以及包括了PF_SET_EXTENSION_HOOK_INFO結(jié)構(gòu)的緩沖區(qū)域。同時(shí)為了設(shè)置Filter_Hook,這個(gè)結(jié)構(gòu)還包含有設(shè)置Filter_Hook回調(diào)函數(shù)地址的信息。這個(gè)控制碼也被用來(lái)清除回調(diào)函數(shù)從IP Filter Hook的程序之中[6,7]。

      3.3 實(shí)現(xiàn)FILTER_HOOK

      將兩個(gè)或者兩個(gè)以上的過(guò)濾規(guī)則連在一起的鏈表稱之為過(guò)濾列表,在這個(gè)程序里它定自義了一個(gè)CFilterList的結(jié)構(gòu),也就是將指針指向后一個(gè)過(guò)濾規(guī)則的pNext指針添加到每個(gè)規(guī)則上面,通過(guò)這種辦法就能夠把兩個(gè)或者兩個(gè)以上的過(guò)濾規(guī)則連在一起形成過(guò)濾列表。而需要做的就是去記錄首地址就能夠來(lái)整理這些所有的過(guò)濾規(guī)則。在鉤子回調(diào)函數(shù)中,當(dāng)有數(shù)據(jù)包需要通過(guò)時(shí),就得去遍歷整個(gè)列表。

      函數(shù)開始過(guò)濾,首先將保重的內(nèi)容復(fù)制到共享的內(nèi)存中,接著來(lái)判斷是否符合IP規(guī)則。如果符合IP規(guī)則,那么就對(duì)IP規(guī)則去做出處理,并且接著選取下條過(guò)濾規(guī)則,來(lái)做出判斷。如果不符合IP規(guī)則的,就再去檢查看是否符合ICMP規(guī)則,如果符合ICMP的規(guī)則,那么就按ICMP規(guī)則來(lái)處理,并且選取下一條規(guī)則,來(lái)做出判斷。如果ICMP規(guī)則也不符合的話,那么久去判斷看是否符合TCP規(guī)則,如果符合TCP規(guī)則的話,那么就按照TCP的規(guī)則來(lái)處理,并且選取下一條規(guī)則。但是,要是不符合的話,那么就檢查看是否符合UDP規(guī)則,如果符合UDP的規(guī)則的話,那么就按照UDP的規(guī)則來(lái)處理,并且來(lái)選取下一條規(guī)則。像上面的情況一樣,如果不符合規(guī)則,那么就結(jié)束規(guī)則的過(guò)濾。

      通過(guò)CDriver類向驅(qū)動(dòng)程序來(lái)發(fā)送這些設(shè)備控制代碼用戶程序的主要的實(shí)現(xiàn)。程序在初始化時(shí)通過(guò)加載Filter_Hook Driver驅(qū)動(dòng),然后當(dāng)點(diǎn)擊開始按鈕時(shí)向驅(qū)動(dòng)發(fā)送START_IP_HOOK來(lái)安裝過(guò)濾鉤子;點(diǎn)擊停止按鈕時(shí)發(fā)送STOP_IP_HOOK控制代碼來(lái)清除過(guò)濾鉤子;點(diǎn)擊添加過(guò)濾規(guī)則選項(xiàng)時(shí),就會(huì)彈出添加規(guī)則對(duì)話框,來(lái)為使用者提供添加過(guò)濾規(guī)則的輸入界面;點(diǎn)擊刪除選項(xiàng)時(shí)則會(huì)實(shí)現(xiàn)刪除所選定的過(guò)濾規(guī)則的功能;當(dāng)使用者點(diǎn)擊安裝規(guī)則選項(xiàng)和卸載規(guī)則選項(xiàng)時(shí),則會(huì)分別發(fā)送控制代碼ADD_FILTER和CLEAR_FILTER來(lái)實(shí)現(xiàn)過(guò)濾規(guī)則的加載或者卸載。

      4 結(jié)束語(yǔ)

      本文運(yùn)用了Filter-Hook Driver技術(shù),設(shè)計(jì)了使用者自動(dòng)添加、刪除過(guò)濾規(guī)則,同時(shí)可以按照使用者已有的過(guò)濾規(guī)則完成數(shù)據(jù)包過(guò)濾等的功能。然而,經(jīng)過(guò)檢測(cè)使用者明顯可以觀察到,當(dāng)使用者添加了比較多的過(guò)濾規(guī)則并進(jìn)行數(shù)據(jù)過(guò)濾時(shí),其反應(yīng)的速度就會(huì)變的比較慢,因此使用者還需要努力對(duì)過(guò)濾規(guī)則對(duì)比算法做出進(jìn)一步的改進(jìn)。此外,還可以增加像日志功能這樣的一系列類似的功能,日志功能是一項(xiàng)比較重要的功能,只有通過(guò)防火墻日志,使用者才可以更好的對(duì)防火墻做維護(hù)以及管理。

      基金項(xiàng)目:

      1. 山西省教育科學(xué)“十三五”規(guī)劃2016年度課題“網(wǎng)絡(luò)工程專業(yè)一體化實(shí)踐教學(xué)體系的實(shí)踐研究”(項(xiàng)目編號(hào):GH-16186)。

      2. 2016年山西省信息化基金項(xiàng)目“基于知識(shí)工程的網(wǎng)絡(luò)信息安全支撐服務(wù)研究”。

      參考文獻(xiàn)

      [1] 王文鵬,黃俊.對(duì)BM模式匹配算法的一種改進(jìn)[J].計(jì)算機(jī)工程與用,2011,47(32):108-111.

      [2] 殷超,李大興.基于改進(jìn)BMSU法的確定型有窮自動(dòng)機(jī)的設(shè)計(jì)[J].微計(jì)算機(jī)信息,2008,24(3-1):215-216.

      [3] 賀龍濤,方濱興,胡銘矜.對(duì)BM串匹配算法的一個(gè)改進(jìn)[J].計(jì)算機(jī)應(yīng)用,2003,23(3):6-8.

      [4] S.Wu, U.Manber A fast algorithm for multi-pattern searching In Technical Report, TR-94-17 Dept. of Computer Science, University of Arizona 1994.

      [5] 殷麗華,方濱興,張宏莉.快速的多模式匹配算法[J].哈爾濱工業(yè)大學(xué)學(xué)報(bào),2007,39(12):1926-1929.

      [6] Gary Plumbridge, Jack Whitham, Neil Audsley. Blueshell: a platform for rapid prototyping of multiprocessor NoCs and accelerators [J]. ACM SIGARCH Computer Architecture News, 2013,41(5): 107-117.

      [7] Karthik Lakshmanan, Dionisio De Niz, Ragunathan Raj, Gabriel Moreno. Overload provisioning in mixed-criticality cyber-physical systems [J]. ACM Transactions on Embedded Computing Systems, 2012,11(4): 83-85.

      猜你喜歡
      防火墻
      筑牢防火墻 系緊安全帶
      全民總動(dòng)員,筑牢防火墻
      水上消防(2020年1期)2020-07-24 09:26:12
      構(gòu)建防控金融風(fēng)險(xiǎn)“防火墻”
      智慧防火墻
      海南新農(nóng)合有了“防火墻”
      在舌尖上筑牢抵御“僵尸肉”的防火墻
      下一代防火墻要做的十件事
      新漢 HENGETM工業(yè)防火墻
      筑起網(wǎng)吧“防火墻”
      自己選擇十大免費(fèi)防火墻
      洛阳市| 宁强县| 林周县| 阿克陶县| 大田县| 上杭县| 萝北县| 阿瓦提县| 朔州市| 铁岭县| 固原市| 奉化市| 特克斯县| 运城市| 宝鸡市| 富民县| 固原市| 唐河县| 连山| 舒城县| 新丰县| 井冈山市| 日照市| 馆陶县| 肇源县| 临清市| 安图县| 安达市| 邹城市| 红河县| 太仓市| 临沧市| 泉州市| 刚察县| 芦山县| 公主岭市| 两当县| 三都| 安国市| 巴东县| 正蓝旗|