網(wǎng)絡(luò)原來如此之防火墻應(yīng)用網(wǎng)關(guān)技術(shù)

2023-06-08 02:29:14       來源:清一色財(cái)經(jīng)

?當(dāng)前我行科技發(fā)展迅猛,各種新技術(shù)、新架構(gòu)不斷出現(xiàn),防火墻的安全隔離作為數(shù)據(jù)中心內(nèi)部安全管控的必要手段,一方面要保障數(shù)據(jù)中心安全穩(wěn)定運(yùn)行,另一方面也要以快捷、穩(wěn)定的方式支持應(yīng)用系統(tǒng)發(fā)展,進(jìn)而賦能我行業(yè)務(wù)高速發(fā)展。?

1、ALG產(chǎn)生背景

在應(yīng)用層協(xié)議中,部分協(xié)議有多個(gè)通道用于信息交互,例如FTP、SIP、SQLNET等,類似通信網(wǎng)中的“七號(hào)信令”。這種多通道的協(xié)議首先需要建立控制通道,然后在控制通道中協(xié)商數(shù)據(jù)通道的地址和端口,根據(jù)協(xié)商結(jié)果臨時(shí)創(chuàng)建一個(gè)或多個(gè)數(shù)據(jù)通道,使用的端口通常不能預(yù)先確定,同時(shí)數(shù)據(jù)通道連接建立的方向也不能預(yù)先確定,防火墻的安全策略(Policy)和網(wǎng)絡(luò)地址轉(zhuǎn)換規(guī)則(NAT)無法準(zhǔn)確描述這些數(shù)據(jù)通道。因此這種多通道協(xié)議在經(jīng)過防火墻時(shí)往往會(huì)出現(xiàn)控制通道可以建立連接,數(shù)據(jù)通道不能完整建立連接,或沒有反向策略,會(huì)導(dǎo)致數(shù)據(jù)通道通信失敗。對(duì)于多通道的應(yīng)用層協(xié)議,由于防火墻無法檢測(cè)上層協(xié)商的數(shù)據(jù)通道端口,而且也不能提前于應(yīng)用預(yù)先知道數(shù)據(jù)通道的端口,更無法配置適當(dāng)?shù)陌踩呗浴?/p>


(資料圖)

另外在NAT的應(yīng)用場(chǎng)景中,防火墻的NAT功能僅對(duì)IP網(wǎng)絡(luò)層報(bào)文的報(bào)文頭進(jìn)行IP地址的識(shí)別和轉(zhuǎn)換,對(duì)于應(yīng)用層協(xié)商過程中報(bào)文載荷攜帶的地址信息無法進(jìn)行識(shí)別和轉(zhuǎn)換,因此在NAT的應(yīng)用場(chǎng)景中,多通道的協(xié)議的數(shù)據(jù)通道也不能建立。

2、什么是ALG

ALG(Application Level Gateway)全稱應(yīng)用網(wǎng)關(guān),ALG技術(shù)可以識(shí)別典型多通道應(yīng)用協(xié)議IP報(bào)文數(shù)據(jù)載荷中攜帶的地址和端口信息,結(jié)合嚴(yán)格安全策略控制特性可支持動(dòng)態(tài)通道的檢測(cè)功能,以及對(duì)應(yīng)用層的狀態(tài)檢測(cè)功能:多通道協(xié)議的報(bào)文交互過程中協(xié)商動(dòng)態(tài)通道的地址和端口,在安全訪問策略的控制下,可以通過開啟pinhole來完成數(shù)據(jù)通道的連接。

3、ALG實(shí)現(xiàn)原理介紹

防火墻通過Policy使網(wǎng)絡(luò)安全和可控,而防火墻的Policy和NAT規(guī)則只能對(duì)傳輸層的控制做靜態(tài)的描述,卻不能對(duì)應(yīng)用層做控制描述。傳輸層只是應(yīng)用層信息傳輸?shù)木W(wǎng)絡(luò)通道(TCP/IP連接),許多應(yīng)用使用知名端口做控制連接,而數(shù)據(jù)傳輸使用動(dòng)態(tài)、臨時(shí)協(xié)商建立起來的動(dòng)態(tài)連接,不是預(yù)先確定的,防火墻無法準(zhǔn)確描述這些動(dòng)態(tài)連接,能否穿越防火墻就不確定。

(1)ALG通過以下手段解決應(yīng)用層動(dòng)態(tài)連接穿越防火墻問題

1)提供動(dòng)態(tài)連接訪問外網(wǎng)所需的外網(wǎng)地址和端口以及地址端口轉(zhuǎn)換關(guān)系;

2) pinhole對(duì)動(dòng)態(tài)建立的session進(jìn)行處理,確保連接建立成功。

(2)ALG模塊定義了一個(gè)與應(yīng)用層動(dòng)態(tài)連接相對(duì)應(yīng)的pinhole對(duì)象來為動(dòng)態(tài)連接在防火墻中建session,用來實(shí)現(xiàn)防火墻穿越。pinhole描述了動(dòng)態(tài)連接的session信息、外網(wǎng)地址和端口資源,但pinhole不是session。

(3)防火墻工作處理流程

防火墻需要應(yīng)用網(wǎng)關(guān)去分析應(yīng)用層的內(nèi)容,如果應(yīng)用層要協(xié)商和發(fā)起數(shù)據(jù)連接,那么應(yīng)用層將要建立的連接用expect flow描述,將expect flow用作參數(shù)調(diào)用相應(yīng)的ALG APIs生成和安裝pinhole。pinhole生成后,有數(shù)據(jù)連接所需的外網(wǎng)地址和端口,必要時(shí)應(yīng)用代理修改應(yīng)用的內(nèi)容,轉(zhuǎn)換協(xié)商的地址和端口。

數(shù)據(jù)連接發(fā)起報(bào)文到達(dá)防火墻的時(shí)候,會(huì)先匹配pinhole,然后從pinhole建session。如果pinhole沒有匹配上,則匹配Policy建session。

4、FTP協(xié)議及FTP ALG應(yīng)用網(wǎng)關(guān)詳解

4.1FTP協(xié)議交互過程

(1)主動(dòng)模式(Port)

在主動(dòng)模式下,F(xiàn)TP客戶端從任何非特殊端口(例如源端口N=1024)連接到FTP服務(wù)器-port 21的命令端口。然后客戶端在N+1(N+1=1025)端口監(jiān)控,通過N+1(N+1=1025)端口向FTP服務(wù)器發(fā)送命令(PORT=1025)。服務(wù)器使用源端口20連接到FTP客戶端在本地指定的數(shù)據(jù)端口(1025)。交互過程如下:

控制連接:客戶端>1024端口—>服務(wù)器21端口

數(shù)據(jù)連接:客戶端>1025端口<—服務(wù)器20端口

圖1

(2)被動(dòng)模式(PASV)

在被動(dòng)模式下,控制通道和數(shù)據(jù)通道都由客戶端發(fā)起。當(dāng)打開一個(gè)FTP連接時(shí),F(xiàn)TP客戶端打開兩個(gè)任意的非特權(quán)本地端口(N=1024和N+1=1025)。第一個(gè)端口連接到服務(wù)器的端口21,但與主動(dòng)模式下的文件傳輸協(xié)議不同,客戶端不會(huì)提交port命令并允許服務(wù)器來連接其數(shù)據(jù)端口,而是提交PASV命令。因此,服務(wù)器將開放一個(gè)任意的非特定端口(P=1034),并向客戶端發(fā)送端口PASV命令。然后客戶端啟動(dòng)從本地端口N +1到服務(wù)器端口P的連接,以傳輸數(shù)據(jù)。交互過程如下:

控制連接:客戶端>1024端口—>服務(wù)器21端口

數(shù)據(jù)連接:客戶端>1025端口—>服務(wù)器1034端口

圖2

4.2 防火墻ALG FTP詳解

(1)FTP主動(dòng)模式

FTP 客戶端主動(dòng)模式下穿越防火墻的過程可以分為4步,詳細(xì)過程如下:

圖3

?控制通道session新建

防火墻收到從客戶端到服務(wù)器的首包會(huì)新建session。因?yàn)榇藭r(shí)系統(tǒng)中沒有pinhole,所以會(huì)跳過pinhole查找過程。然后查找Policy,在防火墻配置了Policy允許客戶端訪問FTP服務(wù),所以能匹配到Policy,新建控制session。

?控制連接報(bào)文解析

FTP主動(dòng)模式下載文件時(shí),會(huì)先發(fā)送PORT命令,其格式為:PORT h1,h2,h3,h4,p1,p2\r\n。防火墻解析到PORT命令時(shí),新建pinhole。如果當(dāng)前session有SNAT,修改PORT命令中的內(nèi)容為SNAT后的IP和端口。將報(bào)文內(nèi)容PORT 192,168,1,2,67,131\r\n修改為PORT 192,168,2,1,4,2\r\n,新建圖中pinhole。

?數(shù)據(jù)session新建

FTP主動(dòng)模式的數(shù)據(jù)連接由服務(wù)器主動(dòng)發(fā)起。防火墻收到數(shù)據(jù)連接首包時(shí),同樣進(jìn)入新建session流程。此時(shí)系統(tǒng)中有pinhole,會(huì)先查找pinhole。匹配到pinhole,新建數(shù)據(jù)session。根據(jù)FTP協(xié)議的特點(diǎn),每次數(shù)據(jù)傳輸都會(huì)重新發(fā)送PORT命令,每次數(shù)據(jù)傳輸使用的端口號(hào)也不同,所以FTP協(xié)議的pinhole在查找到之后就會(huì)刪除。

?數(shù)據(jù)連接報(bào)文處理

FTP數(shù)據(jù)連接報(bào)文ALG不需要處理。數(shù)據(jù)傳輸過程中,數(shù)據(jù)session的計(jì)時(shí)器會(huì)不斷刷新。直到數(shù)據(jù)傳輸結(jié)束,四次揮手?jǐn)嚅_連接,數(shù)據(jù)session拆除。

(2)FTP被動(dòng)模式

FTP 客戶端被動(dòng)模式下穿越防火墻的過程可以分為4步,詳細(xì)過程如下:

圖4

?控制session新建

防火墻收到從客戶端到服務(wù)器的首包,新建session。因?yàn)榇藭r(shí)系統(tǒng)中沒有pinhole,所以會(huì)跳過pinhole查找過程,繼而查找Policy。在防火墻配置了Policy允許客戶端訪問FTP服務(wù),所以能匹配到Policy,新建控制session。

?控制連接報(bào)文解析

FTP客戶端使用被動(dòng)模式下載文件時(shí),首先發(fā)送PASV命令,服務(wù)器收到PASV命令報(bào)文后,選用臨時(shí)端口作為數(shù)據(jù)連接端口,并向客戶端返回227響應(yīng)碼,報(bào)文格式為:227 Entering Passive Mode. h1,h2,h3,h4,p1,p2\r\n。防火墻解析到227響應(yīng)報(bào)文后,如果當(dāng)前session有DNAT,修改報(bào)文中的IP和端口,并新建pinhole。

?數(shù)據(jù)session新建

FTP被動(dòng)模式的數(shù)據(jù)連接由客戶端發(fā)起。防火墻收到數(shù)據(jù)連接首包時(shí),同樣進(jìn)入新建session流程。此時(shí)系統(tǒng)中有pinhole,會(huì)先查找pinhole。匹配到pinhole,新建數(shù)據(jù)session。

?數(shù)據(jù)連接報(bào)文處理

FTP數(shù)據(jù)連接報(bào)文,ALG無需處理。數(shù)據(jù)傳輸過程中,數(shù)據(jù)session的計(jì)時(shí)器會(huì)不斷刷新。直到數(shù)據(jù)傳輸結(jié)束,四次揮手?jǐn)嚅_連接,數(shù)據(jù)session拆除。

5、SIP協(xié)議及SIP ALG應(yīng)用網(wǎng)關(guān)詳解

5.1SIP協(xié)議原理

SIP是一種應(yīng)用層控制協(xié)議,用于建立、修改和終止雙方或多方多媒體會(huì)話,應(yīng)用在VoIP、多媒體分發(fā)、多媒體會(huì)議領(lǐng)域。SIP協(xié)議棧如圖所示。SIP協(xié)議通信包括控制信令(signaling)和媒體數(shù)據(jù)兩個(gè)信道:控制信令信道用于客戶端和服務(wù)器之間的請(qǐng)求和響應(yīng)消息,傳輸層基于TCP或者UDP,服務(wù)器使用端口5060;媒體數(shù)據(jù)信道用于傳輸音視頻數(shù)據(jù),傳輸層基于UDP,使用動(dòng)態(tài)端口。

表1

SIP協(xié)議在網(wǎng)絡(luò)中的實(shí)體包括兩種:SIP用戶代理(User Agent)和SIP服務(wù)器。SIP用戶代理是終端用戶設(shè)備,如 SIP 電話機(jī)、SIP客戶端軟件等,用于發(fā)送SIP請(qǐng)求或者接收到請(qǐng)求后進(jìn)行響應(yīng)。SIP服務(wù)器主要進(jìn)行請(qǐng)求轉(zhuǎn)發(fā)、接收注冊(cè)請(qǐng)求和提供定位服務(wù)。SIP VoIP典型部署如圖所示:企業(yè)內(nèi)網(wǎng)部署有SIP服務(wù)器和SIP終端Phone B,Phone B和遠(yuǎn)程SIP終端Phone A之間可以通過SIP協(xié)議進(jìn)行網(wǎng)絡(luò)電話。

圖5

SIP消息分為請(qǐng)求消息和響應(yīng)消息兩種類型。下面是一個(gè)呼叫請(qǐng)求消息的實(shí)例:

圖6

可以看到,SIP消息包括三部分:起始行、消息頭和可選的消息體。起始行包括消息類型、請(qǐng)求URI和SIP版本號(hào)。常見的消息類型包括INVITE、ACK、OPTIONS、BYE、 CANCEL、REGISTER,其作用見下表所示:

表2

請(qǐng)求URI表示請(qǐng)求的用戶或者服務(wù)的地址信息。SIP版本號(hào),即所使用的SIP協(xié)議的版本號(hào)。

SIP消息頭部包含多個(gè)字段,其含義如下表所示:

表3

一個(gè)響應(yīng)消息的實(shí)例如下所示:

圖7

響應(yīng)消息與請(qǐng)求消息的不同之處是初始行是狀態(tài)碼。狀態(tài)碼由3位整數(shù)組成,第一位用于表示響應(yīng)類型,后兩位用于對(duì)響應(yīng)進(jìn)一步解釋。各響應(yīng)碼類型的含義如下表所示:

表4

5.2防火墻ALGSIP詳解

上述對(duì)SIP協(xié)議的工作過程進(jìn)行了簡單的介紹,下面以典型部署為例介紹SIP協(xié)議如何穿越防火墻。假設(shè)SIP服務(wù)器所在網(wǎng)段為192.168.2.0/24,PhoneA所在的網(wǎng)段為192.168.100.0/24。SIP服務(wù)器的IP地址為192.168.2.4,在防火墻配置了DNAT,對(duì)外的地址是192.168.100.4。Phone B的IP地址為192.168.2.3,對(duì)外的IP地址為192.168.100.3。Phone A的IP地址為192.168.100.2。

條件:防火墻配置策略允許SIP服務(wù)流量通過

下面分別介紹SIP注冊(cè)以及外網(wǎng)SIP終端Phone A呼叫內(nèi)網(wǎng)終端Phone B的流程和防火墻SIP ALG的實(shí)現(xiàn)。

(1)SIP注冊(cè)流程

SIP協(xié)議提供地址發(fā)現(xiàn)的能力。當(dāng)一個(gè)用戶代理想要建立會(huì)話時(shí),將會(huì)話請(qǐng)求發(fā)送到代理服務(wù)器。服務(wù)器查詢注冊(cè)信息,得到另一方的地址信息,并將請(qǐng)求轉(zhuǎn)發(fā)到對(duì)應(yīng)的地址。

注冊(cè)請(qǐng)求消息用于用戶代理將當(dāng)前地址信息發(fā)送到服務(wù)器,Phone A注冊(cè)報(bào)文格式如下所示,其中Contact字段攜帶了Phone A當(dāng)前的地址。

圖8

注冊(cè)報(bào)文的處理流程如下圖所示。防火墻在收到這個(gè)注冊(cè)報(bào)文時(shí),也會(huì)生成一個(gè)綁定關(guān)系,即記錄Phone A的地址信息192.168.100.2:5060生成一個(gè)pinhole,用于其他實(shí)體向Phone A發(fā)送的會(huì)話請(qǐng)求消息能通過防火墻。根據(jù)NAT配置修改頭部的各個(gè)字段,例如在本例中,SIP server在防火墻配置有DNAT,將初始行的請(qǐng)求URI地址由192.168.100.4修改為192.168.2.4。

圖9

(2)SIP呼叫流程

Phone A呼叫Phone B的報(bào)文交互流程如下圖所示:

圖10

用戶在Phone A撥號(hào)222呼叫Phone B。此時(shí)Phone A發(fā)送INVITE請(qǐng)求消息到SIP server。防火墻收到INVITTE報(bào)文,解析其中的c和m字段,本例中c= IN IP4 192.168.100.2,m=audio 5000 RTP。新建pinhole,目的地址為192.168.100.2:5000。每一個(gè)RTP通道有一個(gè)對(duì)應(yīng)的RTCP通道,通信端口是RTP端口號(hào)加1,所以會(huì)再為RTCP通道建一個(gè)pinhole,目的地址為192.168.100.2:5001。然后根據(jù)當(dāng)前session的NAT配置修改頭部字段中的IP地址,本例中SIP server在防火墻配置有DNAT,將初始行的請(qǐng)求URI地址由192.168.100.4修改為192.168.2.4。

SIP server接收到INVITE請(qǐng)求消息,會(huì)先返回一個(gè)100 tring響應(yīng)消息,表示消息正在處理。之后根據(jù)電話號(hào)碼222查詢注冊(cè)信息數(shù)據(jù)庫,找到Phone B當(dāng)前地址,將INVITE請(qǐng)求消息轉(zhuǎn)發(fā)到Phone B。

Phone B接收到INVITE請(qǐng)求消息,開始響鈴,并返回180 ring響應(yīng)消息到SIP服務(wù)器。SIP服務(wù)器轉(zhuǎn)發(fā)180 ring響應(yīng)消息到Phone A,提示用戶正在響鈴。當(dāng)Phone B電話被接起,發(fā)送200 ok響應(yīng)消息。200 ok響應(yīng)消息同樣由SIP服務(wù)器轉(zhuǎn)發(fā)到Phone A。防火墻解析到200 oK響應(yīng)消息時(shí),同樣解析其中的消息體,本例中200IOK響應(yīng)消息的c= IN IP4 192.168.2.3,m= audio 6000 RTP/AVP,因?yàn)镻honeB對(duì)外地址是192.168.100.3,修改c字段為c= IN IP4 192.168.100.3,并為RTP信道新建pinhole:0.0.0.0:0 -> 192.168.100.3:6000。同理,將RTP端口號(hào)加1作為RTCP通道端口號(hào),并新建pinhole:0.0.0.0:0 -> 192.168.100.3:6001。將頭部字段Record-Route從192.168.2.4修改為192.168.100.4。

Phone A接收到200 OK響應(yīng)消息后,向Phone B發(fā)送ACK確認(rèn)消息。因?yàn)镾IP服務(wù)器向INVITE請(qǐng)求中插入了Record-Route字段,表示之后的請(qǐng)求消息也經(jīng)過SIP服務(wù)器,所以Phone A發(fā)送的ACK消息經(jīng)SIP服務(wù)器轉(zhuǎn)發(fā)到Phone B。ACK請(qǐng)求消息如下所示:

圖11

之后Phone A和Phone B之間媒體通信,防火墻會(huì)創(chuàng)建RTP和RTCP session。

通話結(jié)束,Phone A掛斷電話,發(fā)送BYE請(qǐng)求消息,同樣由SIP服務(wù)器轉(zhuǎn)發(fā)到Phone B。Phone B收到BYE請(qǐng)求消息,發(fā)送200 OK響應(yīng)。至此通話結(jié)束。

(3)增刪NAT及Policy的影響

NAT配置改動(dòng),會(huì)觸發(fā)SIP 信令session重新匹配NAT規(guī)則。如果不能匹配新的NAT規(guī)則,session會(huì)被拆除。對(duì)數(shù)據(jù)session無影響。

Policy配置改動(dòng),會(huì)觸發(fā)SIP 信令session重新匹配Policy。如果不能匹配新的Policy,session會(huì)被拆除。對(duì)數(shù)據(jù)session無影響。

6、ALG支持的其他應(yīng)用

除了FTP和SIP以外,一些VoIP 應(yīng)用在進(jìn)行NAT 穿越時(shí),由于IP 地址和端口號(hào)的改變可能導(dǎo)致VoIP 無法正常工作,ALG 技術(shù)在此時(shí)將保證NAT 地址轉(zhuǎn)換后,VoIP 應(yīng)用能夠正常通信。因此,應(yīng)用層網(wǎng)關(guān)提供以下功能:

?在嚴(yán)格的安全策略規(guī)則下,利用應(yīng)用層網(wǎng)關(guān) ALG 技術(shù),保證多通道應(yīng)用程序正常的通信,如FTP、TFTP、PPTP、RTSP、RSH、MSRPC、SUNRPC 和SQLNET。

?保證 VoIP 應(yīng)用,如SIP 和H.323 等,在NAT 模式下的正常工作,并能夠根據(jù)安全策略要求,進(jìn)行監(jiān)控和過濾。

7、總結(jié)

當(dāng)前我行科技發(fā)展迅猛,各種新技術(shù)、新架構(gòu)不斷出現(xiàn),防火墻的安全隔離作為數(shù)據(jù)中心內(nèi)部安全管控的必要手段,一方面要保障數(shù)據(jù)中心安全穩(wěn)定運(yùn)行,另一方面也要以快捷、穩(wěn)定的方式支持應(yīng)用系統(tǒng)發(fā)展,進(jìn)而賦能我行業(yè)務(wù)高速發(fā)展。

關(guān)鍵詞:
x 廣告
x 廣告

Copyright @  2015-2022 海外生活網(wǎng)版權(quán)所有  備案號(hào): 滬ICP備2020036824號(hào)-21   聯(lián)系郵箱:562 66 29@qq.com