FTP PortActive模式和Passive模式详解.docx

上传人:b****5 文档编号:5897599 上传时间:2023-01-02 格式:DOCX 页数:13 大小:363.48KB
下载 相关 举报
FTP PortActive模式和Passive模式详解.docx_第1页
第1页 / 共13页
FTP PortActive模式和Passive模式详解.docx_第2页
第2页 / 共13页
FTP PortActive模式和Passive模式详解.docx_第3页
第3页 / 共13页
FTP PortActive模式和Passive模式详解.docx_第4页
第4页 / 共13页
FTP PortActive模式和Passive模式详解.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

FTP PortActive模式和Passive模式详解.docx

《FTP PortActive模式和Passive模式详解.docx》由会员分享,可在线阅读,更多相关《FTP PortActive模式和Passive模式详解.docx(13页珍藏版)》请在冰豆网上搜索。

FTP PortActive模式和Passive模式详解.docx

FTPPortActive模式和Passive模式详解

ftp的端口号20、21有何区别?

一个是数据端口,一个是控制端口,控制端口一般为21,而数据端口不一定是20,这和FTP的应用模式有关,如果是主动模式,应该为20,如果为被动模式,由服务器端和客户端协商而定

FTPPort(active)模式和FTPPassive模式

当你对一个FTP问题进行排错时候,你首先要问的一个问题是使用的是port模式的还是passive模式。

因为这两种行为迥异,所以这两种模式引起的问题也不同;在过去,客户端缺省为active(port)模式;近来,由于Port模式的安全问题,许多客户端的FTP应用缺省为Passive模式。

>>2.1FTPPort模式

  Port模式的FTP步骤如下:

步骤1~3建立控制连接

1、客户端发送一个TCPSYN(TCP同步)包给服务器段众所周知的FTP控制端口21,客户端使用暂时的端口作为它的源端口;

2、服务器端发送SYNACK(同步确认)包给客户端,源端口为21,目的端口为客户端上使用的暂时端口;

3、客户端发送一个ACK(确认)包;

客户端使用这个连接来发送FTP命令,服务器端使用这个连接来发送FTP应答;

接下来在这个TCP连接中进行用户名、密码认证等;

-----------------------------------------------------------------------------------------------

步骤4协商数据连接方式

4、当用户请求一个列表(List)请求或者发起一个要求发送或者接受文件的请求,客户端软件使用PORT命令,这个命令包含了一个暂时的端口,客户端希望服务器在打开一个数据连接时候使用这个暂时端口;PORT命令也包含了一个IP地址,这个IP地址通常是客户自己的IP地址,而且FTP也支持第三方(third-party)模式,第三方模式是客户端告诉服务器端打开与另台主机的连接(如下图);

-----------------------------------------------------------------------------------------------

步骤5~7建立数据连接

5、服务器端发送一个SYN包给客户端的暂时端口,源端口为20,暂时端口为客户端在PORT命令中发送给服务器端的暂时端口号;

6、客户端以源端口为暂时端口,目的端口为20发送一个SYNACK包;

7、服务器端发送一个ACK包;

-----------------------------------------------------------------------------------------------

步骤8~10数据传送与连接关闭

8、发送数据的主机以这个连接来发送数据,数据以TCP段(注:

segment,第4层的PDU)形式发送(一些命令,如STOR表示客户端要发送数据,RETR表示服务器段发送数据),这些TCP段都需要对方进行ACK确认(注:

因为TCP协议是一个面向连接的协议)

9、当数据传输完成以后,发送数据的主机以一个FIN命令来结束数据连接,这个FIN命令需要另一台主机以ACK确认,另一台主机也发送一个FIN命令,这个FIN命令同样需要发送数据的主机以ACK确认;

10、客户端能在控制连接上发送更多的命令,这可以打开和关闭另外的数据连接;有时候客户端结束后,客户端以FIN命令来关闭一个控制连接,服务器端以ACK包来确认客户端的FIN,服务器同样也发送它的FIN,客户端用ACK来确认。

当使用FTP时候,网络中的防火墙必须要声明相应的端口,防火墙必须要跟踪FTP对话然后检查PORT命令,防火墙必须要参与从服务器端到客户端在PORT命令中指定的端口连接的建立过程。

  如果网络中使用了NAT(注:

网络地址翻译),那么NAT网关同样也需要声明相应的端口,网关需要把在PORT命令中指定的IP地址翻译成分配给客户的地址,然后重新计算TCP的Checksum;如果网关没有正确地执行这个操作,FTP就失败了。

  黑客可能会利用FTP支持第三方特性这一特点,在PORT命令中设置IP地址和端口号参数来指定一台目标主机的地址和端口号(有时候称这种攻击为FTP反弹攻击),例如黑客可以让一台FTP服务器不断地从它的源端口20发送TCPSYN包给一系列目的端口,让FTP服务器看起来正在进行端口扫描,目的主机不知道攻击来自黑客的主机,看起来攻击象是来自FTP服务器。

一些常用的FTP应用在PORT命令中设置地址为0.0.0.0,这样做的意图是让FTP服务器只需要与打开控制连接

的相同客户进行数据连接,设置地址为0.0.0.0可能会让防火墙不知所措。

例如,CISCOPIXIOS6.0以上版本的PIX(注:

CISCO硬件防火墙设备,6.0以上版本为其修正了相关的FTP协议)要求数据连接的IP地址与已经存在的控制连接的IP地址必须相同。

这样做的原因是防止黑客用PORT命令来攻击别的机器,虽然一些FTP应用设置IP地址为0.0.0.0不是有意图的攻击,但在PIX修正协议环境下的确引起了一些问题,同时对其他不允许第三方模式和避免FTP反弹攻击的防火墙来说,这也会引起相同的问题。

>>2.2FTPPassive模式

步骤1~3建立控制连接

  下面的列表描述了Passive模式的FTP的步骤,步骤1到3和Port模式FTP相同,步骤9到11同样与Port模式FTP最后三步相同。

1、客户端发送一个TCPSYN(TCP同步)包给服务器段众所周知的FTP控制端口21,客户端使用暂时的端口作为它的源端口;

2、服务器端发送SYNACK(同步确认)包给客户端,源端口为21,目的端口为客户端上使用的暂时端口;

3、客户端发送一个ACK(确认)包;客户端使用这个连接来发送FTP命令,服务器端使用这个连接来发送FTP应答;

-----------------------------------------------------------------------------------------------

步骤4~5协商数据连接方式

4、当用户请求一个列表(List)或者发送或接收文件时候,客户端软件发送PASV命令给服务器端表明客户端希望进入Passive模式;

5、服务器端进行应答,应答包括服务器的IP地址和一个暂时的端口,这个暂时的端口是客户端在打开数据传输连接时应该使用的端口;如果服务器端使用了NAT,在客户端还可以进行如下设置:

-----------------------------------------------------------------------------------------------

步骤6~8建立数据连接

6、客户端发送一个SYN包,源端口为客户端自己选择的一个暂时端口,目的端口为服务器在PASV应答命令中指定的暂时端口号;

7、服务器端发送SYNACK包给客户端,目的端口为客户端自己选择的暂时端口,源端口为PASV应答中指定的暂时端口号;

8、客户端发送一个ACK包;

-----------------------------------------------------------------------------------------------

步骤9~11数据传送与连接关闭

9、发送数据的主机以这个连接来发送数据,数据以TCP段(注:

segment,第4层的PDU)形式发送(一些命令,如STOR表示客户端要发送数据,RETR表示服务器段发送数据),这些TCP段都需要对方进行ACK确认;

10、当数据传输完成以后,发送数据的主机以一个FIN命令来结束数据连接,这个FIN命令需要另一台主机以ACK确认,另一台主机也发送一个FIN命令,这个FIN命令同样需要发送数据的主机以ACK确认;

11、客户端能在控制连接上发送更多的命令,这可以打开和关闭另外的数据连接;有时候客户端结束后,客户端以FIN命令来关闭一个控制连接,服务器端以ACK包来确认客户端的FIN,服务器同样也发送它的FIN,客户端用ACK来确认。

很多防火墙在设置的时候都是不允许接受外部发起的连接的,所以许多位于防火墙后或内网的FTP服务器不支持PASV模式,因为客户端无法穿过防火墙打开FTP服务器的高端端口;而许多内网的客户端不能用PORT模式登陆FTP服务器,因为从服务器的TCP20无法和内部网络的客户端建立一个新的连接,造成无法工作。

NAT设备内的客户端不支持主动模式,NAT设备内的服务端不支持被动模式;

●常见的FTP客户端软件PORT方式与PASV方式的切换方法

大部分FTP客户端默认使用PASV方式。

IE默认使用PORT方式。

在大部分FTP客户端的设置里,常见到的字眼都是“PASV”或“被动模式”,极少见到“PORT”或“主动模式”等字眼。

因为FTP的登录方式只有两种:

PORT和PASV,取消PASV方式,就意味着使用PORT方式。

(1)IE:

工具->Internet选项->高级->“使用被动FTP”(需要IE6.0以上才支持)。

(2)CuteFTP:

Edit->Setting->Connection->Firewall->“PASVMode”或File->SiteManager,在左边选中站点->Edit->“UsePASVmode”。

(3)FlashGet:

工具->选项->代理服务器->直接连接->编辑->“PASV模式”。

(4)FlashFXP:

选项->参数选择->代理/防火墙/标识->“使用被动模式”或站点管理->对应站点->选项->“使用被动模式”或快速连接->切换->“使用被动模式”。

●FTP客户端filezillaFTPClient简介:

两种传输模式可选:

主动模式时可以填入客户端的外网IP(在客户端只有NAT设备而没有防火墙的时候有用):

被动模式时即使收到的数据包中包含的是服务端内网IP,软件也可以自动向服务器端外网IP发起响应数据包(在服务端只有NAT设备而没有防火墙的时候有用)(实际测试无效果?

):

 

一般普通的桌面式路由器也支持FTP等协议,如以下这款TP-LINK:

常见FTP传输错误分析

*使用FTP客户端filezillaFTPClient;

*大部分NAT路由器或防火墙设备都支持FTP应用代理,不用考虑以下问题;

 

●主动模式正常连接过程

状态:

正在连接12.113.250.102:

21...

状态:

连接建立,等待欢迎消息...

响应:

220MicrosoftFTPService

命令:

USERadministrator

响应:

331Passwordrequiredforadministrator.

命令:

PASS***********

响应:

230Useradministratorloggedin.

状态:

已连接//控制连接建立、用户认证

状态:

读取目录列表...

命令:

PWD

响应:

257"/"iscurrentdirectory.

状态:

列出目录成功//初始连接时会出现此提示,但此时尚未建立数据连接,实际看到的是之前的目录列表缓存,为软件错误提示,必须刷新目录才会触发数据连接并列出目录列表

状态:

开始下载/Test01!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

//准备建立数据连接,开始协商

命令:

CWD/

响应:

250CWDcommandsuccessful.

命令:

TYPEA

响应:

200TypesettoA.

命令:

PORT192,168,252,69,39,64//主动模式中FTP客户端必须向服务端提供IP及端口

响应:

200PORTcommandsuccessful.//端口协商结束

命令:

RETRTest01!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

响应:

150OpeningASCIImodedataconnectionforTest01!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

(0bytes).

//以下开始建立数据连接

......//数据连接建立,开始数据传输......

响应:

226Transfercomplete.//数据传输结束

状态:

文件传输成功,传输了0字节(用时1秒)

 

●主动模式错误一

网络结构:

Client-路由器(NAT)-Internet-Server

状态:

正在连接61.113.250.102:

21...//模拟NAT环境

状态:

连接建立,等待欢迎消息...

响应:

220MicrosoftFTPService

命令:

USERadministrator

响应:

331Passwordrequiredforadministrator.

命令:

PASS***********

响应:

230Useradministratorloggedin.

状态:

已连接

状态:

读取目录列表...

命令:

PWD

响应:

257"/"iscurrentdirectory.

状态:

列出目录成功//注意此时为软件缓存,实际不能列出目录,更无法下载文件

状态:

开始下载/Test01!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

命令:

PORT192,168,252,69,39,60//协商过程中Client使用本地网卡的IP(内网IP)

响应:

500InvalidPORTCommand.

//IP、端口协商失败,服务器端报错

解决方法:

1、在FTP客户端设置【PORT命令使用客户端NAT后的外网IP】;2、使用支持FTP的NAT路由设备(即自动转换PORT命令中的IP地址);

错误:

文件传输失败

 

●主动模式错误二

网络结构:

Client-防火墙(无NAT)-Internet-Server

状态:

正在连接61.129.101.8:

21...

状态:

连接建立,等待欢迎消息...

响应:

220MicrosoftFTPService

命令:

USERadministrator

响应:

331Passwordrequiredforadministrator.

命令:

PASS***********

响应:

230Useradministratorloggedin.

状态:

已连接

状态:

读取目录列表...

命令:

PWD

响应:

257"/"iscurrentdirectory.

命令:

TYPEI

响应:

200TypesettoI.

命令:

PORT61,113,253,254,39,86//此处为客户端软件填写的外网IP,模拟无NAT环境

响应:

200PORTcommandsuccessful.

命令:

LIST

响应:

150OpeningBINARYmodedataconnectionfor/bin/ls.

响应:

425Can'topendataconnection.

//服务端发起对客户端的数据连接被防火墙拒绝或重置,服务端返回错误消息

解决方法:

1、使用支持FTP应用代理的防火墙设备;

错误:

读取目录列表失败

或:

命令:

LIST

响应:

150OpeningBINARYmodedataconnectionfor/bin/ls.

错误:

连接超时//收不到服务端的响应数据包,客户端自动超时并重置连接

错误:

读取目录列表失败

 

●被动模式正常连接过程

状态:

正在连接12.113.250.102:

21...

状态:

连接建立,等待欢迎消息...

响应:

220MicrosoftFTPService

命令:

USERadministrator

响应:

331Passwordrequiredforadministrator.

命令:

PASS***********

响应:

230Useradministratorloggedin.

状态:

已连接

状态:

读取目录列表...

命令:

PWD

响应:

257"/"iscurrentdirectory.

状态:

列出目录成功//控制连接建立、用户认证、列出目录

状态:

开始下载/Test01!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

//准备建立数据连接,开始协商

命令:

CWD/

响应:

250CWDcommandsuccessful.

命令:

TYPEA

响应:

200TypesettoA.

命令:

PASV

响应:

227EnteringPassiveMode(12,113,250,102,19,138).//被动模式中FTP服务端必须向客户端提供IP及端口

命令:

RETRTest01!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

!

//以下开始建立数据连接

响应:

125Dataconnectionalreadyopen;Transferstarting.

//服务端回应“数据连接已经建立”

......//数据连接建立,开始数据传输......

响应:

226Transfercomplete.

状态:

文件传输成功,传输了0字节(用时1秒)

 

●被动模式错误一

Client-Internet-路由器(NAT)-Server

状态:

正在连接61.129.101.8:

21...

状态:

连接建立,等待欢迎消息...

响应:

220MicrosoftFTPService

命令:

USERlee

响应:

331Passwordrequiredforlee.

命令:

PASS************

响应:

230Userleeloggedin.

状态:

Serverdoesnotsupportnon-ASCIIcharacters.

状态:

已连接

状态:

读取目录列表...

命令:

PWD

响应:

257"/"iscurrentdirectory.

命令:

TYPEI

响应:

200TypesettoI.

命令:

PASV

响应:

227EnteringPassiveMode(12,113,250,102,19,138).//协商过程中Server使用本地网卡的IP(内网IP)

命令:

LIST

响应:

426Connectionclosed;transferaborted.

//因为协商错误,客户端会对服务端内网IP12.113.250.102发起数据连接,必定连接失败;服务端报错(因为连接超时?

);

解决方法:

1、在FTP客户端设置【客户端自动对服务端外网IP发起数据连接】;2、使用支持FTP的NAT路由设备(即自动转换PORT命令中的IP地址);

错误:

读取目录列表失败

(*模拟环境,实际环境中192.168.252.69与12.113.250.102不能直接通信)

●被动模式错误二

网络结构:

Client-Internet-防火墙(无NAT)-Server

状态:

正在连接12.113.250.102:

21...

状态:

连接建立,等待欢迎消息...

响应:

220MicrosoftFTPService

命令:

USERadministrator

响应:

331Passwordrequiredforadministrator.

命令:

PASS***********

响应:

230Useradministratorloggedin.

状态:

已连接

状态:

读取目录列表...

命令:

PWD

响应:

257"/"iscurrentdirectory.

命令:

TYPEI

响应:

200TypesettoI.

命令:

PASV

响应:

227EnteringPassiveMode(12,113,250,102,19,137).

命令:

LIST

响应:

425Can'topendataconnection.

\\客户端发起对服务端的数据连接被防火墙拒绝或重置,服务端报错

解决方法:

1、使用支持FTP应用代理的防火墙设备;

错误:

读取目录列表失败

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 其它语言学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1