热门标签 | 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获得。


推荐阅读
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • Whatsthedifferencebetweento_aandto_ary?to_a和to_ary有什么区别? ... [详细]
  • 本文介绍了一个适用于PHP应用快速接入TRX和TRC20数字资产的开发包,该开发包支持使用自有Tron区块链节点的应用场景,也支持基于Tron官方公共API服务的轻量级部署场景。提供的功能包括生成地址、验证地址、查询余额、交易转账、查询最新区块和查询交易信息等。详细信息可参考tron-php的Github地址:https://github.com/Fenguoz/tron-php。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • 预备知识可参考我整理的博客Windows编程之线程:https:www.cnblogs.comZhuSenlinp16662075.htmlWindows编程之线程同步:https ... [详细]
  • 如何查询zone下的表的信息
    本文介绍了如何通过TcaplusDB知识库查询zone下的表的信息。包括请求地址、GET请求参数说明、返回参数说明等内容。通过curl方法发起请求,并提供了请求示例。 ... [详细]
  • 本文介绍了OpenStack的逻辑概念以及其构成简介,包括了软件开源项目、基础设施资源管理平台、三大核心组件等内容。同时还介绍了Horizon(UI模块)等相关信息。 ... [详细]
  • 基于Socket的多个客户端之间的聊天功能实现方法
    本文介绍了基于Socket的多个客户端之间实现聊天功能的方法,包括服务器端的实现和客户端的实现。服务器端通过每个用户的输出流向特定用户发送消息,而客户端通过输入流接收消息。同时,还介绍了相关的实体类和Socket的基本概念。 ... [详细]
  • GreenDAO快速入门
    前言之前在自己做项目的时候,用到了GreenDAO数据库,其实对于数据库辅助工具库从OrmLite,到litePal再到GreenDAO,总是在不停的切换,但是没有真正去了解他们的 ... [详细]
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社区 版权所有