freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

双向NAT在工业场景的应用
2022-07-01 14:56:10
所属地 北京

在工业网络场景中,可能会用到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通信。图片

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

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

图片

2、场景二解决方案介绍

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

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

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

图片

3、场景三解决方案介绍

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


图片

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

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

03.典型案例-场景一

1、任务说明

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

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(方法二):

② 配置域间双向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(方法二):

图片

3、验证说明

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

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

图片

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

图片

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

图片

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

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通信。图片

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下发温度和湿度指令:图片

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

图片

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

图片

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

图片

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

操作员站访问西门子PLC的报文到达工业防火墙时,目的地址(192.168.40.1)经过DNAT转换为西门子PLC(192.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、任务说明

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

图片

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(方法二):

图片

② 配置感兴趣流、配置域内双向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(方法二):图片

图片

图片

3、验证说明

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

图片

② 查看会话(nat和icmp)

图片

③ 查看抓包(icmp)

1)内网用户处抓包图片

2)内网服务器抓包

图片

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

图片

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可以起到事半功倍的效果。


# 网络安全技术 # 工业安全 # 工业互联网安全 # 双向NAT
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录