網(wǎng)絡(luò)視頻會(huì)議如何安全地穿越防火墻
郭春雷
2003/12/15
近年來(lái),電子郵件、文本對(duì)話和即時(shí)信息等技術(shù)使得人們的聯(lián)系方式和信息交換發(fā)生了巨大的變化。同時(shí),隨著Internet進(jìn)一步發(fā)展,人們也在尋找更加豐富、更多交互的方式進(jìn)行通信和協(xié)作。伴隨著近年IP網(wǎng)寬帶業(yè)務(wù)的蓬勃發(fā)展,基于分組的多媒體通信系統(tǒng)標(biāo)準(zhǔn)H.323廣泛運(yùn)用于視頻會(huì)議和IP電話中,但同時(shí)一些網(wǎng)絡(luò)沖突也突顯出來(lái)。比如當(dāng)前一些網(wǎng)絡(luò)實(shí)體限制這樣端到端的分組(包)通過(guò),這些實(shí)體指的就是防火墻和網(wǎng)絡(luò)地址轉(zhuǎn)換器。
H.323簡(jiǎn)介
現(xiàn)在常用的網(wǎng)絡(luò)會(huì)議軟件和網(wǎng)絡(luò)電話軟件采用的是國(guó)際電信聯(lián)盟(ITU-T)制定的H.323協(xié)議族,其中包括H.225,H.245,Q.931等,另外還有IETF制定的SIP(會(huì)話啟動(dòng)協(xié)議)。SIP協(xié)議采用與http類似的文本命令形式,而且協(xié)議比較簡(jiǎn)單,是未來(lái)網(wǎng)絡(luò)電話和即時(shí)通訊的方向。但由于H.323出現(xiàn)較早,已經(jīng)有很多商業(yè)應(yīng)用,比如微軟的NetMeeting采用的就是比較成熟的H.323,另外中國(guó)的電信企業(yè)實(shí)施IP電話時(shí)也傾向于采用H.323協(xié)議。所以H.323還將會(huì)在長(zhǎng)時(shí)間內(nèi)和SIP同時(shí)存在。
H.323標(biāo)準(zhǔn)定義了一個(gè)在基于分組的網(wǎng)絡(luò)上進(jìn)行靈活的、實(shí)時(shí)的、可交互的多媒體通信協(xié)議集。個(gè)人計(jì)算機(jī)能在包交換網(wǎng)絡(luò)(網(wǎng)際網(wǎng)和內(nèi)部網(wǎng))和電路交換網(wǎng)絡(luò)上傳輸音頻,視頻和數(shù)據(jù)。
H.323網(wǎng)絡(luò)包括終端,網(wǎng)關(guān),網(wǎng)守(Gatekeeper)和多點(diǎn)控制單元(MCU)。
網(wǎng)守在局域網(wǎng)上監(jiān)視所有在其區(qū)域內(nèi)的H.323呼叫,它提供兩個(gè)主要的服務(wù):呼叫準(zhǔn)入和地址解析。所有在此區(qū)內(nèi)的H.323客戶端必須在網(wǎng)守的協(xié)助下開(kāi)始一個(gè)呼叫。另外,網(wǎng)守還可以根據(jù)當(dāng)前可用帶寬決定是否允許客戶呼叫。
網(wǎng)關(guān)提供在異種網(wǎng)絡(luò)之間操作的能力,例如在包交換網(wǎng)絡(luò)和電話網(wǎng)之間,就需要有一個(gè)網(wǎng)關(guān)進(jìn)行協(xié)議和數(shù)據(jù)的轉(zhuǎn)換。
MCU(多點(diǎn)控制單元)提供多方的多媒體會(huì)議能力。它協(xié)調(diào)所有參與者的媒體通信能力,為端點(diǎn)提供音頻混合和視頻選擇(端點(diǎn)本身不能完成這個(gè)工作)。
下面我們以點(diǎn)到點(diǎn)的H.323通信為例說(shuō)明其通信過(guò)程。在此例中,我們用Alice和Bob作為H.323通信的兩個(gè)端點(diǎn)。Alice在防火墻的外側(cè),Bob在防火墻的內(nèi)側(cè)。
首先,Alice向Bob的H.323知名端口1720建立了一條連接。
然后,Bob和Alice在此連接上發(fā)送Q.931包。,在這些交換的數(shù)據(jù)包中,Bob和Alice發(fā)送動(dòng)態(tài)的端口用于建立H.245連接(即上圖CONNECT數(shù)據(jù)包中的H.245 Address)。
隨后,呼叫者根據(jù)在Q.931流中協(xié)商的臨時(shí)端口建立H.245連接。H.245處理所有的呼叫參數(shù)協(xié)商,例如所要用的編碼解碼算法等。一旦這些參數(shù)協(xié)商完畢,H.245會(huì)話開(kāi)始執(zhí)行OpenLogicalChannel,這個(gè)過(guò)程為特定的媒體流(如音頻或視頻)發(fā)送傳輸者和發(fā)送者的RTP和RTCP地址和端口(即上圖OpenLogicalChannel和OpenLogicalChannelAck中的RTP及RTCP Address)。然后,這些媒體流就可以在兩個(gè)端點(diǎn)之間進(jìn)行傳輸,直到會(huì)話結(jié)束。
H.323通過(guò)防火墻和NAT的難點(diǎn)
大量應(yīng)用動(dòng)態(tài)端口
通過(guò)防火墻可以限定進(jìn)出網(wǎng)絡(luò)的數(shù)據(jù)包類型和流量(這種限定可以基于源IP地址、目的IP地址或端口號(hào)等包過(guò)濾規(guī)則)。而基于IP的語(yǔ)音和視頻通訊的H.323協(xié)議,要求終端之間使用IP地址和數(shù)據(jù)端口來(lái)建立數(shù)據(jù)通信通道。因此存在一個(gè)兩難境地:為了建立數(shù)據(jù)連接終端,必須隨時(shí)偵聽(tīng)外來(lái)的呼叫,而防火墻卻通常被配置來(lái)阻止任何不請(qǐng)自到的數(shù)據(jù)包通過(guò)。
即使網(wǎng)絡(luò)管理者打開(kāi)防火墻上的一個(gè)端口來(lái)接收呼叫建立數(shù)據(jù)包,例如1720端口,但I(xiàn)P語(yǔ)音和視頻通訊協(xié)議還要求打開(kāi)許多別的端口接收呼叫控制信息來(lái)建立語(yǔ)音和視頻通道。這些端口號(hào)事先并不知道,是動(dòng)態(tài)分配的,這也就是說(shuō),網(wǎng)絡(luò)管理者為了允許語(yǔ)音和視頻通訊,將不得不打開(kāi)防火墻上所有的端口,防火墻也就失去了存在的意義。由于網(wǎng)絡(luò)安全的原因,很少企業(yè)會(huì)讓他們的網(wǎng)絡(luò)防火墻如此開(kāi)放。
防火墻的網(wǎng)絡(luò)地址轉(zhuǎn)換
同時(shí),由于Internet快速膨脹,IPv4地址空間處于嚴(yán)重耗盡的境況。為解決這個(gè)問(wèn)題,人們?cè)O(shè)計(jì)出了網(wǎng)址轉(zhuǎn)換器(NAT)。網(wǎng)絡(luò)地址轉(zhuǎn)換分為傳統(tǒng)的網(wǎng)絡(luò)地址轉(zhuǎn)換和網(wǎng)絡(luò)地址端口轉(zhuǎn)換。目前,很多的網(wǎng)絡(luò)地址轉(zhuǎn)換都是通過(guò)防火墻來(lái)實(shí)現(xiàn)的。然而NAT后的IP語(yǔ)音和視頻設(shè)備僅有私有IP地址,這些地址在公眾網(wǎng)上是不可路由的。
傳統(tǒng)的網(wǎng)絡(luò)地址轉(zhuǎn)換機(jī)制允許一個(gè)組織在內(nèi)部通信時(shí)使用一定范圍內(nèi)的私有地址,當(dāng)與外部通信時(shí)使用一個(gè)小的公共IP地址池。
另一種網(wǎng)絡(luò)地址轉(zhuǎn)換是網(wǎng)絡(luò)地址和端口轉(zhuǎn)換。這種轉(zhuǎn)換形式有一個(gè)內(nèi)部地址,一個(gè)或多個(gè)外部地址,然后用端口號(hào)進(jìn)行區(qū)分。
NAT是置于兩網(wǎng)間的邊界,其功能是將外網(wǎng)可見(jiàn)的IP地址與內(nèi)網(wǎng)所用的地址相映射,這樣,每一受保護(hù)的內(nèi)網(wǎng)可重用特定范圍的IP地址(192.168.x.x),而這些地址是不用于公網(wǎng)的。從外網(wǎng)來(lái)的含公網(wǎng)地址信息的數(shù)據(jù)包先到達(dá)NAT,NAT使用預(yù)設(shè)好的規(guī)則(其組元包含源地址、源端口、目的地址、目的端口、協(xié)議)來(lái)修改數(shù)據(jù)包,然后再轉(zhuǎn)發(fā)給內(nèi)網(wǎng)接受點(diǎn)。對(duì)于流出內(nèi)網(wǎng)的數(shù)據(jù)包也須經(jīng)過(guò)這樣的轉(zhuǎn)換處理。
從安全性上來(lái)看,NAT提供了對(duì)外隱藏內(nèi)網(wǎng)拓?fù)涞囊粋(gè)手段,但也給H.323應(yīng)用帶來(lái)巨大的麻煩。協(xié)議消息包一般不是放置在IP包頭,而是在特定區(qū)段中內(nèi)嵌IP地址和端口號(hào)。這樣,如果使用NAT,協(xié)議里的IP和端口號(hào)不能指向正確的地方,從而導(dǎo)致通信不能正常進(jìn)行。
ASN.1編碼
H.323的大部分控制信息用ASN.1進(jìn)行編碼,這是一種非常復(fù)雜的編碼模式,相同版本的相同應(yīng)用在連接相同的目的時(shí),會(huì)使用不同的選項(xiàng),從而使相同成員在數(shù)據(jù)流中的偏移量不同。為了提取其中的有用信息(如內(nèi)嵌的IP地址和端口號(hào)),需要對(duì)用ASN.1編碼過(guò)的數(shù)據(jù)包進(jìn)行仔細(xì)的解碼。
東軟NetEye防火墻在網(wǎng)絡(luò)視頻會(huì)議系統(tǒng)的安全解決方案
基于以上H.323的特性,目前絕大多數(shù)的防火墻是不支持H.323協(xié)議的,尤其是經(jīng)過(guò)網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)后的應(yīng)用,即使支持,也不是很徹底。
為了使用戶網(wǎng)絡(luò)的H.323數(shù)據(jù)流能順利地通過(guò)NetEye防火墻,從而正常、安全地進(jìn)行網(wǎng)絡(luò)視頻等應(yīng)用,東軟公司NeEye產(chǎn)品的研發(fā)人員專門對(duì)H.323協(xié)議進(jìn)行了詳細(xì)的分析和控制,有效地解決了當(dāng)前防火墻和NAT帶來(lái)的連通問(wèn)題。
對(duì)ASN.1編碼的數(shù)據(jù)包進(jìn)行解碼
如前面所述,H.323的大部分控制信息,包括通信所使用的IP地址和端口號(hào),都是用ASN.1進(jìn)行編碼。因此,為了得到這些有用的信息,NetEye防火墻針對(duì)ASN.1編碼后的數(shù)據(jù)進(jìn)行了詳細(xì)的解碼。
將網(wǎng)絡(luò)地址轉(zhuǎn)換應(yīng)用到控制信息中
解碼H.323控制信息后,獲得通信所使用的內(nèi)部私有IP地址和端口,根據(jù)NetEye防火墻上當(dāng)前應(yīng)用的網(wǎng)絡(luò)地址轉(zhuǎn)換規(guī)則,將H.323控制信息中的IP地址修改為轉(zhuǎn)換后的公網(wǎng)地址。這樣當(dāng)被呼叫的終端收到呼叫建立(Call Setup)數(shù)據(jù)包后,會(huì)從該數(shù)據(jù)包控制信息中獲取呼叫端的IP地址,發(fā)現(xiàn)這個(gè)IP地址為一個(gè)公網(wǎng)IP地址,開(kāi)始發(fā)送音頻和視頻數(shù)據(jù)到這個(gè)IP地址,從而在NAT下實(shí)現(xiàn)正常的網(wǎng)絡(luò)視頻通信。
自動(dòng)打開(kāi)動(dòng)態(tài)分配的端口
由于NetEye防火墻能夠解碼經(jīng)過(guò)ASN.1編碼的H.323協(xié)議的數(shù)據(jù)包,并進(jìn)行詳細(xì)的分析,從而可以檢測(cè)H.323協(xié)議通信過(guò)程中動(dòng)態(tài)分配的一些端口。這樣做的結(jié)果是,在防火墻的規(guī)則中,只須打開(kāi)幾個(gè)H.323的知名的端口(如1718,1719,1720等),其它通信過(guò)程中動(dòng)態(tài)分配的端口在需要時(shí)NetEye防火墻會(huì)臨時(shí)打開(kāi),在不需要時(shí)馬上關(guān)閉。這樣就不用打開(kāi)所有大于1024的端口,增加了防火墻的安全性,而且也不受防火墻網(wǎng)絡(luò)地址轉(zhuǎn)換的影響。這也是基于狀態(tài)檢測(cè)的“流過(guò)濾”防火墻所具有的先天的優(yōu)勢(shì)和特性。
NetEye防火墻通過(guò)對(duì)網(wǎng)絡(luò)視頻會(huì)議系統(tǒng)的安全防護(hù),很好地解決了日常私網(wǎng)和公網(wǎng)通信面臨的連通性、防火墻技術(shù)、NAT技術(shù)、高度安全等問(wèn)題,充分發(fā)揮了IP通信的諸多優(yōu)勢(shì)。
H.323通信過(guò)程
賽迪網(wǎng)
中國(guó)信息化(industry.ccidnet.com)
相關(guān)鏈接: