NAT ALG与ASPF

一,NAT ALG

        NAT ALG(Application Level Gateway)应用级网关,支持对应用层信息进行相应转换。通常情况下,NAT只对报文的IP头部的地址信息喝TCP/UDP头部的端口信息进行转换而不会关注其报文的载荷信息。但是对于一些特殊的协议(如FTP等多通道协议),其报文载荷中也携带了地址或端口的信息,而载荷的信息通常是双方协商产生的。如果经过NAT后不修改会影响到后续的使用。

        FW提供了NAT ALG功能,对报文的载荷字段进行解析,识别并转换其中的重要信息,保证FTP的正常使用。

        下图以FTP主动模式为例,在FW上配置了NAT,将客户端的源地址和端口号转换。

        1.客户端和FTP服务器TCP握手并协商完成用户名和密码信息。

        2.FW收到客户端发送的PORT命令,如果直接转发那么载荷中的地址和端口号将会是错误的内网地址。NAT ALG对PORT命令的载荷进行改变,修改为正确的NAT后的载荷。

        3.FW收到服务器的请求后,再次改变目的地址和端口号发送到客户端。

二,ASPF

        ASPF(Application Specific Packet Filter)是一种高级通信过滤,它检查应用层协议信息并监控连接的应用层协议状态。对特定应用协议的所有连接,每一个连接状态信息都会被ASPF维护并用于动态的决定数据包是否被允许通过防火墙或者被丢弃。

        在打开ASPF功能后,设备会根据检测到的应用报文根据报文中的地址信息动态创建server-map表项。转发QQ、TFTP等STUN(Simple Traversal of UDP over NATs,NAT的UDP简单穿越)类型协议。通过配置STUN类型的ASPF,设备会记录用户的IP和端口号信息,并生成STUN类型的server-map。这个server-map表项中包含三元组信息,通信方的IP,端口号和协议号。

        NAT ALG与ASPF的关系:

        差异:①开启ASPF的功能目的是识别多通道协议,并自动为其开放相应的安全策略。②开启NAT ALG功能是为了识别顶多通道协议,并自动转换报文载荷的IP地址和端口信息。
        

三,FTP

        FTP有两个端口,端口21用于控制,端口20,用于上传,下载数据。同时它有两个模式分别是主动模式和被动模式。

①主动模式:

 第一步FTP服务器将Port内容封装在载荷中,如图所示载荷中的内容表示,对端的IP地址为10.1.1.1,端口号为最后两个数字中的第一个数字乘以256加上最后一个数字。

第二步,服务器返回确认。

第三步,FTP根据第一步中计算的目的IP和端口号进行TCP握手。

第四步,客户端发送ACK建立连接。

②被动模式

 第一步,客户端与服务器建立TCP连接并发送PASV,声明被动模式。

第二步,服务器发送Port命令。其载荷包含了计算进行FTP数据传输的IP地址和端口号。

第三步,客户端从自己的数据端口和计算出的IP地址和端口号建立数据连接。

第四步,服务器进行ACK确认。

四,FTP经过NAT实验

4.1拓扑

            根据上图配置FTP客户端和服务器和配置FW的基础配置。先测试FW不配置NAT以及关闭NAT ALG和ASPF,再配置NAT观察现象并配置NAG ALG和ASPF后再观察现象。

4.2无NAT无NAT ALG和ASPF

1.开启NAT ALG和ASPF的命令是同一条" firewall detect  协议 ",该功能默认开启,关闭配置如下

[FW]undo firewall detect ftp

2.配置安全策略放行客户端访问服务器

[FW-policy-security] rule name Trust_Internet
[FW-policy-security-rule-Trust_Internet]  source-zone trust
[FW-policy-security-rule-Trust_Internet]  destination-zone untrust
[FW-policy-security-rule-Trust_Internet]  source-address 10.1.1.0 mask 255.255.255.0
[FW-policy-security-rule-Trust_Internet]  action permit

3.在G1/0/1接口下抓取数据报文,并使用客户端使用被动模式访问服务器

①客户端访问服务器之前的会话表

[FW]display  firewall session table  
2023-02-18 01:23:42.040 
 Current Total Sessions : 0

②客户端使用被动模式访问服务器

 ③成功访问服务器,并抓取到客户端发送给服务器的PASV命令的报文和服务器返回的PORT命令,其载荷包括通知客户端建立数据链路的目的IP地址和端口号的材料(IP地址为:10.1.5.188,端口号为:192*256+13=49165)。

 ftp  VPN: public --> public  ID: c387faf3bc67128eaa63f02a43
 Zone: trust --> untrust  TTL: 00:20:00  Left: 00:19:59
 Recv Interface: GigabitEthernet1/0/0
 Interface: GigabitEthernet1/0/1  NextHop: 10.1.5.188  MAC: 000c-29e0-9f9a
 <--packets: 20 bytes: 1,480 --> packets: 19 bytes: 888
 10.1.1.1:51320 --> 10.1.5.188:21 PolicyName: Trust_Internet
 TCP State: established

③查看建立数据连接的报文和会话,验证现象。控制链路识别为FTP,但关闭ASPF后无法识别FTP的数据链路。

 tcp  VPN: public --> public  ID: c487faf3bc672d8370163f02a4b
 Zone: trust --> untrust  TTL: 00:00:10  Left: 00:00:09
 Recv Interface: GigabitEthernet1/0/0
 Interface: GigabitEthernet1/0/1  NextHop: 10.1.5.188  MAC: 000c-29e0-9f9a
 <--packets: 4 bytes: 240 --> packets: 5 bytes: 212
 10.1.1.1:51324 --> 10.1.5.188:49165 PolicyName: Trust_Internet

 4.将被动模式建立的连接关闭,并建立主动模式的FTP观察现象同时清除会话表。

①客户端配置主动模式连接服务器

②发现FTP无法建立连接

 ③通过抓包和查看会话表发现,FTP的控制连接是建立的即客户端和服务器的21端口的连接是建立的。也发现客户端已经发送了Port命令其中包含计算主动模式下服务器主动连接客户端建立数据链路的材料。

 ④根据FTP的原理就可以理解为防火墙阻断了这条链路,因为这条链路并没有配置安全策略。配置安全策略并重新观察现象。

 rule name FTPServer_Trust
  source-zone untrust
  destination-zone trust
  source-address 10.1.5.188 mask 255.255.255.255
  destination-address 10.1.1.0 mask 255.255.255.0
  action permit

⑤查看抓包和会话表,FTP的主动模式成功建立并匹配安全策略

 tcp  VPN: public --> public  ID: c487faf3bc6505010fd63f02d9f
 Zone: untrust --> trust  TTL: 00:00:10  Left: 00:00:04
 Recv Interface: GigabitEthernet1/0/1
 Interface: GigabitEthernet1/0/0  NextHop: 10.1.1.1  MAC: 000c-2958-190a
 <--packets: 4 bytes: 172 --> packets: 5 bytes: 280
 10.1.5.188:20 --> 10.1.1.1:52879 PolicyName: FTPServer_Trust
 ftp  VPN: public --> public  ID: c487faf3bc65128153063f02d96
 Zone: trust --> untrust  TTL: 00:20:00  Left: 00:19:54
 Recv Interface: GigabitEthernet1/0/0
 Interface: GigabitEthernet1/0/1  NextHop: 10.1.5.188  MAC: 000c-29e0-9f9a
 <--packets: 20 bytes: 1,470 --> packets: 19 bytes: 922
 10.1.1.1:52857 --> 10.1.5.188:21 PolicyName: Trust_Internet

4.3有NAT无NAT ALG和ASPF

        根据4.2的配置不删除,关闭FTP连接并清空会话表,继续在FW设备上配置NAT,使得trust区域10.1.1.0/24的主机通过源NAT转换为公网地址访问FTP服务器。详细过程如下。

1.源NAT配置

[FW]nat address-group  SNAT_Group_1
[FW-address-group-SNAT_Group_1]section  2.2.2.2 2.2.2.2
[FW-address-group-SNAT_Group_1]mode pat
[FW]nat-policy
[FW-policy-nat]rule name Trust_PC
[FW-policy-nat-rule-Trust_PC]source-zone trust
[FW-policy-nat-rule-Trust_PC]destination-zone untrust
[FW-policy-nat-rule-Trust_PC]source-address 10.1.1.0 24
[FW-policy-nat-rule-Trust_PC]action  source-nat address-group SNAT_Group_1

2.除了4.2中对G1/0/1接口(服务器侧)进行抓包,同时对G1/0/0接口(客户端侧)进行抓包使用客户端使用主动模式连接服务器。

①查看会话表,FTP控制链路成功建立同时观察到源NAT的记录。

 Current Total Sessions : 1
 ftp  VPN: public --> public  ID: c487faf3bc5d05019fc63f0300b
 Zone: trust --> untrust  TTL: 00:20:00  Left: 00:19:53
 Recv Interface: GigabitEthernet1/0/0
 Interface: GigabitEthernet1/0/1  NextHop: 10.1.5.188  MAC: 000c-29e0-9f9a
 <--packets: 16 bytes: 1,279 --> packets: 18 bytes: 900
 10.1.1.1:53543[2.2.2.2:2048] --> 10.1.5.188:21 PolicyName: Trust_Internet

②我们的安全策略已经放开,但是FTP数据链路依然建立失败,观察报文。发现NAT只是进行了源地址和端口号的转换并没有对FTP的载荷进行转换导致了FTP建立失败。

 ③同理,思考被动模式下会不会还是失败,根据FTP的原理。被动模式下是服务器发送PORT命令给客户端,载荷是正常的所以NAT不会影响到被动模式。验证如下。载荷是正确的。

[FW]display  firewall session  table   verbose 
2023-02-18 02:03:33.710 
 Current Total Sessions : 2
 ftp  VPN: public --> public  ID: c387faf3bc5d138ddf63f031ef
 Zone: trust --> untrust  TTL: 00:20:00  Left: 00:19:55
 Recv Interface: GigabitEthernet1/0/0
 Interface: GigabitEthernet1/0/1  NextHop: 10.1.5.188  MAC: 000c-29e0-9f9a
 <--packets: 17 bytes: 1,243 --> packets: 14 bytes: 666
 10.1.1.1:53980[2.2.2.2:2049] --> 10.1.5.188:21 PolicyName: Trust_Internet
 TCP State: established

 tcp  VPN: public --> public  ID: c487faf3bc5d2201fe463f031f0
 Zone: trust --> untrust  TTL: 00:00:10  Left: 00:00:05
 Recv Interface: GigabitEthernet1/0/0
 Interface: GigabitEthernet1/0/1  NextHop: 10.1.5.188  MAC: 000c-29e0-9f9a
 <--packets: 4 bytes: 417 --> packets: 4 bytes: 172
 10.1.1.1:53981[2.2.2.2:2048] --> 10.1.5.188:49171 PolicyName: Trust_Internet
 TCP State: close

 4.4有NAT有NAT ALG和ASPF

1.根据4.3的配置,增加一条命令开启NAT ALG和ASPF,删除安全策略FTPServer_Trust。

[FW]firewall detect  ftp
[FW-policy-security]undo rule name FTPServer_Trust

2.使用客户端被动模式连接FTP服务器。

①查看会话表,FTP数据链路被ASPF识别为ftp-data

 ftp  VPN: public --> public  ID: c487faf3bc5d4d8245963f03392
 Zone: trust --> untrust  TTL: 00:20:00  Left: 00:20:00
 Recv Interface: GigabitEthernet1/0/0     
 Interface: GigabitEthernet1/0/1  NextHop: 10.1.5.188  MAC: 000c-29e0-9f9a
 <--packets: 25 bytes: 1,833 --> packets: 25 bytes: 1,156
 10.1.1.1:54362[2.2.2.2:2050] +-> 10.1.5.188:21 PolicyName: Trust_Internet
 TCP State: established

 ftp-data  VPN: public --> public  ID: c487faf3bc5d7902dc263f033ce
 Zone: trust --> untrust  TTL: 00:00:10  Left: 00:00:09
 Recv Interface: GigabitEthernet1/0/0
 Interface: GigabitEthernet1/0/1  NextHop: 10.1.5.188  MAC: 000c-29e0-9f9a
 <--packets: 4 bytes: 240 --> packets: 5 bytes: 212
 10.1.1.1:54409[2.2.2.2:54409] --> 10.1.5.188:49176 PolicyName: Trust_Internet

②ASPF还产生了一条server-map对应ftp-data的流量。该条server-map产生不需要配置安全策略。

[FW] display  firewall server-map  
2023-02-18 02:12:21.670 
 Current Total Server-map : 1
 Type: ASPF,  10.1.1.1[2.2.2.2] -> 10.1.5.188:49177,  Zone:---
 Protocol: tcp(Appro: ftp-data),  Left-Time:00:00:14
 Vpn: public -> public

3.再使用客户端使用主动模式连接服务器,观察是否在NAT ALG的作用下修改FTP的载荷。

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值