摘要:本文采用C/S模式,通過對局域網中客戶端的文件操作、進程運行的情況、CPU的利用率,以及流量情況等進行信息的收集,并傳送給服務器端進行相關處理,構建了一個基于局域網的信息監控系統,從而使管理人員方便而高效地了解局域網內部各個主機的網絡行為。
關鍵詞:局域網 監控 模塊 流量
中圖分類號:TP393文獻標識碼:A 文章編號:1674-098X(2011)12(c)-0000-00
隨著網絡技術的廣泛應用,許多部門、企業等都建立了自己內部的局域網,并通過一定的方式接入因特網。在網絡中,用戶可以方便地獲得自己所需的各種資料,辦公效率有了明顯提高。但網絡資源的豐富性經常會使部門的員工在工作和學習時沉迷于網絡,同時,黑客工具的存在也給人們的生活和部門的信息安全帶來了巨大的威脅。 因此,對局域網內部主機的信息監控也就成了一種必要的手段。
1 局域網信息監控系統的總體結構
(1)基本原理。在本系統中,主要采用C/S結構來實現系統的功能。客戶端軟件主要負責監控本臺主機的活動行為,并給服務器發送相關信息。服務器收到信息后,以圖形或文件列表等形式將客戶端傳來的數據展現給部門管理人員,從而使管理者對部門內主機的各項活動進行有效的監控。同時,數據還將被存放到數據庫中。其中,客戶端監控程序將獲得局域網內部每臺主機的原始活動信息,需要采用進程隱藏技術保證不被普通用戶強行終止。系統運行時,數據將不斷更新和連續傳輸。
(2)客戶端分析。客戶端監控軟件用來采集本機的各項活動數據,并將數據定時傳送給服務器軟件。客戶端監控軟件記錄的各種實時信息包括:主機網絡使用情況,當前運行的進程信息,主機修改的文件信息,主機CPU使用率等信息。
此外,局域網內的每臺主機還有一個客戶端管理器,其任務是收集了客戶端以上幾個模塊的數據信息后,通過網絡傳送給服務器端。
(3)服務器端分析。在本系統中,服務器端軟件在結構上可以分為兩個部分,即:網絡服務器端系統,以及與管理人員進行交互的界面。其中,網絡服務器端系統分為一個主線程和若干子線程,系統運行時,由主線程創建子線程,當有客戶進行網絡資源的請求時,主線程就創建一個子線程與之相對應。而服務器端界面負責將收集到的數據進行整理,并以圖形或列表等形式反饋給管理人員,同時將數據存入數據庫中。
2 系統的實現
2.1 客戶端的設計
(1)網絡數據包獲取和分析模塊設計。獲取和分析網絡數據包是實現監測客戶機網絡使用情況的基礎。本系統采用WinPcap(Windows Packet Capture)開發包來獲取經過網卡的底層網絡數據包,分析并判斷這個網絡數據包的內容和類型。使用WinPcap獲取底層網絡數據包的流程是:
首先,利用pcap_findalldevs()函數獲得本局域網的設備列表;
其次,利用pcap_open_live()函數將當前選擇的網卡設為混雜偵聽模式,以獲取完整的網絡數據包;
然后,利用函數pcap_loop()開始獲取網絡數據包;
最后,利用函數pcap_freealldevs()釋放不需要的網絡設備列表。
(2)客戶端文件模塊設計。客戶端文件模塊主要用來監測客戶端修改文件的數量、時間和類型等信息,利用類的思想,對相關線程進行相應的控制,其過程主要借助于Windows鉤子(Hook)技術相應的系統服務來實現,并通過API函數向設備對象發消息,來收集客戶機在某時間段中創建、打開、關閉,以及刪除相關文件等的操作信息。采集來的數據按照一定的格式進行存儲。
(3)客戶端進程模塊設計。客戶端進程模塊實時統計主機運行的進程信息,并通過網絡發送給服務器端。其設計也是通過Hook相應的System Service技術來實現。
其過程是:首先,獲取在局域網中某臺主機所運行的所有進程的相應信息:時間、ID號、進程名稱、路徑等。其次,在規定的時間段之后(比如:5秒),再重新獲取系統當前所運行的所有進程的相應信息,并保存。然后對不同時刻的數據進行比較,以識別在一個時間段中,哪些進程是剛開始的,哪些進程是才結束的。
(4)客戶端CPU模塊設計。客戶端CPU模塊通過線程來實現監控,它的主要作用是統計局域網內本機CPU 的利用率。在設計過程中,借助于類的封裝來實現對客戶端CPU的監控。首先,建立一個CpuAgent類,
該類包含:CupAgent(),StartAgent(),StopAgent(),getUsage()。這些函數分別用來統計局域網中客戶端在開始和結束時占有CPU資源的進程個數,并通過一定的算法獲得本機CPU的利用率。其算法為:(1-t1/t)/n .(t1表示客戶機CPU空閑的時間,t表示客戶機總的運行時間,n表示客戶機總共運行的進程數目)。在操作過程中,規定客戶機每秒計算一次CPU的利用率,并且每隔五秒通過網絡向服務器發送一次數據。
(5)客戶端流量監控模塊設計。在本系統中,借助于MRTG(Multi Router Traffic Grapher多路由器流量圖形)圖形化網絡流量的統計分析工具,基于SNMP協議,對網絡流量信息進行采集。設計過程如下:
首先,安裝IIS,然后選擇Perl的版本,因為MRTG的運行需要Perl編譯環境。
其次,在局域網的各個客戶機上正確設置SNMP;
然后,安裝MRTG,并手工修改配置文件MRTG.cfg,確定統計參數,并在客戶端機器上添加MRTG到開機自動加載。
最后,制作web頁面PNG圖并發布。
2.2 服務器端的設計
在設計過程中,首先在服務器端開啟一個偵聽主線程,負責偵聽是否有客戶端請求建立連接。一旦有客戶需要連接時,主線程創建一個新的子線程與該客戶端相連接。客戶連接子線程被創建后,首先判斷該客戶是否有數據可以被接收。如果有,接收下來后,分離出每一個活動類型的數據,再將每一個活動類型的每一個字段進行分離,并將處理后的信息進行整理,最后在服務器端軟件的界面上呈現出來,以便管理人員了解相關信息,同時將數據存進數據庫。其中,服務器端要將整理好的數據用圖形或者列表的形式向管理人員進行展示。在設計過程中,當采用列表的顯示方式時,要保證活動主機列表中始終保持最新的狀態。
3 結語
本文所闡述的局域網監控系統是一個幫助部門管理人員對局域網內部各個主機相關活動的監控系統,它能準確反映局域網內部各主機在各個時間段里的活動信息。在系統的實現中,主要借助于線程和Hook技術,在C/S模式下對局域網內各個客戶端的相關活動進行監控,并通過網絡傳輸給服務器,管理人員在服務器界面上能看出處理完的信息,從而實現了對網絡監控的可能性和管理的高效性。