华为防火墙NAT ALG功能

一、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设备时会存在什么问题?

华为防火墙NAT ALG功能

实验说明:

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

华为防火墙NAT ALG功能

华为防火墙NAT ALG功能

当FTP Client与FTP Server建立控制连接后,客户端向服务器发送PORT命令报文,请求使用主动模式建立数据连接,报文中包含有客户端的私网地址及端口。防火墙将该报文转发给服务器,服务器收到报文后,根据报文信息向10.1.1.1:2058发起数据连接请求。由于这个IP地址是私网地址无法在公网上传输,导致FTP数据连接建立异常。

接下来就到主角登场了,为解决上述问题,防火墙提供NAT ALG功能,这是一种穿越NAT设备的技术,当防火墙在做地址转换,除了转换报文头中的IP地址信息,还转换报文载荷中携带的IP地址信息。全局配置命令firewall detect ftp,也可以在区域间配置,作用范围不同。

华为防火墙NAT ALG功能

华为防火墙NAT ALG功能

华为防火墙NAT ALG功能

开启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表项。

华为防火墙NAT ALG功能

五、总结

1、NAT ALG与ASPF的区别

ASPF功能的目的是识别多通道协议,并为其跳过安全策略检查。

NAT ALG功能的目的是识别多通道协议,并为其转换报文载荷中的IP地址和端口信息。

2、场景

ASPF和ALG功能共用一个配置,可以根据不同的场景区分两种功能。在NAT场景下就叫ALG,非NAT场景就叫ASPF

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
谢树雄的头像 - 鹿快
评论 共2条

请登录后发表评论