FTP(文件传输协协议):网络安全技术必需学习的基础协议
FTP(File Transfer Protocol)是文件传输协议的简称。正如其名所示:FTP的主要作用,就是让用户连接上一个远程计算机(这些计算机上运行着FTP服务器程序)察看远程计算机有哪些文件,然后把文件从远程计算机上拷到本地计算机,或把本地计算机的文件送到远程计算机去。
一、ftp协议介绍以及应用 一般来说,用户联网的首要目的就是实现信息共享,文件传输是信息共享非常重要的一个内容之一。Internet上早期实现传输文件,并不是一件容易的事,我们知道 Internet是一个非常复杂的计算机环境,有PC,有工作站,有MAC,有大型机,据统计连接在Internet上的计算机已有上千万台,而这些计算机可能运行不同的操作系统,有运行Unix的服务器,也有运行Dos、Windows的PC机和运行MacOS的苹果机等等,而各种操作系统之间的文件交流问题,需要建立一个统一的文件传输协议,这就是所谓的FTP。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议,这样用户就可以把自己的文件传送给别人,或者从其它的用户环境中获得文件。
FTP是早期互联网协议(注:IP协议组)中的一个,FTP协议是设计用在当时还比较封闭的互联网上传输文件,当时互联网只是互连了一些大学、政府机构和设计该互联网模型的一些商业公司。FTP在当今网络上,特别是在安全问题比较严重的网络上(如互联网Internet)的行为模式是有一些问题的。
FTP协议早在Client/Server(C/S)模式流行前就已经被设计,但FTP工作模式与C/S模式十分相似。FTP使用两个TCP连接, 一个TCP连接用于控制信息(控制连接),一个TCP连接用于实际的数据传输(数据连接)。对FTP对话的分析包括在控制连接上所发送命令的检查和在数据连接上发送的TCP数据段(注:segment---OSI模型中对第4层数据单元的称呼)的评估。对于普通的(主动的)FTP,控制连接由客户端初始化,数据连接由服务器端初始化。主动的FTP也称为(Port模式)。另一种模式是被动模式(Passive模式),这种模式下客户端初始化数据连接。
FTP支持两种方式的传输:文本(ASCII)方式和二进制(Binary)方式。通常文本文件的传输采用ASCII方式,而图象、声音文件、加密和压缩文件等非文本文件采用二进制方式传输,如果为了从一个系统上传输文件而使用了与本地系统不同的计算机字节位数,那么就必须使用Tenex模式。FTP以ASCII方式作为缺省的文件传输方式。
二、ftp的两种传输模式:主动(FTP Port)模式和被动(FTP Passive)模式。 当我们对FTP协议进行学习的时候,你首先要考虑到的一个问题是使用的是port模式(主动)的还是passive模式(被动)。在过去,客户端缺省为active(port)模式;近来,由于Port模式的存在安全问题,许多客户端的FTP应用缺省变为了Passive模式。FTP是仅基于TCP的服务,不支持UDP。 与众不同的是FTP使用2个端口,一个数据端口和一个命令端口(也可叫做控制端口)。通常来说这两个端口是21-命令端口和20-数据端口。
详细分解1:FTP Port(主动)模式 客户端从一个任意的大于1023(N)的端口连接到FTP服务器的命令端口,也就是21端口。然后客户端开始监听端口N+1,并发送FTP命令“port N+1”到FTP服务器。接着服务器会从它自己的数据端口(20)连接到客户端指定的数据端口(N+1)。针对FTP服务器前面的防火墙来说,必须允许以下通讯才能支持主动方式FTP: 任何端口到FTP服务器的21端口 (客户端初始化的连接到FTP服务器) FTP服务器的21端口到大于1023的端口(服务器响应客户端的控制端口) FTP服务器的20端口到大于1023的端口(服务器端初始化数据连接到客户端的数据端口) 大于1023端口到FTP服务器的20端口(客户端发送ACK响应到服务器的数据端口)
Port模式的FTP详细步骤如下: 1、 客户端发送一个TCP SYN(TCP同步)包给服务器端众所周知的FTP控制端口21,客户端使用暂时的端口作为它的源端口; 2、 服务器端发送SYN ACK(同步确认)包给客户端,源端口为21,目的端口为客户端上使用的暂时端口; 3、 客户端发送一个ACK(确认)包;客户端使用这个连接来发送FTP命令,服务器端使用这个连接来发送FTP应答; 4、 当用户请求一个列表(List)请求或者发起一个要求发送或者接受文件的请求,客户端软件使用PORT命令,这个命令包含了一个暂时的端口,客户端希望服务器在打开一个数据连接时候使用这个暂时端口;PORT命令也包含了一个IP地址,这个IP地址通常是客户自己的IP地址,而且FTP也支持第三方 (third-party)模式,第三方模式是客户端告诉服务器端打开与另一台主机的连接; 5、 服务器端发送一个SYN包给客户端的暂时端口,源端口为20,暂时端口为客户端在PORT命令中发送给服务器端的暂时端口号; 6、 客户端以源端口为暂时端口,目的端口为20发送一个SYN ACK包; 7、 服务器端发送一个ACK包; 8、 发送数据的主机以这个连接来发送数据,数据以TCP段(注:segment,第4层的PDU)形式发送(一些命令,如STOR表示客户端要发送数据,RETR表示服务器段发送数据),这些TCP段都需要对方进行ACK确认(注:因为TCP协议是一个面向连接的协议) 9、 当数据传输完成以后,发送数据的主机以一个FIN命令来结束数据连接,这个FIN命令需要另一台主机以ACK确认,另一台主机也发送一个FIN命令,这个FIN命令同样需要发送数据的主机以ACK确认; 10、 客户端能在控制连接上发送更多的命令,这可以打开和关闭另外的数据连接;有时候客户端结束后,客户端以FIN命令来关闭一个控制连接,服务器端以ACK包来确认客户端的FIN,服务器同样也发送它的FIN,客户端用ACK来确认。 详细分解2:FTP PAVS(主动)模式 为了解决服务器发起到客户的连接的问题,人们开发了一种不同的FTP连接方式。这就是所谓的被动方式,或者叫做PASV,当客户端通知服务器它处于被动模式时才启用。
在被动方式FTP中,命令连接和数据连接都由客户端,这样就可以解决从服务器到客户端的数据端口的入方向连接被防火墙过滤掉的问题。当开启一个FTP连接时,客户端打开两个任意的本地端口(N >; 1024和N+1)。第一个端口连接服务器的21端口,但与主动方式的FTP不同,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(端口号大于1024),并发送PORT P命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。对于服务器端的防火墙来说,必须允许下面的通讯才能支持被动方式的FTP。 从任何端口到服务器的21端口 (客户端初始化的连接) 服务器的21端口到任何大于1023的端口 (服务器响应到客户端的控制端口的连接 ) 从任何端口到服务器的大于1023端口 (客户端初始化数据连接到服务器指定的任意端口) 服务器的大于1023端口到远程的大于1023的端口(出;服务器发送ACK响应和数据到客户端的数据端口) 对比主动模式,被动模式在第1步中,客户端的命令端口与服务器的命令端口建立连接,并发送命令“PASV”。然后在第2步中,服务器返回命令"PORT N(N为端口号)",告诉客户端(服务器)用哪个端口侦听数据连接。在第3步中,客户端初始化一个从自己的数据端口到服务器端指定的数据端口的数据连接。最后服务器在第4 步中给客户端的数据端口返回一个"ACK"响应。 被动方式的FTP解决了客户端的许多问题,但同时给服务器端带来了更多的问题。最大的问题是需要允许从任意远程终端到服务器高位端口的连接。幸运的是,许多FTP程序允许管理员指定FTP服务器使用的端口范围。
另外客户端有的支持被动模式,有的不支持被动模式,必须考虑如何能支持这些客户端,以及为他们提供解决办法。例如,Solaris提供的FTP命令行工具就不支持被动模式,需要第三方的FTP客户端,比如ncftp。 为了更好的理解被动模式,我们使用实验去验证学习。 试验环境:PC的IP地址为192.168.98.88,服务器的地址为:192.168.98.12,客户端软件选择cuteftp,首先采用被动模式向服务器发起数据连接 根据源IP为192.168.98.88可知模式的选择是客户端发起的,PASV是选择被动模式的报文。 FTP报文段里显示了被动模式(Passive Mode)以及发送给客户端自己的IP地址以及提供给对方一个随机端口号,计算方式是4x256+222=1246。并打开自己的1246号端口,使其处于监听状态,等待客户端发起数据连接请求. 可以看出客户端向服务器发起的LIST命令,列出文件目录是在控制连接里发起的请求,由目的端口号可以看出来。 客户端接收到这个服务器关于PASV模式的回应,根据服务器提供的IP和端口号重新建立一个新的数据连接,源端口为3399,目的端口为1246(服务器提供的端口),并且从SYN被置为1的情况下可以看出这个一个新的连接。随后的数据是通过这个连接提供的新端口号进行传输的。 FTP报文段显示的是Ftp Data,说明传输的是数据。当某几段数据传输完成之后,客户端或服务器会向对方发送一个FIN来关闭这条连接。 而控制连接,如果客户端不主动发送FIN,它将一直在整个过程中存在,在服务器上,以21号端口来确认是控制连接。 从时间上来看,第7秒到21秒,TCP的报头信息中,源端口号和目的端口号都未改变,这个连接一直存在。
三、主动与被动FTP优缺点 主动FTP对FTP服务器的管理有利,但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。被动FTP对FTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。既然FTP服务器的管理员需要他们的服务器有最多的客户连接,那么必须得支持被动FTP。我们可以通过为FTP服务器指定一个有限的端口范围来减小服务器高位端口的暴露。这样,不在这个范围的任何端口会被服务器的防火墙阻塞。虽然这没有消除所有针对服务器的危险,但它大大减少了危险。
本文地址:https://www.raysync.cn/news/post-id-286 ,镭速(Raysync)大文件传输软件,高速传输系统,提供ftp传输加速服务,企业级大文件传输协议,解决大数据传输,跨境传输,跨国大文件传输慢的问题,帮助企业提高传输效率。
下一篇:文件传输协议ftp主被动模式区别