安全研究

News information

双向NAT在工业场景的应用

<<返回

2022年07月01日 09:00

在工业网络场景中,可能会用到NAT的地方,包括现场级/工厂级/企业级之间存在地址重叠、厂区之间有系统互联需求但使用了同网段、需要隐藏工业现场的IP地址、从工业现场总线过渡到工业以太网、前期信息网规划不尽合理、淘工厂兴起将线下工厂搬到线上等。本篇先为大家介绍双向NAT在工业场景的应用。

场景一:工业现场会遇到客户将网络设备外包给第三方维护。操作员站与PLC无法通信,但均能与工业防火墙通信,在不修改网络设备的情况下如何实现操作员站与PLC通信呢?


场景二:工业现场部署安全防护类产品时,常会遇到工业PLC无法配置网关、工业摄像机无法修改网关等问题,没有网关或网关错误的情况下如何实现跨网段通信呢?


场景三:客户现场由于当初规划不合理,没有将服务器单独划分网段或DMZ区域,内网用户访问内网服务器想隐藏内网地址,同时还想进行安全检测及保护,应该如何解决?



01.

双向NAT介绍



1、什么是双向NAT

双向NAT是针对同一条流同时转换报文的源IP地址和目的IP地址。


2、双向NAT应用场景

① 域间双向NAT:工业现场一些设备不允改动,例如网络设备不能修改路由、工业摄像机无法修改网关、工业PLC无法配置网关。


② 域内双向NAT:想让内网用户通过外网地址访问DMZ区的服务器,且想经过出口墙检查来增加安全性。



02.

解决方案介绍



1、场景一解决方案介绍


① 需求:由于三层交换机到操作员站1的路由没有配置或配置错误,导致操作员站1与西门子PLC无法通信。在不修改三层交换机的情况下,实现操作员站1与西门子PLC通信。


1.jpg


② 方案:配置域间双向NAT,来解决中间网络设备没有路由的场景。


③ 原理:通过域间双向NAT,使操作员站1通过工业防火墙地址(192.168.40.1),来间接访问到西门子PLC。PLC回应时通过防火墙地址(192.168.182.100),来将数据报文送达操作员站1。




2、场景二解决方案介绍


① 需求:由于PLC没有配置网关或网关错误,导致操作员站1与西门子PLC无法通信。客户反馈PLC没有条件修改网关,希望在此条件下能够解决问题。


3.jpg


② 方案:配置域间双向NAT,来解决PLC没有网关或网关错误的场景。


③ 原理:通过域间双向NAT,使操作员站1通过工业防火墙地址(192.168.40.1),来间接访问到西门子PLC。PLC回应时通过访问工业防火墙地址(192.168.120.1),此时是同网段不需要网关,发送ARP来获取工业防火墙(192.168.120.1)接口的MAC来完成通信,最终将数据报文送达操作员站1。


4.jpg


3、场景三解决方案介绍


① 需求:由于管理员在规划网络时“偷懒”,将内网用户和内网服务器规划到同一个网段中。现在希望内网用户通过外网地址访问内网服务器。作用是隐藏内网服务器地址,并使流量经过防火墙,由此来提高网络的安全性。


5.jpg


② 方案:配置域内双向NAT,将内网用户访问内网服务器的报文的源地址进行转换,转换后源地址可以是外网地址池IP地址(也可以是内网地址,只要不和内网服务器地址在同网段),这样内网服务器的回应报文就会被发送到防火墙。


③ 原理:配置域内双向NAT,当内网用户通过访问防火墙外网地址(1.1.1.1),来间接访问到内网服务器(10.1.1.2)时,防火墙将源地址转换为地址池中地址(1.1.1.100)。此时服务器回应报文目的地址为地址池中地址(1.1.1.100),使流量仍然经过防火墙处理,再转换后发给内网用户。


6.jpg



03.

典型案例-场景一


1、任务说明


三层交换机没有到操作员站1的路由,导致操作员站1与西门子PLC无法通信,但均能与工业防火墙通信。在不修改三层交换机的情况下,完成操作员站1与西门子PLC通信。


7.jpg


2、配置说明


① 定义感兴趣流

CLI(方法一):acl acl01 src-ip net 192.168.40.0 255.255.255.0 dst-ip net 192.168.40.1 255.255.255.255 protocol-object s7/mms permit


WEB(方法二):


8.jpg


② 配置域间双向NAT

CLI(方法一):

nat acl acl01 dnat ip 192.168.120.101 no-port-transfer

nat acl acl01 snat ip 192.168.182.100 no-port-transfer


WEB(方法二):

9.jpg



10.jpg

3、验证说明


① 在操作员站1用WinCC向西门子PLC下发温度和湿度指令:


11.jpg


② 在工业防火墙上可以看到s7工业协议


12.jpg


③ 在工业防火墙上可以看到查看会话信息:


13.jpg


④ 分别在入口(192.168.40.1)和出口(192.168.182.100)抓包

14.jpg




⑤ 通过会话和抓包,可以看到工业防火墙的域间双向NAT转换过程


16.jpg


1)IP报文从操作员站到西门子PLC的转换过程:


操作员站下发的指令报文经过工业防火墙,目的地址(192.168.40.1)

DNAT转换为PLC地址192.168.120.101):(Ge0/0/4)192.168.40.1:102[192.168.120.101:102]

通过会话信息可以看到西门子S7协议使用TCP协议102端口。


源地址(192.168.40.3)经过SNAT转换为工业防火墙地址(192.168.182.100):

(Ge0/0/5.30)192.168.40.3:63948[192.168.182.100:63948]。

这样报文的源地址和目的地址就同时进行了转换,即完成了域间双向NAT。


2)IP报文从西门子PLC到操作员站的转换过程:


当PLC的回应报文经过工业防火墙时,目的地址(192.168.182.100)根据session表

((Ge0/0/5.30)192.168.40.3:63948[192.168.182.100:63948])转换为操作员站地址(192.168.40.3)


源地址(192.168.120.101)经session表((Ge0/0/4)192.168.40.1:102[192.168.120.101:102])转换为工业防火墙地址(192.168.40.1)

这样报文再次进行域间双向NAT转换,报文的源地址和目的地址均进行了转换。


4、NAT补充说明


细心的同学可能会问,会不会影响访问工业防火墙的管理流量?可能会,有2个方案供参考。


①工业防火墙启用第三个口(建议是Ge0/0/0),插上第三根网线,也就是带外管理。


②SNAT和DNAT都可以增加地址池,方便内网和外网通过带内的方式来管理工业防火墙。



04.

典型案例-场景二



1、任务说明


PLC没有配置网关或网关错误,导致操作员站1与西门子PLC无法通信。在不修改PLC的情况下,实现操作员站1与西门子PLC通信。


17.jpg


2、配置说明


① 定义感兴趣流

acl acl01 src-ip net 192.168.40.0 255.255.255.0 dst-ip net 192.168.40.1 255.255.255.255 protocol-object s7/mms permit


② 配置域间双向NAT

nat acl acl01 dnat ip 192.168.120.101 no-port-transfer

nat acl acl01 snat ip 192.168.120.1 no-port-transfer


3、验证说明


① 在操作员站1用WinCC向西门子PLC下发温度和湿度指令:


18.jpg


② 在工业防火墙上可以看到s7工业协议


19.jpg


③ 在工业防火墙上可以看到查看会话信息:


20.jpg


④ 通过查看会话,可以看到工业防火墙的域间双向NAT转换过程


21.jpg


1)IP报文从操作员站到西门子PLC的转换过程:


操作员站访问西门子PLC的报文到达工业防火墙时,目的地址(192.168.40.1)经过DNAT换为西门子PLC192.168.120.101):

(Ge0/0/4)192.168.40.1:102[192.168.120.101:102]

源地址(192.168.40.3)经过SNAT转换为工业防火墙地址(192.168.120.1)

与西门子PLC属于同一网段:

(Ge0/0/5.30)192.168.40.3:64066[192.168.120.1:64066] 

这样报文的源地址和目的地址就同时进行了转换,即完成了域间双向NAT。


2)IP报文从西门子PLC到操作员站的转换过程:


西门子PLC的回应报文经过工业防火墙时,目的地址(192.168.120.1)根据session表

((Ge0/0/5.30)192.168.40.3:64066[192.168.120.1:64066])转换为操作员站地址(192.168.40.3)


西门子PLC的源地址(192.168.120.101),根据session表

((Ge0/0/4)192.168.40.1:102[192.168.120.101:102])转换为工业防火墙地址(192.168.40.1

这样报文再次进行域间双向NAT转换,报文的源地址和目的地址均进行了转换。


4、西门子PLC没有网关是如何通信的?如果操作员站没有网关,域间双向NAT可以解决吗?


① 没有网关还能跨网段通信的大体过程:当西门子PLC回应操作员站的请求时,发现自己的地址(192.168.120.101)和目的地址(192.168.120.1)在同一网段,此时西门子PLC就不会去查找路由,而是发送ARP广播报文询问目的地址对应的MAC地址。


工业防火墙会收到ARP广播,一看目的IP正是自己的(192.168.120.1),于是将(192.168.120.1)对应接口MAC地址发给西门子PLC,告诉PLC:“把回应报文发送给我即可”,所以西门子PLC将回应报文发送至工业防火墙,工业防火墙再对其进行后续处理。


既然西门子PLC上省去了查找路由的环节,那就不用设置网关了,这就是配置域间双向NAT的好处。


② 操作员站没有网关,通过域间双向NAT是可以解决的。此场景中操作员站1可以删除网关,因为操作员站与工业防火墙在同网段。


05.

典型案例-场景三


1、任务说明


内网用户和内网服务器在同一个网段,使内网用户通过外网地址访问内网服务器。隐藏内网服务器地址,同时使流量经过防火墙来提高安全性。


22.jpg


2、配置说明


① 配置感兴趣流、配置域内双向NAT(DNAT配置)


CLI(方法一):

acl acl01 dst-ip net 1.1.1.1 255.255.255.255 permit

nat acl acl01 dnat ip 10.1.1.2 no-port-transfer


WEB(方法二):


23.jpg


24.jpg


② 配置感兴趣流、配置域内双向NAT(SNAT配置)


CLI(方法一):

acl acl02 src-ip net 10.1.1.3 255.255.255.255 permit

object address-pool address_pool

ip address 1.1.1.100 1.1.1.100

nat acl acl02 snat interface Ge0/0/3 ip-pool address_pool hash-mapping no-port-transfer


WEB(方法二):

25.jpg


26.jpg


27.jpg


3、验证说明


① 访问内网服务器(验证http和ping)


28.jpg


29.jpg


② 查看会话(nat和icmp)


30.jpg


③ 查看抓包(icmp)


1)内网用户处抓包


31.jpg


2)内网服务器抓包

32.jpg


④ 通过会话和抓包,可以清晰看到FW做了什么

33.jpg


1)IP报文从内网用户到内网服务器的转换过程:


当内网用户访问内网服务器的报文到达防火墙时,目的地址(1.1.1.1)经过DNAT转换为内网服务器地址(10.1.1.2):(Ge0/0/2)1.1.1.1:NA[10.1.1.2:NA] 


源地址(10.1.1.3)经过SNAT转换为外网地址(1.1.1.100),与内网服务器(10.1.1.3)在不同网段:(Ge0/0/2)10.1.1.3:NA[1.1.1.100:NA] 


这样报文的源地址和目的地址就同时进行了转换,即完成了域内双向NAT。


② IP报文从内网服务器到内网用户的转换过程:


当内网服务器的回应报文经过防火墙时,目的地址(1.1.1.100)根据session表

((Ge0/0/2)10.1.1.3:NA[1.1.1.100:NA])转换为内网用户地址(10.1.1.3)


源地址(10.1.1.2)根据session表

((Ge0/0/2)1.1.1.1:NA[10.1.1.2:NA])转换为外网地址(1.1.1.1)


这样报文再次进行域内双向NAT转换,报文的源地址和目的地址均转换为外网地址


4、域内双向NAT补充说明


① 文中说为了便于防火墙管理使用了地址池,但如果不使用地址池地址,直接使用外网出口地址可以吗?


1)直接使用外网出口地址是可以的,一样可以达到需求所要求的效果。


2)其实内网地址也是可以的,只要不和内网服务器在同一网段即可。


② 也许有人会说“内网用户与内网服务器连接防火墙的不同口,会有什么变化呢?”


1)如果将内网用户和内网服务器通过不同的接口连接到防火墙,此时内网用户和内网服务器交互的所有报文会经过防火墙转发,所以只配置DNAT就可以了。


2)关键要明确NAT转换的方向和转换后地址的作用,而不要纠结于转换后是外网地址还是内网地址,灵活应用域内双向NAT可以起到事半功倍的效果。


六方云作为工业互联网的资深厂商,有责任和义务尽可能多的向合作伙伴及客户,传播正能量的、有价值的、更具深度的解决方案和技术原理,帮助客户解决问题的同时也实现我们公司的自身价值。