热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

HCIESecurityDay9:5个实验理解NATServer

NATServer与目的NAT的区别和联系NATServer是一种静态目的NAT技术,与基于策略的静态目的NAT一样,都可以用于解决私网IP与公网IP

 


NAT Server与目的NAT的区别和联系

NAT Server是一种静态目的NAT技术,与基于策略的静态目的NAT一样,都可以用于解决私网IP与公网IP存在固定映射关系的场景,但是基于策略的目的NAT在一条策略中可以匹配多个地址段,且支持地址排除功能,配置更为灵活。NAT Server可以逐条配置地址转换关系,命令简单清晰。

两者还有如下区别

1、nat server 配置后创建静态server-map表项,destination-nat不创建

2、nat server 优先级高于destination-nat,首包到达防火墙后先进行nat server处理查server-map表,查不到server-map表的情况下,再进行destination-nat处理

3、nat server不配置no-reverse的情况下,双向都可以进行nat转换,destination-nat只能单向nat转换。


实验一:公网用户通过NAT Server访问内部服务器


需求和拓扑

某公司在网络边界处部署了FW作为安全网关。为了使私网Web服务器和FTP服务器能够对外提供服务,需要在FW上配置NAT Server功能。除了公网接口的IP地址外,公司还向ISP申请了一个IP地址(1.1.1.10)作为内网服务器对外提供服务的地址。网络环境如图1所示,其中Router是ISP提供的接入网关。


操作步骤

1、配置接口地址,划分安全区域

2、配置路由

ip route-static 2.2.2.0 255.255.255.0 1.1.1.254

3、配置安全区域

security-policyrule name 1source-zone untrustdestination-zone dmzsource-address 2.2.2.0 mask 255.255.255.0destination-address 10.2.0.0 mask 255.255.255.0service ftpservice httpservice icmpaction permit

4、配置nat server

nat server 0 protocol tcp global 1.1.1.10 ftp inside 10.2.0.7 ftp no-reverse
nat server 1 protocol tcp global 1.1.1.10 www inside 10.2.0.8 www no-reverse
nat server 2 protocol icmp global 1.1.1.10 inside 10.2.0.7 no-reverse

验证和分析

不做任何操作,直接检查fw的server-map

[f1]dis fire server-map
2022-02-11 00:57:51.620 Current Total Server-map : 3Type: Nat Server, ANY -> 1.1.1.10:80[10.2.0.8:80], Zone:---, protocol:tcpVpn: public -> publicType: Nat Server, ANY -> 1.1.1.10[10.2.0.7], Zone:---, protocol:icmpVpn: public -> publicType: Nat Server, ANY -> 1.1.1.10:21[10.2.0.7:21], Zone:---, protocol:tcpVpn: public -> public

在公网client上分别访问1.1.1.10提供的ftp和http服务后,检查fw的session table

[f1]dis fire sess table
2022-02-11 00:57:54.200 Current Total Sessions : 2ftp VPN: public --> public 2.2.2.2:2049 +-> 1.1.1.10:21[10.2.0.7:21]http VPN: public --> public 2.2.2.2:2051 --> 1.1.1.10:80[10.2.0.8:80]

在访问了ftp服务后,再检查一次server-map表项,发现多了一条aspf表项,说明ftp的数据通道也是由aspf动态建立的。

Type: ASPF, 2.2.2.2 -> 1.1.1.10:2049[10.2.0.7:2049], Zone:---Protocol: tcp(Appro: ftp-data), Left-Time:00:00:00Vpn: public -> public

如果我们使用ftp主动模式,这条aspf的server-map表项是下面这样的。

Type: ASPF, 10.2.0.7[1.1.1.10] -> 2.2.2.2:2053, Zone:---Protocol: tcp(Appro: ftp-data), Left-Time:00:00:13Vpn: public -> public

可见建立方向是不同的,相同点是始发方向都不会确定端口号,这当然没法做到像session table那样的精确和安全,但这毕竟只是临时通道,你可以理解成它是对多通道协议的妥协,但同时又何尝不是一种迂回和捷径呢?

我们如果和上一篇讲目的NAT的实验进行对比的话,很容易发现它的优点,配置简单,不需要再配置地址池和nat-policy,甚至我们还可以不去做no-reverse的限制,让私网设备主动去访问公网,但同时我们也发现它并不能做到目的nat那样的灵活应用,比如我们只有一个公网地址,就没有办法让公网用户同时ping通私网的不同设备,但是在目的nat中,我们就可以使用端口对地址的映射来解决(参考)。

谁更优秀呢?很难给你准确的答案啊,只能说具体场景具体判断吧。当然这也正是网工的魅力所在。


实验二:双出口环境下公网用户通过NAT Server访问内部服务器(双出口属于不同安全区域)


需求和拓扑

某公司在网络边界处部署了FW作为安全网关,通过两个ISP接入Internet。为了使私网FTP服务器能够对外提供服务,需要在FW上配置指定zone参数的NAT Server功能。除了公网接口的IP地址外,公司还向ISP1和ISP2分别申请了1.1.1.10和2.2.2.10作为内网服务器对外提供服务的地址。网络环境如图所示,其中Router是ISP1和ISP2提供的接入网关。


操作步骤

1、配置接口地址和安全区域

2、配置路由

ip route-static 1.1.2.0 255.255.255.0 1.1.1.254
ip route-static 1.1.3.0 255.255.255.0 2.2.2.254

3、配置安全策略

security-policyrule name 1source-zone untrust1source-zone untrust2destination-zone trustdestination-address 10.2.0.0 mask 255.255.255.0service ftpaction permit

4、配置nat server

nat server 0 protocol tcp global 1.1.1.10 ftp inside 10.2.0.10 ftp no-reverse
nat server 1 protocol tcp global 2.2.2.10 ftp inside 10.2.0.10 ftp no-reverse

验证和分析

检查server-map表项

[f1]dis fire server-map
2022-02-11 11:27:52.940 Current Total Server-map : 2Type: Nat Server, ANY -> 2.2.2.10:21[10.2.0.10:21], Zone:---, protocol:tcpVpn: public -> publicType: Nat Server, ANY -> 1.1.1.10:21[10.2.0.10:21], Zone:---, protocol:tcpVpn: public -> public

server-map表项的内容只有目的地址和端口转换前后的信息,不包括源地址和端口的信息。将表项翻译成文字就是:任意客户端向2.2.2.10:21发起访问时,报文的目的地址和端口就会被转换成10.2.0.10:21。

检查session table

[f1]dis fire sess table
2022-02-11 11:27:47.460 Current Total Sessions : 2ftp VPN: public --> public 1.1.2.1:2049 +-> 1.1.1.10:21[10.2.0.10:21]ftp VPN: public --> public 1.1.3.1:2049 +-> 2.2.2.10:21[10.2.0.10:21]

实验三:双出口环境下公网用户通过NAT Server访问内部服务器(双出口属于同一安全区域)


需求和拓扑

某公司在网络边界处部署了FW作为安全网关,通过两个ISP接入Internet。为了使私网FTP服务器能够对外提供服务,需要在FW上配置指定no-reverse参数的NAT Server功能。除了公网接口的IP地址外,公司还向ISP1和ISP2分别申请了1.1.1.10和2.2.2.10作为内网服务器对外提供服务的地址。


操作步骤

1、配置接口地址和安全区域

2、配置路由

ip route-static 1.1.2.0 255.255.255.0 1.1.1.254
ip route-static 1.1.3.0 255.255.255.0 2.2.2.254

双出口环境中,还需要考虑两个ISP中的公网用户使用哪个公网地址访问私网服务器的问题。如果防火墙上只是配置了缺省路由,那么私网的回包就可能从错误的出接口发出,不能回到始发者。所以要配置明细路由,让防火墙严格按照公网地址选路,但是如果公网地址数量很大,配置起来工作量就很大,不太现实....

防火墙提供了源进源出功能,即:请求报文从哪条路径进入,响应报文就依然沿着同样的路径返回,而不用查路由表来确定出接口,保证了报文从同一个接口进出。

所以,这一步也可以不配置路由而是用源进源出配合默认网关搞定。

具体命令是

[FW] interface GigabitEthernet 1/0/1
redirect-reverse next-hop 1.1.1.254
gateway 1.1.1.254
[FW] interface GigabitEthernet 1/0/2
redirect-reverse next-hop 2.2.2.254
gateway 2.2.2.254

3、配置安全策略

security-policyrule name 1source-zone untrustdestination-zone trustdestination-address 10.2.0.0 mask 255.255.255.0service ftpaction permit

4、配置nat server

nat server 0 protocol tcp global 1.1.1.10 ftp inside 10.2.0.10 ftp no-reverse
nat server 1 protocol tcp global 2.2.2.10 ftp inside 10.2.0.10 ftp no-reverse

注意这里一定要加no-reverse。不配的话都没有办法敲下命令。

nat server 0 protocol tcp global 1.1.1.10 ftp inside 10.2.0.10 ftp
nat server 1 protocol tcp global 2.2.2.10 ftp inside 10.2.0.10 ftp
Error:Incomplete command found at '^' position.

验证和分析

为什么要加no-reverse呢?我们可以分析以下,如果可以不加no-reverse,就可以生成反向的server-map表项,这个表项一定是目的地址和端口转换前后都是any的。具体应该是这样的。

Type: Nat Server Reverse, 10.2.0.10[1.1.1.10] -> ANY, Zone:---, protocol:tcp
Vpn: public -> public, counter: 1
Type: Nat Server Reverse, 10.2.0.10[2.2.2.10] -> ANY, Zone:---, protocol:tcp
Vpn: public -> public, counter: 1

第一条吧报文的源地址由10.2.0.10转换为1.1.1.10,另一条把报文的源地址由10.2.0.10转换为2.2.2.10,除此之外,两条表项是完全一样的。那作为防火墙,如果这样的报文来了,我该怎么处理呢?我凌乱了。

所以一定要加上no-reverse,这样就不会生成反向的server-map表,也不会出现上面的问题了。

那如果我们非得实现私网服务器主动访问公网的需求呢?比如我们想知道公网的client在线否,那我们只有在nat server的基础上再做源nat了。

做源nat的话稍微有点麻烦。首先得做trust到untrust的安全策略。

security-policy
rule name 2source-zone trustdestination-zone untrustsource-address 10.2.0.10 mask 255.255.255.255service icmpaction permit

其次得配置源nat地址池,因为我们只有两个公网地址,所以只好复用他们了。不过逻辑上还是讲得通,因为nat server时也是使用它们做私网server的公网地址嘛。

nat address-group 1 0mode patsection 0 1.1.1.10 nat address-group 2 0mode patsection 0 2.2.2.10

最后做源nat策略,注意要根据两个地址池做两个策略哦。(哎,确实麻烦了)

nat-policyrule name 1source-zone trustdestination-zone untrustsource-address 10.2.0.10 mask 255.255.255.255destination-address 1.1.2.1 mask 255.255.255.255action source-nat address-group 1rule name 2source-zone trustdestination-zone untrustsource-address 10.2.0.10 mask 255.255.255.255destination-address 1.1.3.1 mask 255.255.255.255action source-nat address-group 2


实验四:双出口环境下不同ISP的公网用户通过同一个公网IP地址访问内部服务器(源进源出)


需求和拓扑

某公司在网络边界处部署了FW作为安全网关,通过两个ISP接入Internet。公司内网的FTP服务器只向ISP1申请了一个公网IP地址(1.1.1.10)对外提供服务,ISP1和ISP2的外网用户都通过ISP1的这个公网地址访问FTP服务器。


操作步骤

1、配置接口地址和安全区域

2、配置源进源出和默认网关

interface GigabitEthernet1/0/1ip address 1.1.1.1 255.255.255.0gateway 1.1.1.254redirect-reverse next-hop 1.1.1.254interface GigabitEthernet1/0/2ip address 2.2.2.2 255.255.255.0gateway 2.2.2.254redirect-reverse next-hop 2.2.2.254

3、配置安全策略

security-policyrule name 1destination-zone trustdestination-address 10.2.0.0 mask 255.255.255.0service ftpaction permit

4、配置nat server

nat server 0 protocol tcp global 1.1.1.10 ftp inside 10.2.0.10 ftp no-reverse

5、r1/r2/r3配静态路由

//R1
ip route-static 1.1.10.0 255.255.255.0 1.1.1.1
ip route-static 3.3.3.3 255.255.255.255 13.1.1.3
//R2
ip route-static 1.1.1.10 255.255.255.255 2.2.2.2
ip route-static 3.3.3.3 255.255.255.255 23.1.1.3
//R3形成负载
ip route-static 1.1.1.10 255.255.255.255 13.1.1.1
ip route-static 1.1.1.10 255.255.255.255 23.1.1.2

验证和分析

登录后检查fw的session table和server-map

[f1]dis fire server-map
2022-02-11 14:28:29.730 Current Total Server-map : 2Type: ASPF, 3.3.3.3 -> 1.1.1.10:2050[10.2.0.10:2050], Zone:---Protocol: tcp(Appro: ftp-data), Left-Time:00:00:12Vpn: public -> publicType: Nat Server, ANY -> 1.1.1.10:21[10.2.0.10:21], Zone:---, protocol:tcpVpn: public -> public[f1]dis fire sess table
2022-02-11 14:28:31.090 Current Total Sessions : 3ftp-data VPN: public --> public 3.3.3.3:2052 --> 1.1.1.10:2050[10.2.0.10:2050
]ftp VPN: public --> public 3.3.3.3:2049 +-> 1.1.1.10:21[10.2.0.10:21]ftp VPN: public --> public 3.3.3.3:2051 +-> 1.1.1.10:21[10.2.0.10:21]
[f1]

实验五:私网用户使用公网地址访问内部服务器


需求和拓扑

某公司在网络边界处部署了FW作为安全网关。为了使私网Web服务器和FTP服务器能够对外提供服务,需要在FW上配置NAT Server功能。另外,和两台服务器同在一个安全区域,并且IP地址同在一个网段的PC D也需要访问这两台服务器。由于公司希望PC D可以使用公网地址访问内部服务器,因此还需要在FW上配置源NAT功能。

除了公网接口的IP地址外,公司还向ISP申请了两个公网IP地址,其中1.1.1.10作为内网服务器对外提供服务的地址,1.1.1.11作为PC D地址转换后的公网地址。网络环境如图1所示,其中Router是ISP提供的接入网关。


操作步骤

1、配置接口地址和安全区域

2、不需要配置路由

3、不需要配置安全策略

4、配置nat server

nat server 0 protocol tcp global 1.1.1.10 ftp inside 10.2.0.8 ftp no-reversenat server 1 protocol tcp global 1.1.1.10 8080 inside 10.2.0.7 www no-reverse

5、配置源NAT和地址池

nat address-group 1 0mode patsection 0 1.1.1.11 1.1.1.11
nat-policyrule name 1source-zone trustdestination-zone trustsource-address 10.2.0.6 mask 255.255.255.255service ftpservice httpaction source-nat address-group 1

验证和分析

[f1]dis fire sess table
2022-02-11 14:42:22.520 Current Total Sessions : 2ftp-data VPN: public --> public 10.2.0.6:2050[1.1.1.11:2050] --> 1.1.1.10:204
9[10.2.0.8:2049]ftp VPN: public --> public 10.2.0.6:2049[1.1.1.11:2048] +-> 1.1.1.10:21[10.2.
0.8:21]
http VPN: public --> public 10.2.0.6:2060[1.1.1.11:2049] --> 1.1.1.10:8080[10
.2.0.7:80][f1]dis fire server-map
2022-02-11 14:42:27.110 Current Total Server-map : 3Type: ASPF, 10.2.0.6[1.1.1.11] -> 1.1.1.10:2049[10.2.0.8:2049], Zone:---Protocol: tcp(Appro: ftp-data), Left-Time:00:00:03Vpn: public -> publicType: Nat Server, ANY -> 1.1.1.10:8080[10.2.0.7:80], Zone:---, protocol:tcpVpn: public -> publicType: Nat Server, ANY -> 1.1.1.10:21[10.2.0.8:21], Zone:---, protocol:tcpVpn: public -> public

以上实验拓扑和完整配置已打包,关注并回复nat server获得。


推荐阅读
author-avatar
mobiledu2502860957
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有