CN113542450B - 一种工控防火墙支持ftp穿越nat的实现方法及系统 - Google Patents
一种工控防火墙支持ftp穿越nat的实现方法及系统 Download PDFInfo
- Publication number
- CN113542450B CN113542450B CN202110823555.6A CN202110823555A CN113542450B CN 113542450 B CN113542450 B CN 113542450B CN 202110823555 A CN202110823555 A CN 202110823555A CN 113542450 B CN113542450 B CN 113542450B
- Authority
- CN
- China
- Prior art keywords
- ftp
- port
- server
- client
- industrial control
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/25—Mapping addresses of the same type
- H04L61/2503—Translation of Internet protocol [IP] addresses
- H04L61/256—NAT traversal
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开一种工控防火墙支持FTP穿越NAT的实现方法及系统。所述方法包括:FTP主动模式,FTP客户端向FTP服务器发送PORT命令,工控防火墙配置NAT策略,转换PORT命令报文中的IP地址,并临时建立匹配PORT命令报文数据通道的NAT规则,FTP服务器连接FTP客户端指定的端口进行数据传输;FTP被动模式,FTP客户端向FTP服务器发送PASV命令通知FTP服务器自身处于被动模式,工控防火墙配置NAT策略,转换PASV命令报文中的IP地址,并临时建立匹配PASV命令报文数据通道的NAT规则,FTP服务器收到PASV命令后,通知FTP客户端自身的数据端口,FTP客户端连接FTP服务器所通知的数据端口进行数据传输。本申请技术方案使得NAT可支持FTP等含有动态端口的协议,实现FTP穿越NAT不被中断。
Description
技术领域
本发明涉及工控安全领域,尤其涉及一种工控防火墙支持FTP穿越NAT的实现方法及系统。
背景技术
FTP(File Transfer Protocol,文件传输协议)是TCP/IP协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。
当在专用网内部的一些主机本来已经分配到了本地IP地址(即仅在本专用网内使用的专用地址),但现在又想和因特网上的主机通信(并不需要加密)时,可使用NAT(Network Address Translation,网络地址转换)方法。
然而传统的NAT技术只能对IP层和传输层头部进行处理,对于应用层协议,NAT并不能使这些应用透明地完成NAT转换,因此在现有的NAT环境下FTP功能并不能正常工作。基于此本申请提供一种应用在工控安全领域中实现工控防火墙支持FTP穿越NAT的实现方法。
发明内容
本发明提供了一种工控防火墙支持FTP穿越NAT的实现方法,包括:
FTP主动模式下FTP穿越NAT的实现方法:
设置FTP主动模式,即FTP服务器主动连接FTP客户端的数据端口,FTP客户端经工控防火墙向FTP服务器发起连接,向FTP服务器发送PORT命令,工控防火墙配置NAT策略,转换PORT命令报文中的IP地址,并临时建立匹配PORT命令报文数据通道的NAT规则,FTP服务器连接FTP客户端指定的端口,进行数据传输;
FTP被动模式下FTP穿越NAT的实现方法:
设置FTP被动模式,即FTP服务器被动地等待FTP客户端连接自己的数据端口,FTP客户端经工控防火墙向FTP服务器发起连接,向FTP服务器发送PASV命令通知FTP服务器自身处于被动模式,工控防火墙配置NAT策略,转换PASV命令报文中的IP地址,并临时建立匹配PASV命令报文数据通道的NAT规则,FTP服务器收到PASV命令后,通知FTP客户端自身的数据端口,FTP客户端连接FTP服务器所通知的数据端口进行数据传输。
如上所述的工控防火墙支持FTP穿越NAT的实现方法,其中,在主动模式下,FTP客户端随机开启一个端口N,向FTP服务器端口发起连接,然后开放N+1号端口进行监听,并向服务器发出PORT N+1命令;FTP服务器接收到PORT N+1命令后,用FTP服务器本地的FTP数据端口来连接FTP客户端指定的端口N+1,进行数据传输。
如上所述的工控防火墙支持FTP穿越NAT的实现方法,其中,在主动模式下,FTP客户端经过工控防火墙向FTP服务器发起连接时,工控防火墙具体执行如下子步骤:
获取到PORT命令报文后,解析PORT命令报文,按照配置的NAT策略转换PORT命令报文中的IP地址;
建立一条临时的NAT规则,使得PORT命令协商出的数据通道能够匹配NAT规则;
根据转换地址后的PORT命令报文的负载长度变化,调整FTP客户端发送的SEQ和FTP服务器响应的ACK。
如上所述的工控防火墙支持FTP穿越NAT的实现方法,其中,根据转换地址后的PORT命令报文的负载长度变化,调整FTP客户端发送的SEQ和FTP服务器响应的ACK,具体为:
使用哈希桶实现seq表,seq表的内容为SEQ产生的差值,对报文的五元组作哈希值可以快速查找seq表的位置,具体是从客户端到服务器端如果命中seq表,则重新计算TCP的seq值;
使用哈希桶实现ack表,ack表的内容包括存储ACK产生的差值以及对应的差值产生的报文位置;对报文的五元组作哈希值可以快速查找ack表的位置,具体是从服务器到客户端如果命中ack表,且如果ack值大于记录的报文位置,则重新计算TCP的ack值。
如上所述的工控防火墙支持FTP穿越NAT的实现方法,其中,如果需要传输多个文件,即先后有多个PORT命令时,需要对建立的seq和ack表进行更新,具体更新如下:对于seq表,则累加seq差值;对于ack表,则需要累加ack差值以及对应的报文位置,同时保留上一个PROT命令产生的ack差值累加值和报文位置,通过判断服务器到客户端命中ack表时,通过判断报文的ack值区间范围来计算TCP的ack值。
如上所述的工控防火墙支持FTP穿越NAT的实现方法,其中,在被动模式下,FTP客户端随机开启一个端口N向FTP服务器端口发起连接,同时会开启N+1号端口,然后向FTP服务器发送PASV命令,通知FTP服务器自己处于被动模式;FTP服务器收到命令后,会开放一个端口P进行监听,然后通过响应通知FTP客户端自己的数据端口是P;FTP客户端收到命令后,会通过N+1号端口连接服务器的端口P,然后在两个端口之间进行数据传输。
如上所述的工控防火墙支持FTP穿越NAT的实现方法,其中,所述方法应用于从内部私网FTP客户端访问互联网FTP服务器的场景,具体包括:
FTP主动模式下FTP穿越SNAT的实现方法:
设置FTP主动模式,即FTP服务器主动连接FTP客户端的数据端口,FTP客户端经工控防火墙向FTP服务器发起连接,向FTP服务器发送PORT命令,工控防火墙配置SNAT策略,按照配置的SNAT策略将PORT命令中访问外网的私网源IP地址转换为公网IP地址,并临时建立匹配PORT命令报文数据通道的DNAT规则,FTP服务器连接FTP客户端指定的端口,进行数据传输;
FTP被动模式下FTP穿越SNAT的实现方法:
设置FTP被动模式,即FTP服务器被动地等待FTP客户端连接自己的数据端口,FTP客户端经工控防火墙向FTP服务器发起连接,向FTP服务器发送PASV命令通知FTP服务器自身处于被动模式,工控防火墙配置SNAT策略,按照配置的SNAT策略将PASV命令中访问外网的私网源IP地址转换为公网IP地址,并临时建立匹配PASV命令报文数据通道的SNAT规则,FTP服务器收到PASV命令后,通知FTP客户端自身的数据端口,FTP客户端连接FTP服务器所通知的数据端口进行数据传输。
如上所述的工控防火墙支持FTP穿越NAT的实现方法,其中,所述方法应用于从互利网FTP客户端访问内部私网的FTP服务器的场景,具体包括:
FTP主动模式下FTP穿越DNAT的实现方法:
设置FTP主动模式,即FTP服务器主动连接FTP客户端的数据端口,FTP客户端经工控防火墙向FTP服务器发起连接,向FTP服务器发送PORT命令,工控防火墙配置DNAT策略,按照配置的DNAT策略将PORT命令中访问内网的公网IP地址转换为私网源IP地址,并临时建立匹配PORT命令报文数据通道的DNAT规则,FTP服务器连接FTP客户端指定的端口,进行数据传输;
FTP被动模式下FTP穿越DNAT的实现方法:
设置FTP被动模式,即FTP服务器被动地等待FTP客户端连接自己的数据端口,FTP客户端经工控防火墙向FTP服务器发起连接,向FTP服务器发送PASV命令通知FTP服务器自身处于被动模式,工控防火墙配置DNAT策略,按照配置的DNAT策略将PASV命令中访问内网的公网IP地址转换为私网源IP地址,并临时建立匹配PASV命令报文数据通道的SNAT规则,FTP服务器收到PASV命令后,通知FTP客户端自身的数据端口,FTP客户端连接FTP服务器所通知的数据端口进行数据传输。
本申请还提供一种工控安全系统,其特征在于,包括FTP客户端、工控防火墙和FTP服务器;所述工控安全系统执行上述任一项所述的工控防火墙支持FTP穿越NAT的实现方法。
本申请还提供一种计算机可读存储介质,其特征在于,包括至少一个存储器和至少一个处理器;
存储器用于存储一个或多个程序指令;
处理器,用于运行一个或多个程序指令,用以执行上述任一项所述的一种工控防火墙支持FTP穿越NAT的实现方法。
本发明实现的有益效果如下:采用本申请技术方案,扩展了NAT的应该场景,使得NAT可支持FTP等含有动态端口的协议,从而实现FTP穿越NAT而不被中断,达到成功传输文件的目的,同时对类似在应用层协议数据报文中包含地址信息的协议穿越NAT提供了一种通用方法。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1是本申请实施例一提供一种工控防火墙支持FTP穿越NAT的实现方法流程图;
图2是主动模式下的工控安全系统连接示意图;
图3是主动模式下工控防火墙的执行流程图;
图4展示了FTP主动模式穿越SNAT的具体实现流程;
图5是被动模式下的工控安全系统连接示意图;
图6展示了FTP被动模式穿越SNAT的具体实现流程。
具体实施方式
下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
如图1所示,本申请实施例一提供一种工控防火墙支持FTP穿越NAT的实现方法,包括FTP主动模式下FTP穿越NAT的实现方法和FTP被动模式下FTP穿越NAT的实现方法(FTP:File Transfer Protocol,文件传输协议,是TCP/IP协议组中的协议之一):
FTP主动模式下FTP穿越NAT的实现方法:
设置FTP主动模式,即FTP服务器主动连接FTP客户端的数据端口,FTP客户端经工控防火墙向FTP服务器发起连接,向FTP服务器发送PORT命令,工控防火墙配置NAT策略,转换PORT命令报文中的IP地址,并临时建立匹配PORT命令报文数据通道的NAT规则,FTP服务器连接FTP客户端指定的端口,进行数据传输;
FTP被动模式下FTP穿越NAT的实现方法:
设置FTP被动模式,即FTP服务器被动地等待FTP客户端连接自己的数据端口,FTP客户端经工控防火墙向FTP服务器发起连接,向FTP服务器发送PASV命令通知FTP服务器自身处于被动模式,工控防火墙配置NAT策略,转换PASV命令报文中的IP地址,并临时建立匹配PASV命令报文数据通道的NAT规则,FTP服务器收到PASV命令后,通知FTP客户端自身的数据端口,FTP客户端连接FTP服务器所通知的数据端口进行数据传输。
以下为FTP穿越SNAT(源NAT,即修改报文的源地址,场景是从内部私网访问互联网)的实现方案,包括FTP主动模式下FTP穿越SNAT的实现方法和FTP被动模式下FTP穿越SNAT的实现方法:
①FTP主动模式下FTP穿越SNAT的实现方法:
FTP客户端设置FTP主动模式,即FTP服务器主动连接FTP客户端的数据端口,FTP客户端经工控防火墙向FTP服务器发起连接,向FTP服务器发送PORT命令,工控防火墙配置SNAT策略,转换PORT命令报文中的源IP地址,并临时建立匹配PORT命令报文数据通道的DNAT规则,FTP服务器连接FTP客户端指定的端口,进行数据传输。
具体地,在主动模式下,FTP客户端随机开启一个端口N,向FTP服务器端口发起连接,然后开放N+1号端口进行监听,并向服务器发出PORT N+1命令;FTP服务器接收到PORT N+1命令后,用FTP服务器本地的FTP数据端口来连接FTP客户端指定的端口N+1,进行数据传输。例如,如图2所示,FTP客户端随机开启一个大于1024的非特权端口N,经过工控防火墙向FTP服务器的21号端口发起连接,然后FTP客户端开放非特权N+1号端口进行监听,并经过工控防火墙向服务器发出PORT N+1命令后,用FTP服务器本地的FTP数据端口(比如20号端口)来连接FTP客户端指定的端口N+1,进行数据传输。
PORT命令报文格式如下:
Transmission Control Protocol,Src Potr:60866,Dst Port:21,Seq:1146165981,Ack:564595939,Len:27
File Transfer Protocol(FTP)
PORT 17,17,17,106,237,213\r/n
Request command:PORT
Request arg:17,17,17,106,237,213
Active IP address:17.17.17.106
Active port:60885
如图3所示,FTP客户端经过工控防火墙向FTP服务器发起连接时,工控防火墙具体执行如下子步骤:
步骤310、工控防火墙获取到PORT命令报文后,解析PORT命令报文,按照配置的SNAT策略将访问外网的私网源IP地址转换为公网IP地址;
具体地,工控防火墙按照SNAT策略将PORT命令中的私网IP地址17.17.17.106转换为对外公网IP地址172.168.111.106;由于IP地址的变化会导致报文负载长度的变化,因此需要重新计算报文的IP头部和TCP头部的长度和校验和。
步骤320、工控防火墙建立一条临时的DNAT规则,使得PORT命令协商出的数据通道能够匹配SNAT规则;
NAT(Net Address Trancelate)规则具体包括SNAT(Source Network AddressTranslation,源网络地址转换)规则和DNAT(Destination Network AddressTranslation,目标地址转换)规则。其中SNAT规则具体为:内部地址要访问公网上的服务时,内部地址会主动发起连接,将内部地址转换为公网IP,该地址转换操作即为SNAT规则;DNAT规则具体为:内部需要对外提供服务时,外部主动发起连接,路由器或者防火墙的网络接收到这个连接,然后将连接转换到内部,此过程是由带公网ip的网关代替内部服务来接收外部的连接,然后在内部做地址转换,主要用于内部服务对外发布。
步骤330、工控防火墙根据转换地址后的PORT命令报文的负载长度变化,调整客户端发送的SEQ和服务器响应的ACK;
由于PORT命令报文的负载长度在转换地址后可能发生变化,比如从17.17.17.106改变为172.168.111.106,增加了3个字节,而FTP服务器响应的是转换后的地址,所以在FTP客户端与FTP服务器之间的TCP会话中ACK会比FTP客户端预期的多3,当ACK要从FTP服务器达到FTP客户端时经过工控防火墙,工控防火墙中配置的NAT要把ACK减掉3,由于ACK减少了,所以FTP客户端发送的TCP会话中的SEQ对应的就是这个减少了的ACK,因此针对客户端发送出去的SEQ,工控防火墙中配置的NAT需要加上3。后续在FTP客户端与FTP服务器之间连接时,工控防火墙中配置的NAT会一直对该TCP会话重复上述过程。
在工控防火墙中针对SEQ和ACK的变化建立如下两个表:
(1)使用哈希桶实现seq表,seq表的内容就是seq产生的差值,例如上述示例中的差值为3;对报文的五元组作哈希值可以快速查找seq表的位置,具体是从客户端到服务器端如果命中seq表,则重新计算TCP的seq值。
(2)使用哈希桶实现ack表,ack表的内容需要存储ack产生的差值以及对应的差值产生的报文位置;对报文的五元组作哈希值可以快速查找ack表的位置,具体是从服务器到客户端如果命中ack表,且如果ack值大于记录的报文位置,则重新计算TCP的ack值。
另外,本申请实施例中,如果需要传输多个文件,即先后有多个PORT命令时,需要对建立的seq和ack表进行更新,具体更新如下:
(1)对于seq表,需要累加seq差值即可。
(2)对于ack表,需要累加ack差值以及对应的报文位置,同时保留上一个PROT命令产生的ack差值累加值和报文位置,通过判断服务器到客户端命中ack表时,通过判断报文的ack值区间范围来计算TCP的ack值。
图4展示了FTP主动模式穿越SNAT的具体实现流程,在FTP客户端与FTP服务器之间建立FTP控制流会话时,工控防火墙命中SNAT规则,判断FTP客户端向FTP服务器发送的命令是否为PORT命令报文:
如果是PORT命令报文,则建立一条临时的DNAT规则,让PORT命令协商出的数据通道可以匹配SNAT规则,解析PORT命令报文,按照配置的SNAT规则将访问外网的私网源IP地址转换为公网IP地址,然后再进行报文的转发;
如果是上行报文,则修改ack值,并创建或修改seq表;
如果是下行报文,则修改seq表。
②FTP被动模式下FTP穿越NAT的实现方法:
FTP客户端设置FTP被动模式,即服务器被动地等待客户端连接自己的数据端口,FTP客户端经工控防火墙向FTP服务器发起连接,向FTP服务器发送PASV命令通知服务器自身处于被动模式,工控防火墙配置SNAT策略,转换PASV命令报文中的源IP地址,并临时建立匹配PASV命令报文数据通道的SNAT规则,FTP服务器收到PASV命令后,通知客户端自身的数据端口,客户端连接服务器所通知的数据端口进行数据传输。
具体地,在被动模式下,FTP客户端随机开启一个端口N向FTP服务器端口发起连接,同时会开启N+1号端口,然后向FTP服务器发送PASV命令,通知FTP服务器自己处于被动模式;FTP服务器收到命令后,会开放一个端口P进行监听,然后通过响应通知FTP客户端自己的数据端口是P;FTP客户端收到命令后,会通过N+1号端口连接服务器的端口P,然后在两个端口之间进行数据传输。例如,如图5所示,FTP客户端随机开启一个大于1024的端口N向FTP服务器的21号端口发起连接,同时会开启N+1号端口,然后向FTP服务器发送PASV命令,通知FTP服务器自己处于被动模式;FTP服务器收到命令后,会开放一个端口P进行监听,然后通过响应通知FTP客户端自己的数据端口是P;FTP客户端收到命令后,会通过N+1号端口连接服务器的端口P,然后在两个端口之间进行数据传输。
在被动模式下,工控防火墙需要建立一条临时的SNAT规则,让PASV命令协商出的数据通道可以匹配NAT规则,但因为PASV的响应命令包含的公网的地址所以不需要修改PASV响应命令,因此不需要建立seq表和ack表。
图6展示了FTP被动模式穿越SNAT的具体实现流程,在FTP客户端与FTP服务器之间建立FTP控制流会话时,FTP客户端向FTP服务器发送PASV命令报文,工控防火墙命中SNAT规则,并在工控防火墙中建立一条临时的SNAT规则,让PASV命令协商出的数据通道可以匹配SNAT规则,解析PASV命令报文,按照配置的SNAT规则将访问外网的私网源IP地址转换为公网IP地址,然后再进行报文的转发;
需要说明的是,本申请以上是以FTP穿越SNAT(目的NAT,即修改报文的目的地址,场景是从互利网访问内部私网的服务器)的方案为例进行详细描述,对于FTP穿越DNAT的实现方案与上述FTP穿越SNAT的实现方案类似,具体包括:
FTP主动模式下FTP穿越DNAT的实现方法:
设置FTP主动模式,即FTP服务器主动连接FTP客户端的数据端口,FTP客户端经工控防火墙向FTP服务器发起连接,向FTP服务器发送PORT命令,工控防火墙配置DNAT策略,按照配置的DNAT策略将PORT命令中访问内网的公网IP地址转换为私网源IP地址,并临时建立匹配PORT命令报文数据通道的DNAT规则,FTP服务器连接FTP客户端指定的端口,进行数据传输;
FTP被动模式下FTP穿越DNAT的实现方法:
设置FTP被动模式,即FTP服务器被动地等待FTP客户端连接自己的数据端口,FTP客户端经工控防火墙向FTP服务器发起连接,向FTP服务器发送PASV命令通知FTP服务器自身处于被动模式,工控防火墙配置DNAT策略,按照配置的DNAT策略将PASV命令中访问内网的公网IP地址转换为私网源IP地址,并临时建立匹配PASV命令报文数据通道的SNAT规则,FTP服务器收到PASV命令后,通知FTP客户端自身的数据端口,FTP客户端连接FTP服务器所通知的数据端口进行数据传输。
通过本申请所提供的工控防火墙支持FTP穿越NAT的实现方法:在主动模式下,FTP客户端IP为17.17.17.106,工控防火墙将访问外网的源IP从17.17.17.106转换为117.132.11.1,FTP服务器IP地址为117.132.11.23,FTP客户端向服务器发起连接,可以成功下载上传文件,通过wireshark抓包分析看,FTP服务器看到的客户端IP已成功转换为117.132.11.1,PORT命令携带的私网IP地址也成功修改为117.132.11.1的地址。同样地,在被动模式下,FTP客户端重新连接FTP服务器,可以成功下载上传文件,抓包分析SNAT策略同样生效。
本申请实施例还提供一种工控安全系统,包括FTP客户端、工控防火墙和FTP服务器;所述工控安全系统执行一种工控防火墙支持FTP穿越NAT的实现方法。
与上述实施例对应的,本发明实施例提供一种计算机存储介质,包括:至少一个存储器和至少一个处理器;
存储器用于存储一个或多个程序指令;
处理器,用于运行一个或多个程序指令,用以执行一种工控防火墙支持FTP穿越NAT的实现方法。
与上述实施例对应的,本发明实施例提供一种计算机可读存储介质,计算机存储介质中包含一个或多个程序指令,一个或多个程序指令用于被处理器执行一种工控防火墙支持FTP穿越NAT的实现方法。
本发明所公开的实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序指令,当所述计算机程序指令在计算机上运行时,使得计算机执行上述的一种工控防火墙支持FTP穿越NAT的实现方法。
在本发明实施例中,处理器可以是一种集成电路芯片,具有信号的处理能力。处理器可以是通用处理器、数字信号处理器(Digital Signal Processor,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现场可编程门阵列(FieldProgrammable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。处理器读取存储介质中的信息,结合其硬件完成上述方法的步骤。
存储介质可以是存储器,例如可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。
其中,非易失性存储器可以是只读存储器(Read-Only Memory,简称ROM)、可编程只读存储器(Programmable ROM,简称PROM)、可擦除可编程只读存储器(Erasable PROM,简称EPROM)、电可擦除可编程只读存储器(Electrically EPROM,简称EEPROM)或闪存。
易失性存储器可以是随机存取存储器(Random Access Memory,简称RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,简称SRAM)、动态随机存取存储器(Dynamic RAM,简称DRAM)、同步动态随机存取存储器(Synchronous DRAM,简称SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data RateSDRAM,简称DDRSDRAM)、增强型同步动态随机存取存储器(EnhancedSDRAM,简称ESDRAM)、同步连接动态随机存取存储器(Synchlink DRAM,简称SLDRAM)和直接内存总线随机存取存储器(DirectRambus RAM,简称DRRAM)。
本发明实施例描述的存储介质旨在包括但不限于这些和任意其它适合类型的存储器。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件与软件组合来实现。当应用软件时,可以将相应功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。
Claims (8)
1.一种工控防火墙支持FTP穿越NAT的实现方法,其特征在于,包括:
FTP主动模式下FTP穿越NAT的实现方法:
设置FTP主动模式,即FTP服务器主动连接FTP客户端的数据端口,FTP客户端经工控防火墙向FTP服务器发起连接,向FTP服务器发送PORT命令,工控防火墙配置NAT策略,转换PORT命令报文中的IP地址,并临时建立匹配PORT命令报文数据通道的NAT规则,FTP服务器连接FTP客户端指定的端口,进行数据传输;
在主动模式下,FTP客户端随机开启一个端口N,向FTP服务器端口发起连接,然后开放N+1号端口进行监听,并向服务器发出PORT N+1命令;FTP服务器接收到PORT N+1命令后,用FTP服务器本地的FTP数据端口来连接FTP客户端指定的端口N+1,进行数据传输;
FTP被动模式下FTP穿越NAT的实现方法:
设置FTP被动模式,即FTP服务器被动地等待FTP客户端连接自己的数据端口,FTP客户端经工控防火墙向FTP服务器发起连接,向FTP服务器发送PASV命令通知FTP服务器自身处于被动模式,工控防火墙配置NAT策略,转换PASV命令报文中的IP地址,并临时建立匹配PASV命令报文数据通道的NAT规则,FTP服务器收到PASV命令后,通知FTP客户端自身的数据端口,FTP客户端连接FTP服务器所通知的数据端口进行数据传输;
在被动模式下,FTP客户端随机开启一个端口N向FTP服务器端口发起连接,同时会开启N+1号端口,然后向FTP服务器发送PASV命令,通知FTP服务器自己处于被动模式;FTP服务器收到命令后,会开放一个端口P进行监听,然后通过响应通知FTP客户端自己的数据端口是P;FTP客户端收到命令后,会通过N+1号端口连接服务器的端口P,然后在两个端口之间进行数据传输。
2.如权利要求1所述的工控防火墙支持FTP穿越NAT的实现方法,其特征在于,在主动模式下,FTP客户端经过工控防火墙向FTP服务器发起连接时,工控防火墙具体执行如下子步骤:
获取到PORT命令报文后,解析PORT命令报文,按照配置的NAT策略转换PORT命令报文中的IP地址;
建立一条临时的NAT规则,使得PORT命令协商出的数据通道能够匹配NAT规则;
根据转换地址后的PORT命令报文的负载长度变化,调整FTP客户端发送的SEQ和FTP服务器响应的ACK。
3.如权利要求2所述的工控防火墙支持FTP穿越NAT的实现方法,其特征在于,根据转换地址后的PORT命令报文的负载长度变化,调整FTP客户端发送的SEQ和FTP服务器响应的ACK,具体为:
使用哈希桶实现seq表,seq表的内容为SEQ产生的差值,对报文的五元组作哈希值可以快速查找seq表的位置,具体是从客户端到服务器端如果命中seq表,则重新计算TCP的seq值;
使用哈希桶实现ack表,ack表的内容包括存储ACK产生的差值以及对应的差值产生的报文位置;对报文的五元组作哈希值可以快速查找ack表的位置,具体是从服务器到客户端如果命中ack表,且如果ack值大于记录的报文位置,则重新计算TCP的ack值。
4.如权利要求3所述的工控防火墙支持FTP穿越NAT的实现方法,其特征在于,如果需要传输多个文件,即先后有多个PORT命令时,需要对建立的seq和ack表进行更新,具体更新如下:对于seq表,则累加seq差值;对于ack表,则需要累加ack差值以及对应的报文位置,同时保留上一个PROT命令产生的ack差值累加值和报文位置,通过判断服务器到客户端命中ack表时,通过判断报文的ack值区间范围来计算TCP的ack值。
5.如权利要求1所述的工控防火墙支持FTP穿越NAT的实现方法,其特征在于,所述方法应用于从内部私网FTP客户端访问互联网FTP服务器的场景,具体包括:
FTP主动模式下FTP穿越SNAT的实现方法:
设置FTP主动模式,即FTP服务器主动连接FTP客户端的数据端口,FTP客户端经工控防火墙向FTP服务器发起连接,向FTP服务器发送PORT命令,工控防火墙配置SNAT策略,按照配置的SNAT策略将PORT命令中访问外网的私网源IP地址转换为公网IP地址,并临时建立匹配PORT命令报文数据通道的DNAT规则,FTP服务器连接FTP客户端指定的端口,进行数据传输;
FTP被动模式下FTP穿越SNAT的实现方法:
设置FTP被动模式,即FTP服务器被动地等待FTP客户端连接自己的数据端口,FTP客户端经工控防火墙向FTP服务器发起连接,向FTP服务器发送PASV命令通知FTP服务器自身处于被动模式,工控防火墙配置SNAT策略,按照配置的SNAT策略将PASV命令中访问外网的私网源IP地址转换为公网IP地址,并临时建立匹配PASV命令报文数据通道的SNAT规则,FTP服务器收到PASV命令后,通知FTP客户端自身的数据端口,FTP客户端连接FTP服务器所通知的数据端口进行数据传输。
6.如权利要求1所述的工控防火墙支持FTP穿越NAT的实现方法,其特征在于,所述方法应用于从互利网FTP客户端访问内部私网的FTP服务器的场景,具体包括:
FTP主动模式下FTP穿越DNAT的实现方法:
设置FTP主动模式,即FTP服务器主动连接FTP客户端的数据端口,FTP客户端经工控防火墙向FTP服务器发起连接,向FTP服务器发送PORT命令,工控防火墙配置DNAT策略,按照配置的DNAT策略将PORT命令中访问内网的公网IP地址转换为私网源IP地址,并临时建立匹配PORT命令报文数据通道的DNAT规则,FTP服务器连接FTP客户端指定的端口,进行数据传输;
FTP被动模式下FTP穿越DNAT的实现方法:
设置FTP被动模式,即FTP服务器被动地等待FTP客户端连接自己的数据端口,FTP客户端经工控防火墙向FTP服务器发起连接,向FTP服务器发送PASV命令通知FTP服务器自身处于被动模式,工控防火墙配置DNAT策略,按照配置的DNAT策略将PASV命令中访问内网的公网IP地址转换为私网源IP地址,并临时建立匹配PASV命令报文数据通道的SNAT规则,FTP服务器收到PASV命令后,通知FTP客户端自身的数据端口,FTP客户端连接FTP服务器所通知的数据端口进行数据传输。
7.一种工控安全系统,其特征在于,包括FTP客户端、工控防火墙和FTP服务器;所述工控安全系统执行如权利要求1-6任一项所述的工控防火墙支持FTP穿越NAT的实现方法。
8.一种计算机可读存储介质,其特征在于,包括至少一个存储器和至少一个处理器;
存储器用于存储一个或多个程序指令;
处理器,用于运行一个或多个程序指令,用以执行如权利要求1-6任一项所述的工控防火墙支持FTP穿越NAT的实现方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110823555.6A CN113542450B (zh) | 2021-07-21 | 2021-07-21 | 一种工控防火墙支持ftp穿越nat的实现方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110823555.6A CN113542450B (zh) | 2021-07-21 | 2021-07-21 | 一种工控防火墙支持ftp穿越nat的实现方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113542450A CN113542450A (zh) | 2021-10-22 |
CN113542450B true CN113542450B (zh) | 2023-06-06 |
Family
ID=78100743
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110823555.6A Active CN113542450B (zh) | 2021-07-21 | 2021-07-21 | 一种工控防火墙支持ftp穿越nat的实现方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113542450B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115242897B (zh) * | 2022-09-23 | 2023-01-06 | 北京六方云信息技术有限公司 | 设备通信方法、装置、终端设备以及存储介质 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7095747B2 (en) * | 2001-03-28 | 2006-08-22 | Siemens Communications, Inc. | Method and apparatus for a messaging protocol within a distributed telecommunications architecture |
US7840701B2 (en) * | 2007-02-21 | 2010-11-23 | Array Networks, Inc. | Dynamic system and method for virtual private network (VPN) packet level routing using dual-NAT method |
CN101296223B (zh) * | 2007-04-25 | 2011-02-02 | 北京天融信网络安全技术有限公司 | 一种实现防火墙芯片参与syn代理的方法 |
CN101325580B (zh) * | 2007-06-15 | 2012-01-25 | 上海亿人通信终端有限公司 | 基于nat-pt的ftp应用层网关的实现方法 |
CN102325016A (zh) * | 2011-10-18 | 2012-01-18 | 深圳市融创天下科技股份有限公司 | 一种建立数据通道的请求和应答方法、系统和终端设备 |
CN102664972B (zh) * | 2012-05-11 | 2015-04-08 | 中科方德软件有限公司 | 一种虚拟网络中地址映射方法和装置 |
CN104022998B (zh) * | 2013-03-01 | 2016-12-28 | 北京瑞星信息技术股份有限公司 | 网络传输数据病毒检测处理方法 |
CN109088892B (zh) * | 2018-10-19 | 2021-02-12 | 网宿科技股份有限公司 | 数据传输方法、系统以及代理服务器 |
CN112468370B (zh) * | 2020-11-30 | 2024-02-20 | 北京锐驰信安技术有限公司 | 一种支持自定义规则的高速网络报文监测分析方法及系统 |
-
2021
- 2021-07-21 CN CN202110823555.6A patent/CN113542450B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN113542450A (zh) | 2021-10-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20190007316A1 (en) | Controller for software defined network | |
US7483437B1 (en) | Method of communicating packet multimedia to restricted endpoints | |
US8521812B2 (en) | Accessing local network resources in a multi-interface system | |
US8332532B2 (en) | Connectivity over stateful firewalls | |
US20040006573A1 (en) | Data transmission apparatus, data transmission method, and data transmission method program | |
US10361921B2 (en) | Method and apparatus for managing connections in a communication network | |
US20090147795A1 (en) | TCP Traversal Through Network Address Translators (NATS) | |
US8724630B2 (en) | Method and system for implementing network intercommunication | |
JP6662136B2 (ja) | 中継装置、通信システム、中継方法及び中継プログラム | |
JP2010512703A (ja) | 移動体電話機用ストリーミング・メディア・サービス | |
US8934489B2 (en) | Routing device and method for processing network packet thereof | |
CN113542450B (zh) | 一种工控防火墙支持ftp穿越nat的实现方法及系统 | |
WO2022100425A1 (zh) | 数据处理方法、装置、相关设备及存储介质 | |
CN104506666A (zh) | 一种大量tcp穿越对称型nat的代理方法和系统 | |
US10805260B2 (en) | Method for transmitting at least one IP data packet, related system and computer program product | |
JP2017010388A (ja) | Httpサーバとその制御方法、画像形成装置およびプログラム | |
EP2052514B1 (en) | Pervasive inter-domain dynamic host configuration | |
JP6426118B2 (ja) | 中継装置、中継方法及び中継プログラム | |
EP3253004B1 (en) | Communication control device, communication control method, and communication control program | |
CN114978643B (zh) | 一种通信方法、网络设备及存储介质 | |
US20170005985A1 (en) | Scalable access to firewall-protected resources | |
EP3629528A1 (en) | Method and apparatus for forwarding packets from a first network to a second network | |
Hu | Proxy for host identity protocol | |
JP2006101431A (ja) | 通信方法および通信システム | |
CN115695301A (zh) | 待传输报文的发送方法及装置、存储介质及电子装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |