FTP use PORT or PASV first.

我们经常会在DOS命令模式下使用FTP的一些命令,不过,在进行Upload/Download时,经常会碰到一个命令的反馈:
use PORT or PASV first.
请问如何操作呢?
按常里,我们会根据提示,输入PASV或者PORT指令.其实这样输入是无法进行的.
使用的方法如下:
如果需要切换到PORT模式:quote PORT;
同样,如果需要PASV模式:quote PASV即可.

FTP 主动模式
1.客户端用大于1024的高位端口发起初始化连接到vsftp服务器的21端口
2.vsftp服务器的21端口主动与客户端大于1024的高位端口建立控制连接
3.vsftp服务器的20端口主动与客户端大于1024的高位端口初始化数据连接
4.最后客户端才使用大于1024的高位端口响应FTP服务端的20端口。
从上述流程中,我们大致可知道在ftp主动模式下,vsftp服务器只需要开放20和21端口即可。

FTP被动模式
流程正好相反,除第一和第二步一样外,剩下的都是高位端口与高位端口建立连接,就不详解了。
所以被动模式下,而你在vsftp服务器开启了防火墙,你仅仅开20和21端口怎么可能够。

另外:

FTP两种模式的区别:

(1)PORT(主动)模式

所谓主动模式,指的是FTP服务器“主动”去连接客户端的数据端口来传输数据,其过程具体来说就是:客户端从一个任意的非特权端口N(N>1024)连接到FTP服务器的命令端口(即tcp 21端口),紧接着客户端开始监听端口N+1,并发送FTP命令“port N+1”到FTP服务器。然后服务器会从它自己的数据端口(20)“主动”连接到客户端指定的数据端口(N+1),这样客户端就可以和ftp服务器建立数据传输通道了。

(2)PASV(被动)模式

所谓被动模式,指的是FTP服务器“被动”等待客户端来连接自己的数据端口,其过程具体是:当开启一个FTP连接时,客户端打开两个任意的非特权本地端口(N >1024和N+1)。第一个端口连接服务器的21端口,但与主动方式的FTP不同,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(P > 1024),并发送PORT P命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。(注意此模式下的FTP服务器不需要开启tcp 20端口了)

两种模式的比较:

(1)PORT(主动)模式模式只要开启服务器的21和20端口,而PASV(被动)模式需要开启服务器大于1024所有tcp端口和21端口。

(2)从网络安全的角度来看的话似乎ftp PORT模式更安全,而ftp PASV更不安全,那么为什么RFC要在ftp PORT基础再制定一个ftp PASV模式呢?其实RFC制定ftp PASV模式的主要目的是为了数据传输安全角度出发的,因为ftp port使用固定20端口进行传输数据,那么作为黑客很容使用sniffer等探嗅器抓取ftp数据,这样一来通过ftp PORT模式传输数据很容易被黑客窃取,因此使用PASV方式来架设ftp server是最安全绝佳方案。

因此:如果只是简单的为了文件共享,完全可以禁用PASV模式,解除开放大量端口的威胁,同时也为防火墙的设置带来便利。

不幸的是,FTP工具或者浏览器默认使用的都是PASV模式连接FTP服务器,因此,必须要使vsftpd在开启了防火墙的情况下,也能够支持PASV模式进行数据访问。

如何开启vsftpd的PASV模式?

(1)修改/etc/vsftpd/vsftpd.conf文件配置

pasv_enable=yes (Default: YES) 设置是否允许pasv模式
#pasv_promiscuous=no (Default: NO) 是否屏蔽对pasv进行安全检查,(当有安全隧道时可禁用)
pasv_max_port=10240 (Default: 0 (use any port)) pasv使用的最大端口
pasv_min_port=20480 (Default: 0 (use any port)) pasv使用的最小端口

默认情况下vsftpd是支持PASV模式访问的,可以不作修改。

(2)给防火墙添加FTP访问转换支持模块

#vi /etc/sysconfig/iptables-config

// 添加以下两行:
IPTABLES_MODULES="ip_conntrack_ftp"
IPTABLES_MODULES="ip_nat_ftp"

请一定注意两行内容的位置关系不要搞反了。如果将"ip_nat_ftp"放到前面是加载不到的。如果你的ftp服务是过路由或者防火墙(即内网映射方式一定需要此模块)。以上等同于在加载iptables之前运行modprobe命令加载"ip_nat_ftp"和"ip_conntrack_ftp"模块。

(3)给防火墙添加访问规则允许

-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --sport 21 -j 

(4)重启防火墙服务

service iptables restart

(5)检查模块是否加载成功

#lsmod |grep ftp

p_nat_ftp              7361  0
ip_nat                 21229  1 ip_nat_ftp
ip_conntrack_ftp       11569  1 ip_nat_ftp
ip_conntrack           53665  4 ip_nat_ftp,ip_nat,ip_conntrack_ftp,xt_state

以上信息表明模块加载成功,可以在其他机器上使用FTP客户端进行访问了。

原文地址:https://www.cnblogs.com/loanhicks/p/8324853.html

时间: 2024-10-15 08:01:32

FTP use PORT or PASV first.的相关文章

ftp的port和pasv模式比较

一.ftp的port和pasv模式的工作方式        FTP使用2个TCP端口,首先是建立一个命令端口(控制端口),然后再产生一个数据端口.国内很多教科书都讲ftp使用21命令端口和20数据端口,这个应该是教书更新太慢的原因吧.实际上FTP分为主动模式和被动模式两种,ftp工作在主动模式使用tcp 21和20两个端口,而工作在被动模式会工作在大于1024随机端口.FTP最权威的参考见RFC 959,有兴趣的朋友可以仔细阅读ftp://nic.merit.edu/documents/rfc/

(转)FTP的PORT(主动模式)和PASV(被动模式)

http://my.oschina.net/binny/blog/17469(转) 以前才用Linux的时候,用Ftp的时候就遇到链接成功,就是查看不到服务器上的数据,之前大致查了下明白了,现在看到一篇比较清楚的文章转载记录下,加深印象:其实简单来讲就是:主动模式的FTP是指服务器主动连接客户端的分配的随机数据端口(1024+),被动模式的FTP是指服务器被动地等待客户端连接自己的随机数据端口(1024+): 1.FTP的PORT(主动模式)和PASV(被动模式) (1) PORT(主动模式)也

FTP的port模式和pasv模式

FTP具有两种模式,分别是port模式(也叫主动模式)和pasv模式(也叫被动模式),怎么来理解这两种模式呢?我来打个比喻吧,在主动模式下:客户端给服务器端的21端口发命令说,我要下载什么什么,并且还会说我已经打开了自己的某个端口,你就从这里把东西给我吧,服务器知道后就会通过另外一个数据端口把东西传给客户端,这就是主动模式,可以理解为服务端主动给客户端传输文件;在被动模式下:客户端给服务器端的21端口发命令说,我要下载什么什么,服务器端知道后,就打开一个端口,然后告诉客户端,我已经打开了某某端口

ftp中遇到的Entering Extended Passive Mode问题

在AIX机器上登入ftp输入用户名和密码之后再ls发现出现如下问题Entering Extended Passive Mode ftp> ls229 Entering Extended Passive Mode (|||51374|) 要解决这种情况,ctrl+c后输入epsv4 off回车即可. ftp> epsv4 offEPSV/EPRT on IPv4 off.ftp> ls227 Entering Passive Mode (9,44,51,77,147,2).150 Open

FTP主动模式(Port)与被动模式(PASV)原理解析

FTP是File Transfer Protocol(文件传输协议)的缩写,用来在两台计算机之间互相传送文件.相比于HTTP,FTP协议要复杂得多.复杂的原因,是因为FTP协议要用到两个TCP连接,一个是命令链路,用来在FTP客户端与服务器之间传递命令:另一个是数据链路,用来上传或下载数据.    FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式.    在主动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,然后开放N+1号端口进行

Sftp和ftp 区别、工作原理等(服务器被动就是被动模式,PORT模式建立数据传输通道是由服务器端发起的,在PASV模式中,数据传输的通道的建立是由FTP客户端发起的)good

Sftp和ftp over ssh2的区别 最近使用SecureFx,涉及了两个不同的安全文件传输协议: -sftp -ftp over SSH2 这两种协议是不同的.sftp是ssh内含的协议,只要sshd服务器启动了,它就可用,它本身不需要ftp服务器启动.ftp over SSH2则象一个二传手. 1.SFTP的工作模式: 图1显示了SFTP的工作模式,它是作为SSH2的一个子服务工作的. 图 1 SFTP工作模式 2.FTP over SSH2 此协议还是基于ftp协议的.在此协议中SS

ftp的主动模式(port)与被动模式(PASV) (转)

转自:http://www.phpweblog.net/killjin/archive/2008/01/06/2653.html 目录 开场白  基础  主动FTP  主动FTP的例子  被动FTP  被动FTP的例子  总结  参考资料 开场白 处理防火墙和其他网络连接问题时最常见的一个难题是主动FTP与被动FTP的区别以及如何完美地支持它们.幸运地是,本文能够帮助你清除在防火墙环境中如何支持FTP这个问题上的一些混乱. 本文也许不像题目声称的那样是一个权威解释,但我已经听到了很多好的反馈意见

Vsftp的PASV mode(被动模式传送)和Port模式解释

什么叫做PASV mode(被动模式传送)?他是如何工作的?FTP的连接一般是有两个连接的,一个是客户程和服务器传输命令的,另一个是数据传送的连接.FTP服务程序一般会支持两种不同的模式,一种是Port模式,一种是Passive模式(Pasv Mode),我先说说这两种不同模式连接方式的分别.先假设客户端为C,服务端为S.Port模式:当客户端C向服务端S连接后,使用的是Port模式,那么客户端C会发送一条命令告诉服务端S(客户端C在本地打开了一个端口N在等着你进行数据连接),当服务端S收到这个

Vsftp的PASV mode和Port模式配置文件的设置

FTP模式与数据端口 FTP 分为两类,PORT FTP和PASV FTP,PORT FTP是一般形式的FTP.这两种FTP在建立控制连接时操作是一样的,都是由客户端首先和FTP服务器的控制端口(默认值为21)建立控制链接,并通过 此链接进行传输操作指令.它们的区别在于使用数据传输端口(ftp- data)的方式.PORT FTP由FTP服务器指定数据传输所使用的端口,默认值为20.PASV FTP由FTP客户端决定数据传输的端口. PASV FTP这种做法,主要是考虑到存在防火墙的环境下,由客