摘要:分析了目前園區(qū)網(wǎng)廣泛存在的一些網(wǎng)絡(luò)行為控制的難點(diǎn),提出一種基于NDIS架構(gòu)的網(wǎng)絡(luò)行為控制客戶端系統(tǒng)設(shè)計(jì)思路,利用NDIS架構(gòu)開發(fā)一個(gè)專用客戶端程序,實(shí)現(xiàn)并發(fā)連接數(shù)控制、本地訪問控制、本機(jī)網(wǎng)絡(luò)病毒擴(kuò)散抑制等功能模塊,規(guī)范園區(qū)網(wǎng)內(nèi)用戶的網(wǎng)絡(luò)行為,能達(dá)到有效降低接入服務(wù)器負(fù)載,降低網(wǎng)絡(luò)病毒對(duì)園區(qū)網(wǎng)內(nèi)部的沖擊,規(guī)范用戶行為的目的。
關(guān)鍵詞:NDIS;行為控制;并發(fā)連接限制;訪問控制;網(wǎng)絡(luò)病毒
中圖分類號(hào):TP393文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2010)21-6119-02
A Client Implementation of Network Behavior Control
YANG Zhong-ming
(Guangdong University of Petrochemical Technology, Maoming 525000, China)
Abstract: A system designing idea of network behavior control client based on NIDS architecture is proposed through analyzing some widespread difficulties of network behavior control in present campus networks. A special client-side program using NDIS architecture is designed with concurrent connection limit module, local access control module, local network virus proliferation inhibition module, which can standard the network behavior of campus network users. It can realize the goal of reducing the load of access server effectively, reducing network virus assault of campus internal networks, specifying user behavior.
Key words: NDIS; behavior control; concurrent connection limit; access control; network virus
各種網(wǎng)絡(luò)高端服務(wù)(如電子商務(wù)的應(yīng)用、流媒體等)的應(yīng)用導(dǎo)致了網(wǎng)絡(luò)流量呈指數(shù)型增長,同時(shí)網(wǎng)絡(luò)病毒的泛濫也極大地提高了園區(qū)網(wǎng)的突發(fā)流量。接入服務(wù)器往往首當(dāng)其沖,受大量的高端服務(wù)流量與病毒突發(fā)流量沖擊,導(dǎo)致網(wǎng)絡(luò)服務(wù)的不穩(wěn)定甚至崩潰。園區(qū)網(wǎng)中的中毒用戶也會(huì)向全網(wǎng)頻繁地發(fā)送廣播包,導(dǎo)致病毒大量擴(kuò)散而且對(duì)網(wǎng)絡(luò)的穩(wěn)定形成沖擊。
目前園區(qū)網(wǎng)普遍使用固定IP、DHCP、PPPoE接入、802.1x接入等方式提供用戶上網(wǎng)服務(wù),普遍存在一些管理漏洞,如P2P泛濫、網(wǎng)絡(luò)病毒等。通過在服務(wù)器端限制帶寬[1]、控制并發(fā)連接數(shù)[2]等方法,已能有效控制P2P軟件的使用對(duì)網(wǎng)絡(luò)形成的不良影響。但在大型園區(qū)網(wǎng)絡(luò)內(nèi),由于大量的用戶存在,其并發(fā)連接數(shù)的請(qǐng)求仍對(duì)服務(wù)器造成較大的負(fù)載,而且網(wǎng)絡(luò)病毒的泛濫也嚴(yán)重影響整個(gè)網(wǎng)絡(luò)正常通信。
隨著接入服務(wù)器ACL訪問規(guī)則列表的增加,接入服務(wù)器的數(shù)據(jù)吞吐量會(huì)逐漸降低,這是因?yàn)檫^多的ACL訪問規(guī)則消耗了大量的系統(tǒng)資源,本文提出一種通過客戶端進(jìn)行ACL訪問控制的方法降低服務(wù)器的ACL訪問列表計(jì)算量,實(shí)現(xiàn)ACL訪問的分布式處理。
1 客戶端的應(yīng)用框架
通過專用客戶端系統(tǒng)對(duì)網(wǎng)絡(luò)用戶進(jìn)行管理是一個(gè)較為有效的手段。把管理控制的方法適當(dāng)分流到客戶端,可有效減輕接入服務(wù)器的負(fù)擔(dān),防止由客戶端中毒引發(fā)的網(wǎng)段內(nèi)異常流量。在客戶端可實(shí)現(xiàn)專用點(diǎn)對(duì)點(diǎn)通道、帶寬控制、并發(fā)連接數(shù)控制、共享代理服務(wù)器檢測、個(gè)人防火墻和網(wǎng)絡(luò)信息發(fā)布平臺(tái)等功能。
專用客戶端實(shí)現(xiàn)有兩種方式:
1)開發(fā)一個(gè)PPPoE撥號(hào)客戶端,在此基礎(chǔ)上實(shí)現(xiàn)控制功能;
2)開發(fā)一個(gè)基于NDIS的中間層驅(qū)動(dòng),維持用戶原有的撥號(hào)方式不變(繼續(xù)使用原客戶默認(rèn)的撥號(hào)客戶端)的情況下,隱藏在系統(tǒng)中運(yùn)行。
本文主要討論基于NDIS的中間層驅(qū)動(dòng)架構(gòu)的一個(gè)專用客戶端的設(shè)計(jì)。NDIS體系設(shè)計(jì)是遵循OSI七層模型的,但在具體劃分層次的時(shí)候,并沒有一一對(duì)應(yīng)的層次結(jié)構(gòu)。NDIS定義了物理硬件,小端口驅(qū)動(dòng),協(xié)議驅(qū)動(dòng),傳輸驅(qū)動(dòng)接口四個(gè)層次。小端口驅(qū)動(dòng)程序負(fù)責(zé)驅(qū)動(dòng)物理硬件,屏蔽物理硬件的差異,提供標(biāo)準(zhǔn)的MiniportXXX上沿接口;協(xié)議驅(qū)動(dòng)程序一般用作傳輸協(xié)議棧的底層驅(qū)動(dòng),它提供ProtocolXXX下沿接口,上沿接口是私有的,被傳輸協(xié)議棧調(diào)用;傳輸驅(qū)動(dòng)接口程序定義了核心模式的網(wǎng)絡(luò)接口[4]。
實(shí)現(xiàn)這樣一個(gè)NDIS中間層驅(qū)動(dòng)程序,采用DDK中附帶的示范代碼passthru為編寫的基礎(chǔ)[3],passthru是一個(gè)中間層過濾型的驅(qū)動(dòng)程序。這個(gè)程序框架結(jié)構(gòu)非常清晰規(guī)范,正適合作為客戶端程序的代碼框架,而且本文討論的驅(qū)動(dòng)程序也是一個(gè)中間層驅(qū)動(dòng)程序,結(jié)構(gòu)上有很大的共性。因此專用客戶端的實(shí)現(xiàn)可在passthru源代碼基礎(chǔ)上修改增加,完成本文需要的驅(qū)動(dòng)程序編寫。
2 系統(tǒng)模塊實(shí)現(xiàn)
2.1 程序入口DriverEntry
為了使加載程序能夠準(zhǔn)確地識(shí)別,必須將中間層驅(qū)動(dòng)程序的初始入口點(diǎn)明確地指定為DriverEntry的形式。其他的驅(qū)動(dòng)程序?qū)С龊瘮?shù),如MiniportXxx和ProtocolXxx函數(shù),由于其地址傳給了NDIS,因此在設(shè)計(jì)時(shí)可由根據(jù)函數(shù)的用途使用功能性命名規(guī)則。
在中間層驅(qū)動(dòng)程序中,DriverEntry完成以下工作:
1)調(diào)用NdisMInitializeWrapper并保存在NdisWrapperHandle中返回的句柄;
2)傳遞上一步保存的句柄,調(diào)用NdisIMRegisterLayeredMiniport注冊(cè)驅(qū)動(dòng)程序的MiniportXxx函數(shù);
3)調(diào)用NdisRegisterProtocol注冊(cè)驅(qū)動(dòng)程序的ProtocolXxx函數(shù),綁定到低層NDIS驅(qū)動(dòng)程序上;
4)驅(qū)動(dòng)程序?qū)С鯩iniportXxx和ProtocolXxx,調(diào)用NdisIMAssociateMiniport向NDIS通告有關(guān)驅(qū)動(dòng)程序的微端口低邊界和協(xié)議高邊界信息。
2.2 控制并發(fā)連接數(shù)的實(shí)現(xiàn)
在客戶端設(shè)置并發(fā)連接數(shù)限制能有效減輕服務(wù)器的負(fù)擔(dān),減少網(wǎng)絡(luò)上的突發(fā)性流量,在大型重負(fù)載的網(wǎng)絡(luò)應(yīng)用中特別有效。
根據(jù)套接字的通訊基礎(chǔ)網(wǎng)絡(luò)結(jié)構(gòu),對(duì)需要往服務(wù)器地址發(fā)送的數(shù)據(jù)包進(jìn)行分析,根據(jù)包頭的數(shù)據(jù)結(jié)構(gòu)判斷是否為TCP連接,若是則對(duì)TCP連接進(jìn)行計(jì)數(shù)。當(dāng)累計(jì)的計(jì)數(shù)值超過預(yù)設(shè)值則丟棄數(shù)據(jù)包。
客戶端的并發(fā)連接數(shù)設(shè)定與服務(wù)器的設(shè)定方法不同,應(yīng)考慮一定的冗余。接入服務(wù)器通過了用戶的認(rèn)證后,確定用戶在網(wǎng)絡(luò)中的角色和并根據(jù)其所在的群組設(shè)置TCP連接上限,并存于配置文件,為每個(gè)IP地址開辟一個(gè)緩沖區(qū)用于存放TCP連接計(jì)數(shù)。校園網(wǎng)中有各類不同的用戶,如辦公網(wǎng)用戶、教工宿舍用戶、學(xué)生用戶等等,各類用戶的并發(fā)連接數(shù)限制是不同的??蛻舳说牟l(fā)連接控制模塊目標(biāo)不是實(shí)現(xiàn)精確的控制,其意圖是減輕不必要的數(shù)據(jù)包在網(wǎng)絡(luò)中傳輸。所以客戶端的并發(fā)連接數(shù)一般設(shè)為幾類用戶的并發(fā)連接數(shù)最大者的1.2至1.5倍。
當(dāng)數(shù)據(jù)包到達(dá),需要計(jì)算并發(fā)連接數(shù)是否超標(biāo)的情況下才調(diào)用計(jì)數(shù)函數(shù)Count,Count函數(shù)的調(diào)用位置在數(shù)據(jù)包發(fā)送處理函數(shù),數(shù)據(jù)包發(fā)送前進(jìn)行并發(fā)連接計(jì)算用于控制客戶機(jī)的并發(fā)連接數(shù)。Count函數(shù)的偽代碼如下:
當(dāng)新數(shù)據(jù)包d到達(dá),獲取本機(jī)保存網(wǎng)絡(luò)連接狀態(tài)的鏈表
If 連接數(shù)計(jì)數(shù)<限定值 then
If 數(shù)據(jù)包d對(duì)應(yīng)的連接存在于狀態(tài)鏈表中 then
If 對(duì)應(yīng)連接已斷開 then
將對(duì)應(yīng)連接從鏈表中刪除
Endif
If 對(duì)應(yīng)連接處于等待關(guān)閉狀態(tài) then
將對(duì)應(yīng)連接從鏈表中刪除
Endif
對(duì)應(yīng)連接數(shù)據(jù)包計(jì)數(shù)加一
Elseif
添加數(shù)據(jù)包d的連接特征至狀態(tài)鏈表中
連接數(shù)計(jì)數(shù)加一
Endif
發(fā)送數(shù)據(jù)包d
Elseif
丟棄數(shù)據(jù)包d
Endif
在某些網(wǎng)絡(luò)環(huán)境應(yīng)用下,客戶端控制并發(fā)連接數(shù)精度要求不高的情況下,可以隔一定的時(shí)間量再進(jìn)行計(jì)算,客戶端控制并發(fā)連接數(shù)只起到預(yù)防的作用,用于減少網(wǎng)絡(luò)中無效的數(shù)據(jù)包傳遞。
2.3 網(wǎng)絡(luò)訪問控制的思想
隨著接入服務(wù)器ACL訪問規(guī)則列表的增加,接入服務(wù)器的數(shù)據(jù)吞吐量會(huì)逐漸降低,這是因?yàn)檫^多的ACL訪問規(guī)則消耗了大量的系統(tǒng)資源。如果能從源頭上進(jìn)行控制,可大大減輕服務(wù)器的負(fù)擔(dān)。提出一種ACL訪問控制分布式處理的方法,通過同步服務(wù)器ACL表的方式在CPPPoE實(shí)現(xiàn)對(duì)客戶端的網(wǎng)絡(luò)訪問進(jìn)行控制,把一些不允許通過的外網(wǎng)訪問數(shù)據(jù)包封鎖在客戶端,不往外發(fā)送,減輕服務(wù)器與網(wǎng)絡(luò)的負(fù)擔(dān)。
接入服務(wù)器的ACL控制列表中一般分為3部分,其中接入服務(wù)器拒絕的內(nèi)網(wǎng)發(fā)送到網(wǎng)關(guān)的數(shù)據(jù)包規(guī)則不需要在客戶端處理,客戶端需要控制的數(shù)據(jù)包一般是數(shù)據(jù)包轉(zhuǎn)發(fā)、NAT轉(zhuǎn)換這兩類。由于接入服務(wù)器的ACL列表經(jīng)常會(huì)根據(jù)管理員的操作更改,CPPPoE需要實(shí)現(xiàn)與接入服務(wù)器的ACL列表同步更新功能。接入服務(wù)器的PPPoE守護(hù)進(jìn)程中,設(shè)置了一個(gè)同步更新的定時(shí)模塊。該模塊以一定時(shí)間為觸發(fā)條件(如10分鐘一次)對(duì)所有連接上了的網(wǎng)絡(luò)進(jìn)行群發(fā)ACL規(guī)則表。接入服務(wù)器中的更新進(jìn)程對(duì)管理員設(shè)置的ACL表進(jìn)行轉(zhuǎn)換,把需要分布處理的部分抽取出來,把客戶端需要過濾的數(shù)據(jù)包規(guī)則轉(zhuǎn)換成為客戶端能直接處理的數(shù)據(jù)規(guī)則進(jìn)行傳輸。
為限制本機(jī)中的網(wǎng)絡(luò)病毒對(duì)園區(qū)網(wǎng)的攻擊,可通過ACL限制功能限制本機(jī)的流量只能往接入服務(wù)器的IP發(fā)送,從而限制網(wǎng)絡(luò)蠕蟲類病毒對(duì)園區(qū)網(wǎng)內(nèi)部的侵害。
3 小結(jié)
對(duì)目前園區(qū)網(wǎng)的一些網(wǎng)絡(luò)行為特點(diǎn)及管理問題現(xiàn)狀做了簡單分析, 提出了基于NDIS架構(gòu)的中間層驅(qū)動(dòng)的設(shè)計(jì)思想,設(shè)計(jì)了控制并發(fā)連接數(shù)限制、本地訪問控制、網(wǎng)絡(luò)病毒控制等多種網(wǎng)絡(luò)行為控制功能的實(shí)現(xiàn),有效降低園區(qū)網(wǎng)接入服務(wù)器的負(fù)載,規(guī)范用戶的網(wǎng)絡(luò)行為,降低網(wǎng)絡(luò)病毒對(duì)園區(qū)網(wǎng)的沖擊,并討論了具體的工程實(shí)現(xiàn)方法,經(jīng)實(shí)際開發(fā)測試,本系統(tǒng)達(dá)到設(shè)計(jì)目標(biāo),有一定的工程實(shí)用價(jià)值。
參考文獻(xiàn):
[1] 樂德廣.PPPoE技術(shù)及其在寬帶接入系統(tǒng)中的應(yīng)用[J].計(jì)算機(jī)應(yīng)用研究,2003(3):131-136.
[2] 顧棟梁等. 基于Netfilter 的連接限制的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2009,35(10):162-167.
[3] 陳嶺.基于Passthru的網(wǎng)絡(luò)控制[J].電腦知識(shí)與技術(shù),2009(23):6383-6385.
[4] 李曉鶯, 曾啟銘. NDIS網(wǎng)絡(luò)驅(qū)動(dòng)程序的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用,2002,22(4):60-61.
注:本文中所涉及到的圖表、注解、公式等內(nèi)容請(qǐng)以PDF格式閱讀原文