一、ALG概述
ALG(Application Level Gateway,应用层网关)功能用于NAT场景下自动检测某些报文的应用层信息,根据应用层信息放开相应的访问规则(生成Server-map表),并自动转换报文载荷中的IP地址和端口信息。
二、背景
一般情况下NAT只能转换报文IP头中的地址信息和TCP/UDP头的端口信息进行转换,无法对应用层的数据进行转换。在许多特殊应用层协议中(如FTP协议),报文载荷中也带有地址或端口信息,而报文载荷中的地址或端口信息往往是由通信双方动态协商生成的,如果这些数据不进行转换,可能导致后续通信异常。
三、解决方法
启用ALG功能后,除了转换报文头中的IP地址和端口信息,还能转换报文载荷里携带的IP地址和端口信息。可以对报文的载荷字段进行解析,识别并转换报文载荷中的地址或端口(双方动态协商生产的),保证多通道协议可以顺利的进行地址转换而不影响其正常使用。
四、实验
下面以FTP协议为例,防火墙作为出口NAT设备,FTP Client位于私网,ISP作为运营商网络,FTP Server位于公网,当FTP协议经过NAT设备时会存在什么问题?
实验说明:
1、防火墙接口IP及安全区域,ISP接口、客户端、服务器IP按图中标注进行配置。
2、FW1上做源NAT转换,为了方便直接用easy-ip的方式将私网地址转换成公网接口地址100.1.1.1。
rule name easy-ip
source-zone trust
destination-zone untrust
source-address 10.1.1.0 24
action source-nat easy-ip
3、安全策略配置如下:
rule name trust_to_untrust
source-zone trust
destination-zone untrust
source-address 10.1.1.0 24
service ftp
action permit
4、ensp中的防火墙缺省已经为FTP协议开启ALG功能,为了测出效果,全局模式下关闭FTP的ALG功能,undo firewall detect ftp。
5、配置一条缺省路由下一跳指向ISP,ip route-static 0.0.0.0 0 100.1.1.2
在NAT的G1/0/1接口抓包,FTP Client以主动模式访问FTP Server
当FTP Client与FTP Server建立控制连接后,客户端向服务器发送PORT命令报文,请求使用主动模式建立数据连接,报文中包含有客户端的私网地址及端口。防火墙将该报文转发给服务器,服务器收到报文后,根据报文信息向10.1.1.1:2058发起数据连接请求。由于这个IP地址是私网地址无法在公网上传输,导致FTP数据连接建立异常。
接下来就到主角登场了,为解决上述问题,防火墙提供NAT ALG功能,这是一种穿越NAT设备的技术,当防火墙在做地址转换,除了转换报文头中的IP地址信息,还转换报文载荷中携带的IP地址信息。全局配置命令firewall detect ftp,也可以在区域间配置,作用范围不同。
开启NAT ALG功能后,防火墙将FTP Client发送的PORT报文中携带的私网IP地址信息转换成了公网IP地址100.1.1.1,FTP Server收到该报文后,就可以向100.1.1.1发起数据连接建立请求了。
我们在启用ALG功能时配置的命令,有没有发现跟之前启用ASPF功能命令一致。那篇也是以FTP为例讨论的,做完这些应该还要启用ASPF功能为FTP的数据连接开启一条隐形通道即Server-map表,后续传输的数据流匹配上Server-map表就能创建会话进行转发的。所以在防火墙上NAT ALG和ASPF功能是由同一条命令开启的,开启其中任意一个功能,另一个也跟着生效。所以ALG也会生成Server-map表项。
五、总结
1、NAT ALG与ASPF的区别
ASPF功能的目的是识别多通道协议,并为其跳过安全策略检查。
NAT ALG功能的目的是识别多通道协议,并为其转换报文载荷中的IP地址和端口信息。
2、场景
ASPF和ALG功能共用一个配置,可以根据不同的场景区分两种功能。在NAT场景下就叫ALG,非NAT场景就叫ASPF
- 最新
- 最热
只看作者