王昕光
(吉林電視臺,吉林 長春 130000)
有線電視臺的網路安全,不同于一般單位可以通過 防火墻等系統避免網絡攻擊等網絡防護,其網絡安全主要是通過監控非法信息發布于內容受控訪問等措施實現的,這些特殊要求不容易通過通用軟件解決。本文結合電視臺網絡的特點,設計并實現了一個用于監視有線電視臺網絡安全的軟件系統,該系統采用嗅探器原理對網絡上所有信息進行監視,捕獲網絡上所有數據并通過對網絡數據包進行協議分析后解析其信息,把解析出的信息在監視端上顯示,以此達到網絡監控管理的目的。
以太協議是目前局域網普遍使用的協議,其工作方式是:對所有互聯網聯機的主機發送數據包,數據包中含有對數據包進行接收的主機的正確地址。只有與數據包中的數據相匹配的主機才能對其進行接收。但是,如果主機在被監聽的狀態下,將會對數據包進行接收并且忽略數據包中的目標地址。
在使用以太網的局域網中,主機將電纜和集線器連接在一起,當兩臺主機處于局域網通信的狀態下,目的主機直接接收源主機內寫有目的的主機地址的數據包。對于IP 層來說,這種數據包是不允許被直接發送的。必須由因特網互聯協議中 的IP 層交給網絡接口,即數據鏈路層。而IP 地址不能對網絡接口進行識別,所以一部分以太幀頭的信息又傳送到網絡接口的數據包之中。識別網絡接口的源主機和目的主機的物理地址組成了幀頭中存在的兩個域,這是一個四十八位的地址且與IP 地址相適應。
局域網中數據的傳輸工程過程是:物理線路通過網卡接收擁有物理地址的幀,可以在電纜上傳輸數字信號,使其可以到達線路上的每臺主機中。當集成器處于工作狀態,集線器上每臺主機都可以接收到數字信號。當一臺主機的網絡接口接收到數字信號的時候,一般情況下,數據幀在網絡接口處被讀取并對其進行檢查,如果數據幀攜帶的物理地址是屬于自己的地址或者是一條廣播地址,那么就有上層協議軟件“接收”數據幀,即處于IP 層的軟件,否則會丟失該幀。
網絡接口的工作有以下幾種方式:廣播、多播、直接和混雜模式。在混雜模式下工作的網絡接口,可以接收流過網絡接口的幀。在這種模式下,信包捕獲程序開始運行。廣播模式和直接模式共同構成網絡接口的缺省工作模式。其對發給自己的幀都不會被網絡接口丟棄而由上層協議軟件進行處理,這樣就可以對網絡信息進行監視和捕獲。
軟件系統主要包含兩個模塊:捕獲數據包和分析數據包,系統基本流程:開始→獲取本地網卡信息→打開設備,把網卡設置成混雜模式→獲取網絡包→分析捕獲的數據包→釋放空間,關閉網卡→結束。
第一,對系統進行初始化,使用原始套接字設置網卡為混雜工作模式。在創建了原始套接字后,需要通過setsockopt 函數來設置IP 頭操作選項,接著在通過bind 函數將原始套接字綁定本地網卡。為了讓原始套接字可以接收所有的數據,還需要通過ioctlsocket 函數來進行設置,而且還可以指定是否親自處理IP 頭。實際上就是能對網絡數據包進行捕獲了,對數據包的捕獲可以想流式套接字或數據報套接字那樣通過recy 函數來完成。
使用Winpcap 來實現對數據包細節的捕獲,Winpcap 是由伯克利分組捕獲庫派生而來的分組捕獲庫,他是在Windows 操作平臺上來實現對底層包的截取過濾。
第二,利用Winpcap 進行網絡數據包的捕獲和過濾的設計步驟:(1)應用pcap_findalldevs 函數枚舉本機網卡的信息;(2)打開網卡,并設為混雜模式;(3)回調函數Network Tap 在得到監聽命令后,從網絡設備驅動程序處手機數據包,并把監聽到的數據包負責傳送給過濾程序;(4)當Packet filter 監聽到有數據包到達時,NDIS 中間驅動程序首先調用分組驅動程序,該程序將數據傳遞給每一個參與進程的分組過濾程序;(5)然后由Packet filter 過濾程序決定哪些數據包應該丟棄,哪些數據包應該接收,是否需要將接收到的數據拷貝到相應的應用程序;(6)通過分組過濾器后,將數據未過濾掉的數據包提交給核心緩沖區,然后等待系統緩沖區滿后,再將數據包拷貝到用戶緩沖區,監聽程序可以直接從用戶緩沖區中讀取捕獲數據包;(7)關閉網卡。
第三,協議分析模塊的實現。這時候捕獲到的數據包不僅僅是單純的數據信息,而是包含了IP 頭、TCP 頭等信息頭的最原始的數據信息,這些信息保留了它在網絡傳輸的原始數據。因為這些數據是經過了網絡層和傳輸層的打包,需要根據其附加的數據段頭對數據包進行分析。數據在從應用層到達傳輸層,將添加TCP 數據段頭或者UDP 數據斷頭,在網絡層,還要給TCP 包頭添加一個IP 數據段頭組成IP 數據報,由于本課題主要是以網絡層上的一層的角度分析數據包,所以只需考慮數據被加了TCP 數據斷頭或者UDP 數據斷頭的情況,其中UDP 數據斷頭比較簡單,由一個8 字節的頭和數據部分組成,而TCP數據段 頭比較復雜,以20 個固定字節開始,在固定頭后面還可以有一些長度不固定的可選項,所以在設計過程中,選擇將所有的頭均看成20 個字節,判斷過程中,如果是TCP 段頭,直接進行處理,20 個字節均被解包在數據段頭中,如果是UDP 段頭,就按照8 個字節的數據段頭處理,其他12 個按照空處理,不進行分析。這樣,在參數傳遞過程中,包頭就按2O 個字節的常量進行處理。協議分析模塊按照各層協議的數據結構把數據包一層一層的解析就可以了。
對于網絡監視系統而言,它實現了對全網絡的內容進行有效監控,從而成為有線電視臺在計算機網絡方面的監控輔助工具。這種功能的實現有一定的實際使用價值。目前,人工參與識別信息還在該系統進行運用,但隨著模式識別和對數據進行挖掘的技術日漸成熟,可以實現對視頻和音頻信息的自動識別和全自動預警,從而實現節約人力成本的目的。
[1]郭強,王志強.有線電視臺網絡監視系統的設計與實現[J].中國有線電視:社會科學版,2009,10:1061-1063.
[2]呂倩,譚邦.網絡監視系統設計與實現[J].南華大學學報:自然科學版,2011,S1:89-93.
[3]曹曉梅,王能.層次式網絡性能監視系統的研究與實現[J].計算機應用,2009,08:114-116.