网站建设基本功能,哈尔滨网站设计快速建站,企业所得税计算方法举例,wordpress首页文章FTP 是常见的基于TCP的网络服务#xff0c;它使用了两个TCP连接来建立逻辑通信信道#xff0c;即控制连接和数据连接。当客户端与服务器建立一个FTP会话时#xff0c;使用TCP创建一个持久的控制连接以传递命令和应答。当发送文件和其它数据传输时#xff0c;它们在独立的TC…FTP 是常见的基于TCP的网络服务它使用了两个TCP连接来建立逻辑通信信道即控制连接和数据连接。当客户端与服务器建立一个FTP会话时使用TCP创建一个持久的控制连接以传递命令和应答。当发送文件和其它数据传输时它们在独立的TCP数据连接上进行传递这个连接根据需要创建和拆除。
更为复杂的是FTP标准指定了创建数据连接的两种不同方法即正常主动数据连接和被动数据连接。FTP的控制连接总是由客户端首先发起的主动数据连接是由服务器端发起的被动数据连接是由客户端发起的。
成功建立控制连接后在进行主动连接时客户端发送PORT命令其中内嵌了地址和端口信息以告知服务器进行连接然后服务器打开默认端口20建立到客户端已告知地址和端口的数据连接。在进行被动连接时客户机使用PASV命令告诉服务器等待客户机建立数据连接服务器响应告诉客户机为了数据传输它应该使用服务器上的什么端口随机打开。这种工作机制带来了一个严重的问题在FTP的命令PORT或PASV或对它们的回答中传递IP地址及端口号与网络分层机制严重冲突在FTP客户端与服务器的通信信道之间的网关设备防火墙或路由器上启用了NAT功能的情况下将出现连接性问题。
防火墙对于像FTP这样的多端口连接的TCP应用其影响是深远的在复杂的网络环境中更是由于设备、软件的多样性可能导致不可预知的问题。作为一名网络管理员深入了解防火墙和FTP的工作原理及其在NAT环境下防火墙对FTP的影响对于选择FTP服务软件及安装、部署、管理及维护FTP服务和实际工作中排除FTP应用故障是大有裨益的。本文就以一个在实际环境中比较常见的FTP部署和应用拓扑为例来详细解读防火墙启用了NAT功能对FTP的影响。
一、网络拓扑图 二、主动模式的连接分析
如本例中网络拓扑所示IP为192.168.1.1客户端计算机打开一个可用的TCP端口1025经过其前端的防火墙进行NAT转换成地址1.1.1.1和端口1025后建立到目标地址为2.2.2.2的21端口的连接然后服务器前端的防火墙将此连接信息传递到服务器172.16.6.1的21端口成功建立FTP控制连接。
服务器则经由这个已经建立的逻辑连接通道返回数据包与客户端进行交互。接着客户端发出PORT指令在指令中嵌入了地址信息IP:192.168.1.1Port:1026告知服务器用于数据连接并打开端口1026等待服务器连接。当承载PORT指令的数据包到达客户机前端的防火墙时由于NAT的缘故在成功创建NAT表项改写数据包的IP和TCP端口信息后
如果此时防火墙不能识别并检查此连接是FTP应用便不能对PORT指令中嵌入的地址和端口信息进行改写则将此数据包通过先前已建立的控制连接通道传递到服务器后服务器则打开20端口将建立到192.168.1.1的1026端口的数据连接。
显然此连接数据包要么被其前端的防火墙丢弃要么在流入因特网后立刻被丢弃永远无法到达客户端。在这种情况下客户端一直处在控制连接阶段发送含有PORT指令的数据包以便建立数据连接而服务器则在打开了20端口后一直尝试建立到客户端的数据连接但始终收不到应答。
直接的结果就是客户端成功连接了FTP服务器却无法进行数据传输。这里可能还包含一个隐藏的安全威胁如果恰巧192.168.1.1对于服务器主机来说是直接可达的则此时服务器便将数据包发送到这台计算机在这两台主机之间产生莫名的数据流。其他可能更隐蔽、更不好的情况笔者不再做假设论述了。
如果此时防火墙能支持对FTP应用进行审查和跟踪即能识别PORT指令中的内容就将其中嵌入的地址信息改写成IP:1.1.1.1PORT:1026并动态打开1026端口并建立新的NAT转换表项等待连接则当服务器收到PORT指令后打开20端口建立到1.1.1.1上1026端口的连接成功交互后便能进行数据传输了。
三、被动模式的连接分析
控制连接建立后客户端发出的PASV指令到达服务器服务器则随机打开一个可用的TCP端口并将地址和端口信息IP:172.16.6.1Port:50000返回给客户端告知客户端利用这些信息进行数据连接。当包含服务器地址信息的这个数据包到达其前端的防火墙时
如果防火墙不能识别并检查此数据包的应用层数据无法判定它是FTP的PASV指令的返回包并对其中嵌入的地址信息进行重写则当此数据包返回到客户端时客户端将随机打开端口3000以目的地址172.16.6.1、端口50000来进行数据连接同理此连接数据包永远不能到达服务器端。
这种情况下客户端将一直尝试建立数据连接却总是不能收到应答。这里可能包含的隐藏安全威胁如前所述。
如果防火墙能对FTP应用进行审查和跟踪并将返回包中嵌入的服务器地址信息进行重写即转换成IP2.2.2.2Port50000然后建立新的NAT表项动态打开50000端口等待连接。则此返回包到达客户端时客户端将随机打开端口3000以目的地址2.2.2.2、端口50000来新建连接便能成功建立数据连接。
根据以上分析为成功进行FTP数据传输主动模式下要求客户机前端的防火墙在启用NAT后能对FTP应用进行审查和跟踪识别并改写PORT指令中的客户端地址信息被动模式下则要求服务器前端的防火墙能改写服务器响应PASV指令后返回数据包中的服务器地址信息。
当然为保险起见为保证FTP应用的正常使用建议两端的防火墙都需要支持对FTP进行识别和内容审查。
四、网络防火墙与FTP
大多数网管设置防火墙的默认访问控制策略是允许从内部到外部的一切流量禁止从外部到内部的一切流量。
就FTP应用来说为了简化防火墙策略的配置又兼顾安全策略要求客户机选择被动模式进行数据连接较好不需要对其前端的防火墙设置特别的访问控制策略但要求服务器前端的防火墙能动态打开数据连接所需的随机端口服务器端则选择主动连接较好为允许客户端的访问其前端防火墙的访问控制策略仅需要显式对外开放21端口即可但需要客户机前端的防火墙能动态打开数据连接所需的端口。
从方便使用的角度考虑既然提供FTP服务就要配置好服务器前端的防火墙使其访问控制策略能支持两种模式下的FTP服务正常工作。
如果客户机前端的NAT设备为路由器不是防火墙并不能审查和跟踪FTP应用从前面的分析可以推断出主动模式下肯定存在连接性问题需要以被动方式建立数据连接才能成功使用FTP服务。
如果FTP控制端口非默认而是定制的TCP端口比如2121在这种情况下服务器前端的防火墙通过配置命令显式指示FTP的控制端口便能进行审查和跟踪。但客户机前端的防火墙即使其能识别默认端口下的FTP应用此时也会把控制端口非21的FTP服务当作一般的TCP应用对待这种情形下便不能改写主动模式下的客户端地址端口信息导致服务器在建立数据连接时失败但客户端使用被动连接模式能正常工作。
综上所述客户端使用被动方式连接FTP服务器是最恰当的能最大限度地降低连接性问题。同时降低了对客户机前端防火墙备的要求不需要像主动方式那样动态开放允许输入的随机端口把可能的安全威胁推给了服务器端。这或许是微软的IE浏览器资源管理器默认设置使用被动方式的原因。如图表2所示。另外需要注意的在Windows命令行下FTP默认是使用主动方式进行数据连接的。 五、主机防火墙与 FTP
如果将FTP服务器架设在Windows Server 2008上由于它内置Windows防火墙而且默认已经启用所以客户端建立到这台FTP服务器的控制连接便会被封锁此时需要在防火墙上开放对TCP 21端口的传入连接。
被动模式下由于服务器通过控制信道将用来监听客户端请求的端口号是随机产生的此时需要在防火墙上开放的传入连接的端口也是随机的。由于Windows防火墙不能像网络防火墙那样根据需要动态打开和关闭FTP服务要求的随机端口所以需要静态开放全部可能的随机端口。
Windows Server 2008默认的动态端口范围是49152-65535而Windows防火墙的例外开放规则只能针对单一端口来开放要开放49152-65535这个范围内的一万多个端口非常不切实际更是会给运行FTP服务器的主机带来严重的安全威胁。
所幸的是基于IIS7.0建立的FTP服务器允许将端口号固定在自行指定的一个范围中如50000-50005此时便只需要开放这一小段范围的端口即可大大提升了安全性和配置Windows防火墙的效率。如果服务器上部署的是第三方防火墙则需要慎重考虑如何设置使之能安全保障FTP服务的正常运行。