ALG技術白皮書
關鍵詞:ALG,NAT,ASPF,會話
摘 要:ALG是一種對應用層進行處理的技術,它通過與NAT、ASPF等技術的組合應用,實現對應用層的處理和檢測。本文詳細介紹了ALG技術的工作機製以及典型組網應用。
縮略語:
縮略語 | 英文全名 | 中文解釋 |
ALG | Application Level Gateway | 應用層網關 |
ASPF | Application Specific Packet Filter | 基於應用層狀態的包過濾 |
DNS | Domain Name System | 域名係統 |
FTP | File Transfer Protocol | 文件傳輸協議 |
ILS | Internet Locator Service | Internet定位服務 |
LDAP | Lightweight Directory Access Protocol | 輕量級目錄訪問協議 |
NAT | Network Address Translation | 網絡地址轉換 |
NBT | Network Basic Input/Output System Based TCP/IP | 基於TCP/IP的網絡基本輸入/輸出係統 |
RTSP | Real-Time Streaming Protocol | 實時流協議 |
SIP | Session Initiation Protocol | 會話發起協議 |
目 錄
在應用層協議中,有很多協議都包含多通道的信息,比如多媒體協議(H.323、SIP等)、FTP、SQLNET等。這種多通道的應用需要首先在控製通道中對後續數據通道的地址和端口進行協商,然後根據協商結果創建多個數據通道連接。在NAT的實際應用過程中,NAT僅對網絡層報文的報文頭進行IP地址的識別和轉換,對於應用層協議協商過程中報文載荷攜帶的地址信息則無法進行識別和轉換,因此在有NAT處理的組網方案中,NAT利用ALG技術可以對多通道協議進行應用層的報文信息的解析和地址轉換,保證應用層上通信的正確性。
在傳統的包過濾防火牆中,也會遇到類似問題。由於包過濾防火牆是基於IP包中的源地址、目的地址、源端口和目的端口來判斷是否允許包通過,這種基於靜態IP包頭的匹配雖然可以允許或者拒絕特定的應用層服務,但無法理解服務的上下文會話,而且對於多通道的應用層協議,其數據通道是動態協商的,無法預先知道數據通道的地址和端口,無法製定完善的安全策略。ASPF利用ALG技術便可以解決包過濾防火牆遇到的問題,實現對多通道應用協議的動態檢測。
綜上所述,ALG和NAT、ASPF特性的配合使用,可以解決這些特性遇到的應用層協議的多通道問題,進而可以協助網絡設備實現整體的網絡安全解決方案。
ALG和NAT、ASPF等特性配合使用,為內部網絡和外部網絡之間的通信提供基於應用的訪問控製,具有以下優點:
l ALG統一對各應用層協議報文進行解析處理,避免了NAT、ASPF特性對同一類報文應用層協議的重複解析,可以有效提高報文轉發效率。
l ALG的狀態檢測是基於應用層協議的,能夠監聽每一個應用的每個連接所使用的端口,打開合適的通道允許會話中的數據穿過防火牆,在會話結束時關閉該通道,從而實現對動態端口應用的有效訪問控製。
l 可支持多種應用層協議:DNS、FTP、H.323(包括RAS、H.225、H.245)、HTTP、ICMP、ILS、MSN/QQ、NBT、RTSP、SIP、SQLNET、TFTP。
l 會話:記錄了傳輸層報文之間的交互信息,包括源IP地址、源端口、目的IP地址、目的端口,協議類型和源/目的IP地址所屬的VPN實例。交互信息相同的報文屬於一條流,通常情況下,一個會話對應正反兩條流,一條流對應一個方向上的一個會話。
l 動態通道:當應用層協議報文中攜帶地址信息時,這些地址信息會被用於建立動態通道,後續符合該地址信息的連接將使用已經建立的動態通道來傳輸數據。
ALG技術配合NAT特性可支持對報文載荷的地址轉換功能;配合ASPF特性可支持動態通道的檢測功能,以及對應用層的狀態檢測功能。
下文將結合具體的應用協議工作過程,分別對以上三個ALG技術的實現原理進行介紹。
對於多通道應用協議,IP報文數據載荷中攜帶了地址信息,在NAT的組網環境中,為保證後續動態通道的正確建立,這些數據載荷中的地址也需要進行轉換,ALG的作用就是對載荷中的地址進行轉換。
下麵以多通道應用協議FTP、DNS、ICMP在NAT組網環境中的ALG應用來具體說明報文載荷的轉換過程。

圖1 FTP報文載荷的ALG處理示意圖
如圖1所示,私網側的主機要訪問公網的FTP服務器。NAT設備上配置了私網地址192.168.0.10到公網地址50.10.10.10的映射,實現地址的NAT轉換,以支持私網主機對公網的訪問。在該組網中,如果沒有ALG對報文載荷的處理,私網主機發送的Port報文到達服務器端後,服務器無法識別該報文載荷中的私網地址,也就無法建立正確的數據連接。下麵是應用了ALG的FTP連接建立過程。
(1) 首先,私網主機和公網FTP服務器之間通過TCP三次握手成功建立控製連接。
(2) 控製連接建立後,私網主機向FTP服務器發送Port報文,報文中攜帶私網主機指定的數據連接的目的地址和端口,用於通知服務器使用該地址和端口和自己進行數據連接。
(3) Port報文在經過支持ALG特性的NAT設備時,報文載荷中的私網地址和端口會被轉換成對應的公網地址和端口。即,設備將收到的Port報文載荷中的 私網地址192.168.0.10轉換成公網地址50.10.10.10,端口1024轉換成5000。
(4) 公網的FTP服務器收到Port報文後,解析其內容,並向私網主機發起數據連接,該數據連接的目的地址為50.10.10.10,端口為5000。由於該目的地址是一個公網地址,因此後續的數據連接就能夠成功建立,從而實現私網主機對公網服務器的訪問。

圖2 DNS報文載荷的ALG處理示意圖
如圖2所示,私網側主機要訪問內部WWW服務器(域名為www.abc.com,對外公網地址為50.10.10.10),它所詢問的DNS服務器在公網。
(1) 首先,私網主機向公網的DNS服務器發起DNS查詢。
(2) DNS服務器收到查詢報文後進行查詢處理,並將查詢到的結果(域名www.abc.com對應IP地址50.10.10.10)放在DNS響應報文(DNS Answer)中發送給私網主機對應的公網地址。
(3) DNS響應報文在到達具有ALG特性的NAT設備時,報文載荷中的公網地址會被映射成為內部WWW服務器的私網地址。即,NAT設備將收到的DNS響應報文數據載荷中的IP地址50.10.10.10替換為192.168.0.10後,將DNS響應報文發往私網。
(4) 這樣,私網主機收到的DNS響應報文中就攜帶了www.abc.com的私網IP地址,從而實現私網客戶端通過公網DNS服務器以域名方式訪問私網服務器的功能。

圖3 ICMP差錯報文載荷的ALG處理示意圖
如圖3所示,公網側的主機要訪問私網中的FTP服務器,該內部服務器對外的公網地址為50.10.10.10。若內部FTP服務器的21端口未打開,那麼它會向主機發送一個ICMP差錯報文。
由於該差錯報文的數據載荷中的IP地址信息是被NAT處理過的,因此其數據載荷中的地址信息為私網IP地址。在這種情況下,如果未經過ALG處理的ICMP差錯報文從私網發送到公網,那麼公網主機就無法識別該差錯報文屬於哪個應用程序,同時也會將FTP服務器的私網地址泄漏到公網中。
因此,當該ICMP差錯報文到達NAT設備時,ALG會根據原始FTP會話的地址轉換信息記錄,將其數據載荷中的私網地址192.168.0.10還原成公網地址50.10.10.10,再將該ICMP差錯報文發送到公網。這樣,公網主機就可以正確識別出錯的應用程序,同時也避免了私網地址的泄漏。
多通道協議的報文交互過程中需要協商動態通道的地址和端口,在ASPF的組網環境中,ALG通過記錄報文交互過程中的動態通道地址和端口,與ASPF特性相配合決定允許哪些報文通過。
下麵通過兩種常見的組網情況來具體介紹一下動態通道檢測的原理。

圖4 ALG支持動態通道的報文穿越防火牆
如圖4所示,私網主機訪問公網的FTP服務器。通常情況下,防火牆上的ASPF會禁止公網主動發起的報文進入私網內部,以實現保護內部網絡的目的。當FTP連接進行動態通道協商時,私網主機向FTP服務器發送Port報文。Port報文經過防火牆時,ALG記錄其中的IP地址和端口號(IP,Port),並把它們作為該連接產生的動態通道信息。之後,ASPF僅允許公網主動發起並符合動態通道信息的報文通過防火牆設備進入私網。如果沒有ALG的支持,服務器發起的數據連接將被阻擋在防火牆之外,主機和服務器之間就無法成功建立FTP動態通道。
從上述過程可以看出,在ASPF和ALG的配和工作下,防火牆既支持了私網訪問公網服務器的正常功能,又拒絕了其他不屬於該連接的網絡流量訪問私網。
有一些應用協議(比如QQ/MSN)的ALG處理和上麵的FTP應用稍有不同。QQ/MSN用戶在上線後,通常會建立一對多的連接,而且還會出現由公網主動發起連接的情況。對於以上這樣的情況,ALG同樣可以支持。

圖5 對於某些特殊應用,ALG允許公網端首先發起連接
如圖5所示,Host A上的QQ的客戶端,向公網服務器發送上線請求,ALG對上線請求報文進行解析,並根據客戶端地址等信息建立動態通道。Host A成功上線之後,公網中Host B向Host A發送的QQ應用報文便可以根據已經建立的動態通道穿過防火牆,而來自Host B的其他報文,或者其他未知的網絡流量都會被防火牆丟棄。通過這樣的方式,ALG在支持各種類型應用程序正常功能的同時也保護了內部私網。
在ASPF的組網環境中,ALG技術可以對應用層狀態進行跟蹤檢測。各種應用程序通常都有相對穩定的報文交互過程,如果不符合該交互過程,則很有可能是異常的報文攻擊。ALG通過解析、記錄應用層報文的狀態信息,記錄會話的上下文信息,對即將到來的報文做預測,對於不符合要求的報文進行丟棄,實現應用層狀態的跟蹤檢測。

圖6 防火牆進行FTP應用層狀態檢測原理
如圖6所示,公網主機和私網的FTP服務器建立TCP連接後,FTP服務器開始等待主機發送USER命令進行用戶認證,之後主機發出的USER命令便可以正常穿過防火牆到達私網。FTP服務器收到USER命令後,要求用戶在主機上輸入密碼。這時,主機應該發送PASS命令,如果主機沒有發送PASS命令,而是發送PORT或者PASV等等其它類型的命令或報文,則會被防火牆的ALG丟棄。

圖7 防火牆進行SIP應用層狀態檢測原理
如圖7所示,私網內部的終端1和公網的終端2進行通信,在終端1發送Invite請求後,對該請求的正常響應能夠通過防火牆,比如圖中的180響應報文,但是其它類型的報文,比如Register或者Options報文,由於不屬於該會話的正常響應,則會被防火牆的ALG丟棄。
l ALG技術是安全防禦特性的一部分,應該和NAT或者ASPF配合使用來組成整體的防火牆安全方案。
l 由於ALG對於各應用的支持需要分別進行專門的協議解析,因此每一種新的應用協議都需要單獨進行支持。

圖8 ALG支持FTP的典型組網應用
如圖8所示,私網側某公司通過啟用了NAT、ASPF和ALG功能的防火牆設備連接到Internet,公司內部對外提供FTP服務。通過NAT和ALG的配合,可以滿足私網用戶訪問公網資源的需求,並可以支持公網主機訪問私網內部服務器的功能。通過 ASPF和ALG的配合,拒絕外部未知網絡流量,達到保護內部網絡的目的。
Copyright ©2008 杭州華三通信技術有限公司 版權所有,保留一切權利。
非經本公司書麵許可,任何單位和個人不得擅自摘抄、複製本文檔內容的部分或全部,並不得以任何形式傳播。
本文檔中的信息可能變動,恕不另行通知。
