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