張水平, 孫云星, 張鳳琴, 沈 迪, 朱 瑞
(空軍工程大學(xué)電訊工程學(xué)院,陜西西安710077)
隨著各類信息系統(tǒng)在大型跨地域企業(yè)中的廣泛應(yīng)用,其應(yīng)用與安全監(jiān)控問題日益突出,因此,建立基于廣域網(wǎng)的分布式網(wǎng)絡(luò)監(jiān)控管理系統(tǒng)(簡稱DNMS系統(tǒng)),對終端的信息流量、設(shè)備運行狀況以及網(wǎng)絡(luò)行為進行全方位的實時監(jiān)控管理已勢在必行。DNMS系統(tǒng)在設(shè)計與實現(xiàn)過程中以功能完整、可靠性高、開發(fā)性好、操作簡便、易維護為基本原則,保證各結(jié)點子系統(tǒng)輕裝高效運行。
WCF是微軟的分布式通信框架,是.NET Framework 3.5的重要組成部分。WCF的核心是:允許遠程程序之間通過消息實現(xiàn)通信。同時,WCF把Web Service、.NET遠程技術(shù)、分布式事務(wù)和消息隊列統(tǒng)一到單個面向服務(wù)的編程模型中,并支持多種傳輸協(xié)議,如HTTP、TCP等,實現(xiàn)了真正意義上的分布式通信。
WCF遵循面向服務(wù)的原則,在WCF框架中,一切功能都封裝成服務(wù)對外發(fā)布,服務(wù)運行于某一宿主之中,以端點作為對外通信接口。WCF服務(wù)的使用者(客戶端)通過訪問特定端點獲取服務(wù),此外,使用者可公開一個端點,從而以雙工模式與服務(wù)進行交互,WCF服務(wù)模型如圖1所示。
NDIS(networkdriverinterfacespecification)是 Windows提供網(wǎng)絡(luò)驅(qū)動程序接口規(guī)范。所提供的功能函數(shù)便于實現(xiàn)網(wǎng)絡(luò)驅(qū)動。HOOK(鉤子)是Windows提供的一種消息處理機制,借助于該機制,通過嵌入用戶自定義端口驅(qū)動,實現(xiàn)對數(shù)據(jù)包的控制和處理。
(1)未嵌入NDIS-HOOK驅(qū)動之前數(shù)據(jù)包在操作系統(tǒng)底層的接收流程
圖1 WCF服務(wù)模型
在正常的網(wǎng)絡(luò)中,數(shù)據(jù)包經(jīng)網(wǎng)絡(luò)設(shè)備傳遞給NDIS小端口(mini Port)驅(qū)動,經(jīng)過NDIS協(xié)議端口(protocol Port)驅(qū)動,最后由TDI(transport driver interface)傳遞給系統(tǒng)應(yīng)用程序,其具體流程如圖2所示。
圖2 NDIS-HOOK安裝前
(2)嵌入NDIS-HOOK驅(qū)動后數(shù)據(jù)包接收流程
在在正常的網(wǎng)絡(luò)中嵌入NDIS-HOOK驅(qū)動后,可處理、控制數(shù)據(jù)包的流向。具體原理如圖3所示。數(shù)據(jù)包經(jīng)網(wǎng)絡(luò)設(shè)備傳遞給NDIS小端口驅(qū)動,然后傳遞給自定義驅(qū)動程序(netfilter.sys),該驅(qū)動程序可根據(jù)設(shè)計者需要截獲數(shù)據(jù)包并進行分析過濾、控制。最終把允許通過的數(shù)據(jù)包傳給NDIS協(xié)議端口驅(qū)動,再由TDI傳輸驅(qū)動傳遞給系統(tǒng)應(yīng)用程序。同樣,發(fā)送的數(shù)據(jù)包也可通過嵌入的自定義驅(qū)動程序進行處理、控制。
圖3 NDIS-HOOK安裝后
系統(tǒng)主要需求有:
(1)監(jiān)測廣域網(wǎng)中各網(wǎng)段的流量、流速,以及上線終端數(shù)、網(wǎng)絡(luò)聯(lián)通率。
(2)監(jiān)控統(tǒng)計所轄區(qū)域終端的運行狀況、網(wǎng)絡(luò)信息、人員信息,并負(fù)責(zé)向上級管理部門上報相關(guān)統(tǒng)計信息。
(3)監(jiān)控終端的網(wǎng)絡(luò)運行狀況,包括終端本機流量統(tǒng)計和流量控制、網(wǎng)站訪問控制、遠程開機關(guān)機、日志信息記錄和管理,同時根據(jù)系統(tǒng)制定的規(guī)則,封堵網(wǎng)絡(luò)相關(guān)操作。
(4)收集、統(tǒng)計下級子網(wǎng)絡(luò)數(shù)據(jù),并按級定期匯總上報至上級管理部門,形成相關(guān)日、周、月、年度的報表、圖表。上級管理部門能夠直接調(diào)閱所轄區(qū)域的相關(guān)數(shù)據(jù)。
(5)終端監(jiān)控進行設(shè)置,包括監(jiān)控區(qū)域的設(shè)置、行為監(jiān)控設(shè)置、內(nèi)容監(jiān)控設(shè)置、監(jiān)控結(jié)果的處理設(shè)置等。
(6)提供系統(tǒng)設(shè)置與維護界面,實現(xiàn)各類參數(shù)的設(shè)置、監(jiān)管數(shù)據(jù)的存儲、導(dǎo)出、導(dǎo)入以及被上級調(diào)閱的功能。
系統(tǒng)設(shè)計為B/S(browse/service)模式,由兩部分構(gòu)成:管理中心子系統(tǒng)和終端子系統(tǒng)。管理中心負(fù)責(zé)與上下級管理中心通信,并制定終端的運行規(guī)則和參數(shù);終端依據(jù)規(guī)則捕獲過濾數(shù)據(jù)包,并將違規(guī)等信息上報給本級管理中心。每級管理中心下有多個終端,具體架構(gòu)如圖4所示。
圖4 系統(tǒng)體系結(jié)構(gòu)
系統(tǒng)設(shè)計由管理中心子系統(tǒng)和終端子系統(tǒng)構(gòu)成,具體功能設(shè)計如下:
(1)管理中心子系統(tǒng)
·規(guī)則的制定與管理:負(fù)責(zé)配置、制定、管理所轄區(qū)域的各種規(guī)則,包括本級IP地址與MAC地址的綁定、數(shù)據(jù)包IP包頭過濾規(guī)則、Web訪問規(guī)則、敏感詞匯等。
·監(jiān)測與控制:統(tǒng)計所轄區(qū)域終端的運行狀況、網(wǎng)絡(luò)信息;對管理所轄區(qū)域的終端子系統(tǒng)進行管理。
·數(shù)據(jù)同步:負(fù)責(zé)向上級管理中心子系統(tǒng)上報相關(guān)統(tǒng)計信息;并接收上級管理中心子系統(tǒng)下發(fā)的規(guī)則等信息。
(2)終端子系統(tǒng)
·監(jiān)視與控制:負(fù)責(zé)截獲出入本機的數(shù)據(jù)包;監(jiān)控本機的網(wǎng)絡(luò)運行狀況,包括本機流量統(tǒng)計、郵件及網(wǎng)站訪問監(jiān)控;根據(jù)管理中心子系統(tǒng)制定的規(guī)則,封堵網(wǎng)絡(luò)相關(guān)操作,在必要的時候,向管理中心子系統(tǒng)上報相關(guān)信息。
·遠程控制:遠程開機、關(guān)機;網(wǎng)卡、USB等端口禁用。
·程序駐留保護:保護系統(tǒng),禁止隨意退出、卸載。
·日志管理:違規(guī)信息日志記錄,并定期刪除。
系統(tǒng)的各功能模塊以服務(wù)的形式表現(xiàn)。采用層次架構(gòu)研發(fā),具體架構(gòu)如圖5所示。
(1)管理中心子系統(tǒng):數(shù)據(jù)庫選用SQLServer作為DB(data base)層;直接和數(shù)據(jù)庫通信,實現(xiàn)數(shù)據(jù)提取和數(shù)據(jù)存儲并封裝成服務(wù)作為DA(data access)層;業(yè)務(wù)邏輯BL(business layer)層對系統(tǒng)的各種業(yè)務(wù)進行封裝處理;FlexWeb站點、WCF通信服務(wù)和應(yīng)用程序作為應(yīng)用層。管理中心子系統(tǒng)部署在網(wǎng)段的任意一臺主機上。
(2)終端子系統(tǒng):數(shù)據(jù)包的捕獲及控制、終端的遠程控制和操作系統(tǒng)注冊表作為底層控制BC(bottomcontrol)層;各種業(yè)務(wù)進行封裝為業(yè)務(wù)邏輯BL層;WCF通信服務(wù)和監(jiān)控器應(yīng)用程序作為應(yīng)用層。終端子系統(tǒng)部署在任意一臺受控主機上。
系統(tǒng)的重點解決的是廣域網(wǎng)各結(jié)點 (各級數(shù)據(jù)管理中心子系統(tǒng)、各級終端子系統(tǒng))之間大量數(shù)據(jù)同步問題,終端子系統(tǒng)的監(jiān)控器實現(xiàn)及系統(tǒng)程序駐留等。本文將重點簡述難點問題解決方案。
圖5 系統(tǒng)技術(shù)架構(gòu)
管理中心子系統(tǒng)主要完成各種規(guī)則的制定、下發(fā),所管轄區(qū)網(wǎng)段、設(shè)備的動態(tài)監(jiān)測、控制與管理以及大量數(shù)據(jù)的上傳、下發(fā)、數(shù)據(jù)同步等功能。
4.1.1 各級管理中心之間數(shù)據(jù)同步
數(shù)據(jù)同步是管理中心子系統(tǒng)實現(xiàn)的一個難點,系統(tǒng)內(nèi)的數(shù)據(jù)同步有各級管理中心之間、管理中心和終端之間兩類,詳細敘述如下:
各級管理中心之間的通信鏈路是整個系統(tǒng)的主脈絡(luò),把分散在各地的數(shù)據(jù)信息聯(lián)系起來形成一個整體。同步的信息類型有以下3類:
(1)基礎(chǔ)數(shù)據(jù):這類數(shù)據(jù)只在系統(tǒng)初始化時同步的數(shù)據(jù)量大。包括:組織結(jié)構(gòu)信息,系統(tǒng)運行參數(shù)等信息等。
·組織結(jié)構(gòu)信息包括:單位建成、單位名稱、聯(lián)系人、聯(lián)系電話、通信郵編(若是管理中心還包括IP地址、MAC地址、子網(wǎng)掩碼、上級IP、上級MAC等);
·運行參數(shù)包括:服務(wù)器通信開放端口、掃描終端時間間隔;
(2)實時數(shù)據(jù):這類數(shù)據(jù)在系統(tǒng)中隨時發(fā)生,數(shù)據(jù)量大且對實時性要求高。包括:違規(guī)規(guī)則,系統(tǒng)違規(guī)信息,I/O流量,終端連通、端口開放信息等。
·違規(guī)規(guī)則信息包括:IP包頭過濾規(guī)則、Web訪問規(guī)則、敏感詞匯及這些規(guī)則的有效時間;
·違規(guī)信息包括:IP包頭違規(guī)情況、Web訪問違規(guī)情況、敏感詞匯違規(guī)情況;
·本級I/O流量統(tǒng)計:實時地本級管理中心所處網(wǎng)段的進出網(wǎng)絡(luò)流量;網(wǎng)絡(luò)連通信息:網(wǎng)段內(nèi)的終端的在線數(shù)及在線終端的開放端口列表。
(3)非實時數(shù)據(jù):這類數(shù)據(jù)在系統(tǒng)中隨時發(fā)生,但對實時性的要求不高。包括:各類設(shè)備信息、相關(guān)人員信息等。
·各類設(shè)備信息:網(wǎng)絡(luò)各結(jié)點內(nèi)服務(wù)器,終端,網(wǎng)絡(luò)設(shè)備的配置信息、IP地址、MAC地址等信息,其中IP地址、MAC地址應(yīng)當(dāng)由系統(tǒng)自動獲取。
·各類人員信息:網(wǎng)絡(luò)各管理中心相關(guān)人員的基本信息。為增強系統(tǒng)數(shù)據(jù)同步的合理性,采用不同的通信機制。(1)手動機制:手動選擇的方式觸發(fā)數(shù)據(jù)同步,基礎(chǔ)數(shù)據(jù)采用此機制。
(2)實時機制:若有實時數(shù)據(jù)的產(chǎn)生則立刻調(diào)用通信函數(shù)進行數(shù)據(jù)通信,實時數(shù)據(jù)采用此機制。
(3)定時機制:定期的進行數(shù)據(jù)通信,非實時數(shù)據(jù)采用此機制。
為減少數(shù)據(jù)同步的數(shù)據(jù)量,在數(shù)據(jù)同步時只將有變動的差異數(shù)據(jù)進行同步。由于各級管理中心間數(shù)據(jù)同步是跨網(wǎng)段的,系統(tǒng)采用WCF雙向通信的方式實現(xiàn)。
4.1.2 管理中心和終端之間數(shù)據(jù)同步
管理中心和終端在系統(tǒng)中是大腦和末梢神經(jīng)的關(guān)系,終端子系統(tǒng)收集信息,然后把這些信息交由管理中心處理。管理中心則將相應(yīng)的處理要求發(fā)往終端子系統(tǒng),作為其運行處理的依據(jù)。同步的信息類型有以下兩類:
(1)終端從管理中心獲取的數(shù)據(jù):管理中心定期下發(fā)的數(shù)據(jù)包過濾規(guī)則及這些規(guī)則的有效時間和系統(tǒng)運行參數(shù)等。
(2)管理中心從終端獲得的數(shù)據(jù):終端的違規(guī)信息記錄、端口開放信息和I/O流量等。
管理中心和終端之間同步的數(shù)據(jù)均為實時數(shù)據(jù),采用實時通信機制進行通信。由于終端和本級的管理中心所處同一網(wǎng)段內(nèi),可以開放任意的端口,故采用Socket套接字實現(xiàn)。管理中心作為Socket通信的服務(wù)器,終端作為客戶端。
終端子系統(tǒng)安裝在廣域網(wǎng)的任意主機上,因此具有應(yīng)用范圍大、分布地域廣、設(shè)備類型不一、配置運行環(huán)境不同,用戶應(yīng)用水平參差不齊等特點。為使研發(fā)的終端子系統(tǒng)輕裝運行,適于生存,便于維護,研發(fā)平臺采用VC++2008,WindowsDDK(devicedriverkit)、PhotoShop等,而運行平臺采用操作系統(tǒng)Windows xp/2003/WIN7。
主要功能有監(jiān)控器完成的監(jiān)視與控制功能,遠程控制、程序自動升級、駐留保護和日志管理等,其中監(jiān)控器的實現(xiàn)及程序的駐留保護是本系統(tǒng)的重點問題。
4.2.1 監(jiān)控器的實現(xiàn)
監(jiān)控器是系統(tǒng)的核心模塊,要快速的捕獲網(wǎng)絡(luò)數(shù)據(jù)包,并對其進行分析處理。主要由通信線程、數(shù)據(jù)包捕獲控制線程、工作者線程3部分組成:
(1)通信線程
負(fù)責(zé)與管理中心子系統(tǒng)進行通信,獲取管理中心定期下發(fā)的數(shù)據(jù)包過濾規(guī)則及這些規(guī)則的有效時間和系統(tǒng)運行參數(shù),上傳本機的違規(guī)情況、端口開放信息和I/O流量信息。
(2)數(shù)據(jù)包捕獲控制線程
實時捕獲網(wǎng)絡(luò)數(shù)據(jù)包,過濾數(shù)據(jù)包、獲取端口信息、統(tǒng)計I/O流量。捕獲數(shù)據(jù)包驅(qū)動程序(netfilter.sys)采用底層的NDISHOOK技術(shù)實現(xiàn)。采用NDIS-HOOK技術(shù)截獲數(shù)據(jù)包較為底層,不易被穿透。netfilter.sys的實現(xiàn)流程如圖6所示,其加載次序在NDIS.SYS之后,協(xié)議驅(qū)動程序(如TcpIp.sys)之前。
圖6 netfilter.sys實現(xiàn)流程
在netfilter.sys加載完成后,發(fā)送網(wǎng)絡(luò)數(shù)據(jù)包時,應(yīng)用程序先調(diào)用自定義的函數(shù)M_Send。M_Send對要發(fā)送的數(shù)據(jù)包進行分析過濾,再調(diào)用系統(tǒng)函數(shù)NdisSend對通過檢查的數(shù)據(jù)包進行轉(zhuǎn)發(fā)。接收網(wǎng)絡(luò)數(shù)據(jù)包時,應(yīng)用程序調(diào)用自定義函數(shù)M_Receive同樣進行分析過濾,然后調(diào)用系統(tǒng)函數(shù)ProtocolReceive完成接收。
分析過濾過程:I/O流量通過數(shù)據(jù)包IP頭內(nèi)“包長度”字段統(tǒng)計,根據(jù)IP包頭內(nèi)“協(xié)議類型”字段值轉(zhuǎn)入各協(xié)議分析線程(獲取端口信息并進行內(nèi)容分析),依據(jù)系統(tǒng)違規(guī)規(guī)則進行匹配過濾。具體過程如圖7所示。
圖7 數(shù)據(jù)包分析流程
為加速數(shù)據(jù)包處理速度,系統(tǒng)采用了以下措施:
·設(shè)置了緩沖區(qū)暫時存放實時截獲的數(shù)據(jù)包,并通過多線程機制實現(xiàn)分析處理。
·對各種包過濾規(guī)則進行整合去重,以節(jié)省匹配時間率。(3)工作者線程
對各種業(yè)務(wù)進行管理和設(shè)置,輔助系統(tǒng)運行,具體功能包含系統(tǒng)運行參數(shù)的初始化,運行參數(shù)修改后的存儲,文件讀寫等。
為提高監(jiān)控器的運行效率,本系統(tǒng)還在以下幾點作了考慮:
·程序?qū)τ脖P數(shù)據(jù)的操作花費時間遠大于內(nèi)存數(shù)據(jù)的操作,故系統(tǒng)程序?qū)崿F(xiàn)過程中運用了緩沖區(qū)機制,把系統(tǒng)運行時所需要的一些數(shù)據(jù)信息(違規(guī)規(guī)則,運行參數(shù)),存放到緩沖區(qū)中,提高了程序運行效率。
·終端子系統(tǒng)內(nèi)所要存儲的數(shù)據(jù)類型簡單,沒有使用數(shù)據(jù)庫而是采用動態(tài)存儲、日志記錄的保存機制。且使用數(shù)據(jù)庫會給用戶的安裝使用和維護帶來不便。
4.2.2 程序駐留
在終端計算機開機的前提下,終端子系統(tǒng)要時刻運行,為此采用了程序駐留的方式使系統(tǒng)不被用戶隨意的停用或退出。程序駐留有多種實現(xiàn)方式,如關(guān)聯(lián)類型文件、文件捆綁、進程保護和API HOOK方法等。本系統(tǒng)選用了進程保護方式實現(xiàn)駐留。
為防止系統(tǒng)不被隨意的卸載,采用控制操作系統(tǒng)注冊表的方式保護本系統(tǒng)。通過把系統(tǒng)寫入操作系統(tǒng)的啟動項中,做到開機運行系統(tǒng),并對操作系統(tǒng)注冊表采取了禁用控制保護系統(tǒng)在終端上的安全性。
利用12臺CPU為Intel(R)Pentium(R)DualE22202.40GHz、內(nèi)存為1GB的計算機終端,銳捷公司的兩個RG-RSR20路由器和3個 RG-S3760-24交換機在實驗室模擬了一個有3個不同網(wǎng)段的網(wǎng)絡(luò)環(huán)境。每個網(wǎng)段內(nèi)有4臺計算機,任選一臺安裝管理中心子系統(tǒng),其他3臺安裝終端子系統(tǒng)。通過系統(tǒng)的試運行,管理中心和終端之間及管理中心之間通信情況良好,沒有出現(xiàn)數(shù)據(jù)不一致問題,系統(tǒng)運行時并沒有明顯影響計算機的響應(yīng)速度。
圖8為終端子系統(tǒng)運行時通過捕獲數(shù)據(jù)包所繪制的本機實時I/O流量示意圖。棕線表示入流量,綠線表示出流量,豎坐標(biāo)為流速(KB/S),橫坐標(biāo)為時間軸。通過流量示意圖可以實時掌握本機的進出流量,給管理中心提供判定網(wǎng)段流量的數(shù)據(jù)等。
圖8 實時I/O流量
本文在對分布式系統(tǒng)通信技術(shù)和底層數(shù)據(jù)包截獲控制技術(shù)深入分析的基礎(chǔ)上,提出并實現(xiàn)了SOA架構(gòu)的分布式網(wǎng)絡(luò)監(jiān)管系統(tǒng)。該系統(tǒng)有效解決了計算機信息系統(tǒng)在企業(yè)中的安全問題。利用WCF技術(shù)實現(xiàn)系統(tǒng)內(nèi)給應(yīng)用程序間通信,提高了通信效率;并采用數(shù)據(jù)分類、差異傳輸?shù)耐?、通信機制,提高了傳輸效率。底層的監(jiān)控器采用 NDIS-HOOK技術(shù)開發(fā),NDIS-HOOK相對更底層,對數(shù)據(jù)包的控制力更強,實現(xiàn)相對簡單;在監(jiān)控器實現(xiàn)中引入緩沖區(qū)、多線程機制等有效地提高了處理速度。為防止系統(tǒng)被隨意退出引入了駐留程序機制,提高了系統(tǒng)安全性。
[1]Richard Stevens W.TCP/IP詳解卷1協(xié)議[M].北京:機械工業(yè)出版社,2008.
[2]Craig McMurtry,MarcMercuri,NigelWatling,等.WCF揭秘[M].趙科平,譯.北京:人民郵電出版社,2008.
[3]梁愛虎.SOA思想、技術(shù)與系統(tǒng)集成應(yīng)用詳解[M].北京:電子工業(yè)出版社,2007.
[4]林洪周.萬兆網(wǎng)絡(luò)數(shù)據(jù)包捕獲系統(tǒng)的研究與開發(fā)[D].武漢:華中科技大學(xué),2008.
[5]張志斌,郭莉,陳明宇,等.一種高效網(wǎng)絡(luò)數(shù)據(jù)捕包平臺的設(shè)計與實現(xiàn)[J].計算機工程,2005,31(20):212-213.
[6]鄧友良.HTTP報文監(jiān)測和過濾技術(shù)研究[D].成都:西南交通大學(xué),2007.
[7]曹學(xué)武,易國良,劉利軍.基于協(xié)議分析的郵件安全監(jiān)控系統(tǒng)實現(xiàn)[J].計算工程,2005,31(1):65-67.
[8]周劍嵐,馮珊.運用Hook技術(shù)實現(xiàn)的軟件防火墻[J].華中科技大學(xué)學(xué)報(自然科學(xué)版),2004,32(3):83-85.
[9]孫鴻斌,張建標(biāo).基于Netfilter的數(shù)據(jù)采集技術(shù)在實時內(nèi)容過濾中的應(yīng)用[J].計算機應(yīng)用,2006,26(6):192-194.
[10]張友生.遠程控制編程技術(shù)[M].北京:電子工業(yè)出版社,2004.