亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于LSP與NDIS驅(qū)動(dòng)防火墻的設(shè)計(jì)與實(shí)現(xiàn)

        2020-11-06 15:35:33梅足輝
        現(xiàn)代信息科技 2020年12期

        摘 ?要:信息時(shí)代個(gè)人電腦成為了生活的重要組成部分,對(duì)個(gè)人防火墻的研究對(duì)保護(hù)信息安全有重要的現(xiàn)實(shí)意義。目前防火墻大多在驅(qū)動(dòng)層面使用包過濾技術(shù),對(duì)數(shù)據(jù)的封包處理能力有限,并且無(wú)法接觸應(yīng)用層信息,過濾匹配算法也大多為線性時(shí)間算法。為了提高防火墻的過濾能力,文章提出加入LSP過濾技術(shù)對(duì)網(wǎng)絡(luò)封包進(jìn)行全面深度過濾,并改善了匹配算法,設(shè)計(jì)了一款內(nèi)核與應(yīng)用層雙重過濾的驅(qū)動(dòng)防火墻。經(jīng)過測(cè)試,它對(duì)網(wǎng)絡(luò)數(shù)據(jù)包有強(qiáng)大的過濾能力。

        關(guān)鍵詞:網(wǎng)絡(luò)驅(qū)動(dòng)接口規(guī)范;防火墻;LSP;包過濾

        中圖分類號(hào):TP393.08 ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2096-4706(2020)12-0140-03

        Abstract:Personal computer plays an important role of life in the information age. Therefore it is important and realizable for us to research the firewall. At present,most firewalls use packet filtering technology at the driver level,which has limited processing capacity for data packets,and can not contact the application layer information,and most of the filtering and matching algorithms are linear time. In order to improve the filtering ability of firewall,LSP filtering technology is proposed to filter network packets comprehensively and deeply,and the matching algorithm is improved. A driver firewall with dual filtering of kernel and user layer is designed. After testing,it has a strong filtering ability for network packets.

        Keywords:network driver interface specification;firewall;LSP;packet filtering

        0 ?引 ?言

        防火墻是保護(hù)網(wǎng)絡(luò)安全的一種重要手段,它通常部署在內(nèi)網(wǎng)入口處與個(gè)人主機(jī)上,具有硬件與軟件的形式。防火墻通常為包過濾防火墻、狀態(tài)檢測(cè)防火墻等[1]。此類防火墻主要根據(jù)一些過濾規(guī)則對(duì)網(wǎng)絡(luò)包五元組(即目的與源IP地址、目的與源端口、協(xié)議)進(jìn)行過濾[2],同時(shí)匹配模式通常是從第一條規(guī)則開始逐步比對(duì),直到遇到相同規(guī)則或者按照缺省規(guī)則處理。

        由于此類防火墻通常處于網(wǎng)絡(luò)結(jié)構(gòu)下層,無(wú)法感知用戶層信息。為了提升防火墻能力,本文加入了用戶層的過濾HOOK;同時(shí)由于過濾匹配通常為線性算法,為了提高過濾效率,將過濾規(guī)則以哈希雙鏈表的方式組織[3]。實(shí)驗(yàn)表明加入用戶層HOOK的防火墻擁有了感知應(yīng)用層信息的能力,并且當(dāng)過濾規(guī)則數(shù)量較多時(shí),哈希雙鏈表也能有效提高匹配效率。

        本文基于校內(nèi)工業(yè)協(xié)議防火墻的項(xiàng)目對(duì)防火墻進(jìn)行了研究,在NDIS中間層的過濾驅(qū)動(dòng)中加入了LSP過濾HOOK,改善了過濾匹配算法,并使用共享內(nèi)存與IOCTL作為主界面UI、應(yīng)用層DLL、內(nèi)核層驅(qū)動(dòng)之間的通信方式,設(shè)計(jì)并實(shí)現(xiàn)了一款基于LSP與NIDS的驅(qū)動(dòng)防火墻。

        1 ?系統(tǒng)設(shè)計(jì)

        1.1 ?模塊設(shè)計(jì)

        本防火墻將分為三個(gè)模塊:主界面UI、應(yīng)用層DLL、內(nèi)核層驅(qū)動(dòng),交互過程圖如圖1所示。

        (1)主界面UI:負(fù)責(zé)與用戶的交互,例如加載LSP的DLL鉤子、設(shè)定應(yīng)用層與內(nèi)核層的過濾規(guī)則、顯示網(wǎng)絡(luò)訪問監(jiān)視界面、詢問用戶決定以及設(shè)置注冊(cè)表等功能。本模塊通過共享內(nèi)存與應(yīng)用層DLL模塊通信、通過IOCTL與內(nèi)核層驅(qū)動(dòng)模塊通信,保證兩層過濾模塊能夠及時(shí)獲得用戶期望的過濾行為。

        (2)應(yīng)用層DLL:這是一個(gè)運(yùn)行在用戶模式并注入系統(tǒng)協(xié)議鏈的DLL模塊。負(fù)責(zé)在Winsock的層面截獲應(yīng)用程序訪問網(wǎng)絡(luò)的請(qǐng)求,并根據(jù)與主界面UI的共享內(nèi)存設(shè)定過濾函數(shù)的邏輯,判斷網(wǎng)絡(luò)請(qǐng)求是否記錄、通行等。

        (3)內(nèi)核層驅(qū)動(dòng):這是一個(gè)NDIS中間層過濾驅(qū)動(dòng),負(fù)責(zé)在內(nèi)核模式根據(jù)IOCTL與主界面UI的通信結(jié)果來(lái)管理輸入輸出封包、記錄網(wǎng)絡(luò)活動(dòng)狀態(tài)等。

        1.2 ?過濾規(guī)則

        防火墻將根據(jù)用戶設(shè)置的過濾規(guī)則對(duì)流經(jīng)網(wǎng)絡(luò)的數(shù)據(jù)包進(jìn)行過濾與攔截[4]。各個(gè)模塊具體規(guī)則信息如表1所示。

        2 ?核心技術(shù)

        2.1 ?匹配算法

        本系統(tǒng)采用哈希雙鏈表的方式進(jìn)行過濾規(guī)則匹配。通常的規(guī)則匹配都是采用循環(huán)對(duì)比的方式,此方式在規(guī)則數(shù)量足夠多時(shí)將會(huì)極大影響系統(tǒng)的運(yùn)行效率[5]。因此本系統(tǒng)將規(guī)則以哈希表的形式存儲(chǔ),匹配時(shí)計(jì)算規(guī)則Key值進(jìn)行匹配,時(shí)間復(fù)雜度為O(1),極大地提高了防火墻的匹配效率。

        2.2 ?內(nèi)核層面過濾

        本系統(tǒng)采用中間層驅(qū)動(dòng)作為系統(tǒng)內(nèi)核層的過濾方式。在Windows網(wǎng)絡(luò)中,應(yīng)用層的網(wǎng)絡(luò)請(qǐng)求將通過SPI接口進(jìn)入內(nèi)核,通過TDI接口協(xié)議驅(qū)動(dòng)、中間層驅(qū)動(dòng)、網(wǎng)卡驅(qū)動(dòng)傳輸至下層NIC設(shè)備發(fā)送。其實(shí)這些驅(qū)動(dòng)都可以選擇作為防火墻的過濾技術(shù),也各有商業(yè)軟件的實(shí)現(xiàn)。

        底層網(wǎng)絡(luò)驅(qū)動(dòng)中,協(xié)議驅(qū)動(dòng)方便捕獲所有接收包,但不利于捕獲發(fā)送包;而網(wǎng)卡驅(qū)動(dòng)則更加片面不能過濾到所有的封包。中間層驅(qū)動(dòng)兼?zhèn)鋬烧咛匦?,?duì)上表現(xiàn)網(wǎng)卡驅(qū)動(dòng)接口,對(duì)下表現(xiàn)協(xié)議驅(qū)動(dòng)接口,是內(nèi)核中過濾網(wǎng)絡(luò)數(shù)據(jù)包的最佳選擇,因此本系統(tǒng)選擇中間層驅(qū)動(dòng)作為內(nèi)核層的過濾技術(shù)。通過中間層驅(qū)動(dòng)可以過濾原始以太網(wǎng)絡(luò)包、分析協(xié)議類型、修改網(wǎng)絡(luò)數(shù)據(jù)包,可以過濾或修改源地址與端口、目的地址與端口、數(shù)據(jù)包內(nèi)容,并可以進(jìn)行任意修改、轉(zhuǎn)發(fā)、丟棄,放行[6]。

        本系統(tǒng)中間層驅(qū)動(dòng)中,注冊(cè)了包裝句柄、小端口句柄、關(guān)聯(lián)句柄、協(xié)議句柄、填寫特征函數(shù)、綁定網(wǎng)卡設(shè)備、創(chuàng)建設(shè)備對(duì)象、填寫IRP操作函數(shù)等。在系統(tǒng)發(fā)送網(wǎng)絡(luò)數(shù)據(jù)時(shí)會(huì)調(diào)用NdisSend或者NdisSendPackets函數(shù),本系統(tǒng)的中間層驅(qū)動(dòng)將對(duì)上層展示為網(wǎng)卡驅(qū)動(dòng),獲取從設(shè)備棧上層的Send操作,并在Send操作中完成對(duì)數(shù)據(jù)的過濾。同理系統(tǒng)Receive的回調(diào)也以類似的方式實(shí)現(xiàn)。

        Windows傳輸封包在底層網(wǎng)絡(luò)中為NDIS_PACKET、NDIS_BUFFER。NDIS_PACKET(包描述符)是一組存放NDIS_BUFFER(緩沖描述符)的鏈表結(jié)構(gòu)。在過濾時(shí)要以兩套過濾方法對(duì)兩種結(jié)構(gòu)進(jìn)行過濾,因?yàn)橄到y(tǒng)接收時(shí)調(diào)用的函數(shù)是不確定的,所以要對(duì)兩種結(jié)構(gòu)的收發(fā)函數(shù)同時(shí)過濾才能截獲所有封包。

        2.3 ?應(yīng)用層過濾

        本系統(tǒng)采用LSP技術(shù)進(jìn)行應(yīng)用層過濾。此技術(shù)本質(zhì)上是一個(gè)HOOKDLL,用戶打開主程序后,本系統(tǒng)會(huì)將LSPDLL注冊(cè)安裝到當(dāng)前主機(jī)的Winsock目錄,并且更改協(xié)議鏈的順序,否則在API調(diào)用時(shí)新的提供者將在目錄結(jié)尾,永遠(yuǎn)不會(huì)被默認(rèn)調(diào)用。

        通過HOOK技術(shù)掛入主機(jī)協(xié)議鏈后,用戶系統(tǒng)調(diào)用WSAStartup進(jìn)行Winsock編程時(shí),會(huì)調(diào)用本系統(tǒng)注冊(cè)的SPI函數(shù),當(dāng)主機(jī)系統(tǒng)進(jìn)行網(wǎng)絡(luò)通信,例如使用Connect、Socket、SendTo等函數(shù),將會(huì)傳遞到本系統(tǒng)在DLL中的Winsock API;使用WSPConnect、WSPSocket、WSPSendTo等函數(shù),此時(shí)所有網(wǎng)絡(luò)數(shù)據(jù)將會(huì)按照防火墻DLL中的規(guī)則對(duì)網(wǎng)絡(luò)封包進(jìn)行過濾。

        2.4 ?系統(tǒng)通信方式

        用戶對(duì)防火墻進(jìn)行操作時(shí)會(huì)通過主模塊與過濾模塊進(jìn)行交互,例如設(shè)定內(nèi)核層或者應(yīng)用層的過濾規(guī)則。同時(shí)過濾模塊在進(jìn)行過濾時(shí)也需要與用戶進(jìn)行交互,例如詢問用戶過濾動(dòng)作、顯示當(dāng)前過濾信息等。因此本系統(tǒng)需要實(shí)現(xiàn)各個(gè)模塊之間的信息交互功能。

        主界面UI與應(yīng)用層DLL之間的通訊采用共享內(nèi)存的方法實(shí)現(xiàn)。本系統(tǒng)在DLL中分配一片可讀可寫的共享內(nèi)存作為通信緩沖區(qū),在應(yīng)用程序中需要使用CreateFileMapping創(chuàng)建內(nèi)存映射獲取句柄再通過MapViewOfFile獲得映射用來(lái)訪問共享內(nèi)存。此方法在訪問共同資源時(shí)需要進(jìn)行對(duì)資源訪問鎖的控制,防止雙方同時(shí)改寫數(shù)據(jù)造成數(shù)據(jù)沖突。

        應(yīng)用層與內(nèi)核層驅(qū)動(dòng)之間的通訊采用IOCTL的方法實(shí)現(xiàn)。進(jìn)行設(shè)備讀寫時(shí),通常用戶會(huì)操控UserBuffer直接進(jìn)行讀寫,但是此方式會(huì)重復(fù)復(fù)制緩沖區(qū)的信息,在防火墻中信息量通常比較大,直接用UserBuffer效率十分將低下,所以本系統(tǒng)使用DO_DIRECT_IO的方式進(jìn)行讀寫。使用此方式時(shí)用戶訪問讀寫區(qū)域的內(nèi)存結(jié)構(gòu)是一個(gè)MDL,這相當(dāng)于一個(gè)指針,將應(yīng)用層內(nèi)存空間映射到內(nèi)核空間中,這是內(nèi)核空間的內(nèi)存通過分頁(yè)表等手段向外部的一次映射。Irp->MdlAddress則是這個(gè)MDL的指針的句柄,通過內(nèi)置函數(shù)MmGetSystemAddressForMdlSage,即可得到UserBuffer對(duì)內(nèi)存進(jìn)行高效訪問。

        3 ?程序調(diào)試與測(cè)試

        調(diào)試環(huán)境:VMware Windows 7

        開發(fā)環(huán)境:Visual Studio 2017,WDK 10、SDK 10

        防火墻系統(tǒng)運(yùn)行之前需要將防火墻DLL與驅(qū)動(dòng)注入主機(jī)系統(tǒng),DLL注入使用LoadLibrary函數(shù),在防火墻主機(jī)面點(diǎn)擊加載DLL按鈕即可完成DLL的加載。

        驅(qū)動(dòng)加載有兩種方式,一種是右鍵打開本地連接-屬性,在網(wǎng)絡(luò)選線中選擇安裝,在對(duì)話框中選擇防火墻的SYS文件進(jìn)行安裝。另一種是使用已經(jīng)編譯好的安裝程序鍵入命令installdrv mfw.sys進(jìn)行安裝。完成后即可使用防火墻的全部功能,圖2所示為防火墻的網(wǎng)絡(luò)訪問監(jiān)視界面。

        4 ?結(jié) ?論

        本文針對(duì)傳統(tǒng)防火墻過濾能力單一的問題,設(shè)計(jì)了一款基于LSP與NDIS雙層過濾的驅(qū)動(dòng)防火墻,討論了防火墻的模塊設(shè)計(jì)和主要技術(shù)以及思路,詳細(xì)闡述了如何實(shí)現(xiàn)數(shù)據(jù)包過濾以及一些重要技術(shù)。雖然NDIS中間層過濾驅(qū)動(dòng)功能強(qiáng)大,但其位于系統(tǒng)底層,獲取信息能力有限。針對(duì)這個(gè)問題,本文在防火墻加入了應(yīng)用層的DLL防火墻,使防火墻過濾底層網(wǎng)絡(luò)封包又可兼顧上層應(yīng)用過濾。

        驅(qū)動(dòng)程序復(fù)雜,稍不注意就會(huì)出現(xiàn)級(jí)別越界、訪問越界等問題導(dǎo)致藍(lán)屏死機(jī),同時(shí)內(nèi)核系統(tǒng)函數(shù)也復(fù)雜多樣,所以編寫程序時(shí)也需要一份樣例來(lái)指導(dǎo)。此防火墻在應(yīng)用層與內(nèi)核層進(jìn)行雙重過濾,穩(wěn)定高效,安全性能顯著,并且擁有圖形交互界面,方便操作。本文重點(diǎn)闡述了防火墻的技術(shù)難點(diǎn),為NDIS驅(qū)動(dòng)編寫人提供參考。

        參考文獻(xiàn):

        [1] DIEKMANN C,HUPEL L,JULIUS MICHAELIS,et al. Verified iptables Firewall Analysis and Verification [J]. Journal of Automated Reasoning,2018,61(1-4):191-242.

        [2] NEVILLE U,F(xiàn)OLEY S N. Reasoning about firewall policies through refinement and composition [J]. Journal of Computer Security,2018,26(2):207-254.

        [3] TRABELSI Z,ZEIDAN S,MASUD M M,et al. Statistical dynamic splay tree filters towards multilevel firewall packet filtering enhancement [J]. Computers & Security,2015,53:109-131.

        [4] 宮鼎.基于權(quán)重與匹配效率的防火墻規(guī)則集優(yōu)化算法 [J].現(xiàn)代計(jì)算機(jī)(專業(yè)版),2014(14):45-50.

        [5] 萬(wàn)偉.基于NDIS中間層驅(qū)動(dòng)的DDoS防火墻的設(shè)計(jì) [J].實(shí)驗(yàn)科學(xué)與技術(shù),2015,13(2):32-35.

        [6] 王婷婷.基于NDIS中間層驅(qū)動(dòng)的網(wǎng)絡(luò)內(nèi)容過濾關(guān)鍵技術(shù)研究 [D].天津:天津理工大學(xué),2017.

        作者簡(jiǎn)介:梅足輝(1996.11—),男,漢族,江蘇鎮(zhèn)江人,研究生,研究方向:軟件開發(fā)。

        91情侣在线精品国产免费| 国产午夜福利精品一区二区三区| 国产又黄又爽又色的免费| 亚洲熟妇少妇69| 国产日韩AV无码免费一区二区| 宅男视频一区二区三区在线观看 | 中年熟妇的大黑p| 欧美日韩亚洲成色二本道三区 | 久久综合伊人有码一区中文字幕 | 一本大道东京热无码中字 | 大学生被内谢粉嫩无套| 精品久久久久久午夜| 亚洲乱熟妇一区二区三区蜜桃| 久久精品丝袜高跟鞋| 四虎影视在线影院在线观看| 人妻丰满av无码中文字幕| 蜜桃在线观看视频在线观看| 职场出轨的人妻中文字幕| 天天夜碰日日摸日日澡| 精品国产AⅤ无码一区二区| av免费观看在线网站| 亚洲国产精品无码一线岛国| 国产精品va无码一区二区| 婷婷激情六月| 亚洲午夜精品第一区二区| 亚洲av永久无码天堂网小说区| 国农村精品国产自线拍| 少妇av免费在线播放| 亚洲国产av一区二区三区| 97久久超碰国产精品旧版| 四虎精品影视| 国产大屁股白浆一区二区三区 | 成人无码α片在线观看不卡| 国产精品嫩草影院午夜| 亚洲一区二区三区av无| 亚洲av日韩精品久久久久久a| 亚洲av无码久久寂寞少妇| 熟女系列丰满熟妇av| 少妇一区二区三区久久| 野外少妇愉情中文字幕| 亚洲V无码一区二区三区四区观看|