摘要:為更好地保證計算機局域網內部數據資源不被泄密和偷盜,一方面要完善局域網內的信息安全管理;另一方面須采用先進網絡技術對送出網絡的信息進行監控,使信息不被泄密。后者的基本思路是攔截輸出網絡的信息,對這些信息進行安全檢查,只有通過安全檢查的信息才允許傳輸到外面的網絡。
關鍵詞:網絡嗅探器;信息安全;數據包截獲
0 引言
隨著計算機網絡技術的飛速發展,計算機網絡已經顯示出廣域分布、體系結構開放、資源共享和信道共用等特征,已被廣泛用于金融、貿易、商業、企業、教育等各個領域,但是在網絡上存儲、共享和傳輸的信息被非法竊聽、截取、篡改或破壞而導致的損失也日益嚴重。在眾多的企業信息安全事故中,只有很少一部分是黑客越過網絡安全設施,破壞網絡內部信息資源所致,而絕大部分是由企業或者公司內部員工泄密造成。因為相對黑客,內部員工更易直接接觸到保密數據信息,隨時隨地都有可能被員工通過網絡方式泄密出去。因此,確保存儲在計算機局域網內部的數據和程序不被泄密和偷盜,網絡內部計算機的信息處理和加工安全可靠,網絡的通信不被截獲等等成為目前所關注的問題。
1 實現的基本思路
1.1 局域網內信息傳送到外部網的工作過程
確保計算機局域網信息的安全,就是要設法保證局域網內部的重要信息無法傳送到網絡外部去。眾所周知,在局域網中的計算機只有通過網關才能將局域網中的信息發送到外部網。因此,一種方法是對通過網關出去的所有數據包進行捕獲和解碼,阻止包含泄密信息的數據包通過網關;另一種方法是對網絡中每臺計算機發送出去的數據包進行捕獲和解碼以阻止泄密數據包外傳。
在網關上對外傳的所有信息進行監控截獲,實現相對比較簡單,而且網關服務器不用擔心監視程序被終止、監控記錄被篡改等問題,且由于客戶機沒有網絡安全監控,具有隱蔽性好的特點。缺點是網絡數據包截獲、數據檢查、阻止信息泄密都集中在網關上進行,網關服務器要有較高的處理能力和比較高的硬件性能,因此成本高。對局域網中的每臺計算機送出的信息進行監控,其優點是只對本機的每個網絡數據包進行數據截獲、數據檢查、阻止信息泄密,所以效率高,同時由于每個客戶端均安裝監控設備,有警示作用,對網關沒有任何要求,具有成本低的特點;缺點是客戶終端上的檢查程序有可能被人為終止。本文采用后者實現。
1.2 網絡嗅探器的工作原理
使用監聽程序軟件可以監聽到所有局域網內的數據通信,這種監聽程序被稱為網絡嗅探器(Network Sniffer),其基本原理是對經過局域網的每臺計算機或網關的數據包進行捕獲和解碼,從鏈路層協議開始進行解碼分析,一直分析到應用層協議,最后獲取數據包中需要的內容。這種網絡數據包的截獲機制是,截獲整個網絡的所有信息流,根據信息源主機、目標主機、服務協議和端口等信息簡單過濾掉不關心的數據,再將用戶感興趣的數據發送給更高層的應用程序進行分析。
嗅探程序的設計一般有如下幾個階段:
包捕獲設置 包括網絡適配器的識別和網卡混雜模式的設置。
過濾器設置 對數據包的捕獲設定一些條件,如按某些特定的IP地址進行過濾;或根據網絡協議只捕獲某種特定的協議,如TCP或UDP包中的數據;或過濾包含特定信息的數據包,例如包含用戶名和密碼信息的數據包。
數據分析 對捕獲的數據進行分析處理,獲得數據包中的上層信息。
1.3 網絡嗅探器的設計方法
本文所設計的系統的核心功能是要嗅探出網絡數據包中是否含有危及安全的信息。要實現對數據包內容的嗅探,首先要對網絡數據包進行截獲。在網絡OSI 7層模型上,在不同網絡層上可以有不同的截獲數據包的方法,如圖1所示。
從圖1看出,一種技術是采用Winsock 2 SPI,它工作在API之下Driver之上,利用這項技術可以截獲所有的基于Socket的網絡通信。它工作在應用層;不但CPU占用率低,效率高,并且以DLL的形式存在,編程、調試方便,而且封包還沒有按照低層協議進行切片,所以比較完整,很容易做內容過濾,缺點是無法攔截不用Socket的網絡通信;另一種是采用NDIS-Hook的技術,建立于網絡驅動程序接口規范的基礎上。NDIS-HOOK工作原理是,直接替換NDIS函數庫中的函數地址,讓所有對NDIS的請求先經過特定函數的處理,再轉發給系統函數處理。NDIS-HOOK不但編程方便、接口簡單、性能穩定,可以只截獲自己需求的、不需要冗余的代碼;而且功能強大,可以截獲所有NDIS和TDI函數,甚至HOOK系統函數的處理結果,截獲封包較為底層,不容易被穿透,所以安全性高。但須了解操作系統底層驅動的開發方法以及一些系統API的使用,實現難度較大。
一般對計算機局域網的網絡(網卡)信息截獲編程主要采用Winsock 2 SPI技術和NDIS-Hook技等技術。本文使用Winpcap開發技術包來實現。通過截獲數據包,然后進行安全信息的過濾和檢查,對違反規則的數據包進行記錄和阻止,實現計算機信息安全,大大減少了系統的開發工作量。Winpcap(Windows packet capture)是Windows平臺下一個免費、公共的網絡訪問系統,由一個數據包監聽設備驅動程序,一個低級的動態連接庫和一個高級的靜態連接庫組成。數據包監聽設備驅動程序直接從數據鏈路層取得網絡數據包不加修改地傳遞給運行在用戶層的應用程序;數據包監聽設備驅動程序支持BPF過濾機制,可以靈活地設置過濾規則;低級的動態鏈接庫運行在用戶層,把應用程序和數據包監聽設備驅動程序隔離開來,使得應用程序可以不加修改地在不同的Windows系統上運行。高級的靜態鏈接庫和應用程序編譯在一起,它使用低級動態鏈接庫提供的服務,向應用程序提供完善的監聽接口。它為Win32應用程序提供了訪問網絡底層的能力,它還提供以下功能:捕獲原始數據報,包括共享網絡上各主機發送/接收的以及相互之間交換的數據報;在數據報發往應用程序之前,按照自定義的規則將某些特殊的數據報過濾掉;在網絡上發送原始的數據報;收集網絡通信過程中的統計信息等功能。
1.4 系統設計的工作過程
本課題的具體任務如下:
(1)實現對所有發送出去的信息進行在線登記;
(2)攔截危及安全的信息;
(3)系統設計采用端口偵聽和監控,并記錄哪臺計算機、什么時間、作了何種操作;
(4)處理結果采取組織、警告等處理登記通知用戶;
(5)系統采用托盤程序設計,功能類似于防火墻,但目的不對外,對內。
2 系統實現
在局域網中,對網卡的編程有很多種方法。通常的套接字程序只能響應與自己硬件地址相匹配的或是以廣播方式發出的網絡數據幀,對于其它形式的數據幀,網絡接口在驗證目的地址并非自身地址之后將不引起響應,也就是說應用程序無法接收到達的數據包。因此不能讓網卡按通常的正常模式工作,須將其設置為混雜模式。這樣則無論監聽到的數據幀的目的地址如何,網卡都能予以接收。
系統采用C/S結構實現,在計算機局域網上設置一臺服務器,而局域網上的每臺計算機作為客戶端。系統總體框架如圖2所示。
從圖2可以看出,服務器端主要負責從局域網內包含重要信息的文檔中抽取一些關鍵詞和關鍵段組成關鍵字,分發到局域網中的每臺計算機,供客戶端程序對截獲信息包的信息按照一定算法進行匹配,找出哪臺計算機泄露局域網內重要信息,并對其進行攔截。服務器端由監控管理模塊、關鍵字管理模塊、信息通訊模塊組成;客戶端主要負責對從網卡發送出去的數據包進行攔截,對攔截的信息包進行關鍵字信息匹配,對匹配成功的信息包進行攔截,并把相關信息通過通訊模塊送到監控日志中,提醒用戶終止操作。客戶端由信息監控模塊和信息通訊模塊組成。下面詳細介紹其實現過程。
2.1 客戶端實現
客戶端模塊啟動時,首先從服務器端下載所有重要信息的關鍵字到客戶端的關鍵字字符串數組中,將客戶端的網卡設置為混雜模式,截獲從本機發出的所有網絡數據包,對截獲的數據包與關鍵字字符串數組進行匹配,匹配出某個數據包中包含關鍵字列表中任何一個關鍵字時,記錄到匹配可疑數組中。當可疑數組中有多個匹配記錄時,客戶端則將本機信息和違規內容生成一條記錄,告知用戶,并將其發送到服務端,進行存檔,便于單位局域網的后續處理。客戶端工作流程如圖3所示。
客戶端程序的關鍵是判斷截獲的數據包中含有危及信息安全的信息。可疑數組生成過程如下:首先根據截獲信息包中的目的地址創建一個可疑數組,然后對所有截獲信息包內容與設定條件進行比對,信息包不匹配的予以放行;若匹配成功,則根據截獲信息包的目的地址,把截獲的內容填入對應的可疑數組中。截獲的匹配信息包將不予以轉發到外網,從而達到信息安全的目的。
2.2 服務器端實現
服務器端的主要功能有:對局域網內部不能送出去的信息文檔,按照一定的規律從文檔中提取關鍵詞,對關鍵詞按照文檔內容的先后次序進行排序;對局域網內所有計算機送出的數據包提供日志功能,并提供一個方便的對違規記錄的管理;設置直接轉發的通信憑證。
2.3 系統測試
本系統的設計,在幾個單位進行了實驗,結果見表1。
從表1中可以看出,本系統可以對常見的明文數據傳輸進行很好的監控。但無法監控采用加密手段的數據傳輸。
3 結束語
整個系統采用C/S模式實現,客戶端采用系統托盤方式設計,在客戶端后臺運行。從上面的測試結果可以看出,對BBS、電子郵件、明文(沒有經過加密)、常規壓縮和FYP方式送出的文檔進行信息監控和信息攔截的效果非常理想,但對一些特殊加密的網絡傳輸內容,雖然能截獲,但解析不出其內容是否含有加密信息。這是今后需要改進的。總體上,本系統的運行,大大增強了計算機局域網的內部信息安全,由于系統把關鍵字檢測運算分配到局域網內每臺機器,相比在網關上運行檢測運算,因為不會對網絡傳輸速度造成影響,效率比較高。