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 杭州华三通信技术有限公司 版权所有,保留一切权利。
非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传播。
本文档中的信息可能变动,恕不另行通知。