• 凯发k8国际

    安全研究

    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换为西门子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、任务说明


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


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


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