`
Jony.Hwong
  • 浏览: 116706 次
  • 来自: ...
社区版块
存档分类
最新评论

论FTP的主动被动和相关的防火墙设置

阅读更多
FTP 分为两类:
  主动FTP(Port FTP),也就是一般的FTP﹔被动FTP(Port FTP)


主动方式的FTP是这样的:客户端从一个任意的非特权端口N(N>1024)连接到FTP服务器的命令端口,也就是21端口。然后客户端开始端口 N+1,并发送FTP命令“port N+1”到FTP服务器。接着服务器会从它自己的数据端口(20)连接到客户端指定的数据端口(N+1)。

针对FTP服务器前面的防火墙来说,必须允许以下通讯才能支持主动方式FTP:

1. 任何端口到FTP服务器的21端口 (客户端初始化的连接 S<-C)
2. FTP服务器的21端口到大于1024的端口(服务器响应客户端的控制端口 S->C)
3. FTP服务器的20端口到大于1024的端口(服务器端初始化数据连接到客户端的数据端口 S->C)
4. 大于1024端口到FTP服务器的20端口(客户端发送ACK响应到服务器的数据端口 S<-C)
主动方式FTP的主要问题实际上在于客户端。FTP的客户端并没有实际建立一个到服务器数据端口的连接,它只是简单的告诉服务器自己****的端口号,服务器再回来连接客户端这个指定的端口。对于客户端的防火墙来说,这是从外部系统建立到内部客户端的连接,这是通常会被阻塞的。

防火墙设置的例子
建置一个防火墙下的FTP server,使用主动FTP(Port FTP) mode:预设的FTP port:21 以及FTP data port:20
执行以下两行指令,只允许port 21 以及port 20 开放,其它关闭。
iptables -A INPUT -p tcp -m multiport --dport 21,20 -j ACCEPT
iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset

FTP软件本身的设置

以vsFTP为例子. 修改/etc/vsFTPd/vsFTPd.conf
新增底下两行
listen_port=21
ftp_data_port=20

设置错会出现的情况
FTP client(如cuteFTP)的联机方式不能够选择passive mode,否则无法建立数据的联机。也就是读者可以连上FTP server,但是执行ls、get 等等的指令时,便无法运作。

被动FTP

为了解决服务器发起到客户的连接的问题,人们开发了一种不同的FTP连接方式。这就是所谓的被动方式,或者叫做PASV,当客户端通知服务器它处于被动模式时才启用。

在被动方式FTP中,命令连接和数据连接都由客户端,这样就可以解决从服务器到客户端的数据端口的入方向连接被防火墙过滤掉的问题。当开启一个 FTP连接时,客户端打开两个任意的非特权本地端口(N > 1024和N+1)。第一个端口连接服务器的21端口,但与主动方式的FTP不同,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交 PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(P > 1024),并发送PORT P命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。

对于服务器端的防火墙来说,必须允许下面的通讯才能支持被动方式的FTP:

1. 从任何端口到服务器的21端口 (客户端初始化的连接 S<-C)
2. 服务器的21端口到任何大于1024的端口 (服务器响应到客户端的控制端口的连接 S->C)
3. 从任何端口到服务器的大于1024端口 (入;客户端初始化数据连接到服务器指定的任意端口 S<-C)
4. 服务器的大于1024端口到远程的大于1024的端口(出;服务器发送ACK响应和数据到客户端的数据端口 S->C)

防火墙设置的例子
建置一个防火墙下的FTP server,使用被动FTP(Port FTP) mode:FTP port:21 以及FTP data port 从9981 到9986。
执行以下两行指令,只允许port 21 以及port 9981-9990 开放,其它关闭。
iptables -A INPUT -p tcp -m multiport --dport 21,9981,9982,9983,9984,9985,9986,9987,9988,9989,9990 -j ACCEPT
iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset

FTP软件本身的设置
以vsFTP为例子. 修改/etc/vsFTPd/vsFTPd.conf
新增底下四行
listen_port=21
pasv_enable=YES
pasv_min_port=9981
pasv_max_port=9986

设置错会出现的情况
这个例子中,FTP client(如cuteFTP)的联机方式必须选择passive mode,否则无法建立数据的联机。也就是读者可以连上FTP server,但是执行ls,get 等等的指令时,便无法运作。
分享到:
评论

相关推荐

    ftp中主动模式(port)与被动模式(PASV)

    处理防火墙和其他网络连接问题时最常见的一个难题是主动FTP与被动FTP的区别以及如何完美地支持它们。幸运地是,本文能够帮助你清除在防火墙环境中如何支持FTP这个问题上的一些混乱。

    vc++ FTP类,支持防火墙设置.zip

    这个"vc++ FTP类,支持防火墙设置.zip"压缩包显然包含了用Visual C++编写的FTP客户端实现,它允许用户通过可能存在的防火墙进行FTP传输。下面我们将详细探讨FTP的基本原理,以及如何在VC++中实现防火墙支持。 FTP...

    主动FTP与被动FTP-权威解释

    处理防火墙和其他网络连接问题时最常见的一个难题是主动FTP与被动FTP的区别以及如何完美地支持它们。幸运地是,本文能够帮助你清除在防火墙环境中如何支持FTP这个问题上的一些混乱。

    FTP主被动问题FTP主被动问题

    FTP 主被动问题是 FTP 协议中的一种连接模式,分为主动模式(PORT 模式)和被动模式(PASV 模式)。在了解 FTP 主被动问题之前,需要了解 FTP 的基本概念。FTP(File Transfer Protocol)是一种用于在网络上进行文件...

    使用防火墙FTP连接外网失败问题

    从网络搜索了不少资料,基本提到了主动和被动连接的问题,还有关于设置端口例外的问题,参照设置后,问题依旧。 后来,经过多方面层层搜索,终于找到了问题的解决方案: 1、控制面板 --- Windows防火墙 --- 例外 ---...

    IIS下FTP服务器的PASV端口范围修改方法

    在FTP通信过程中,有两种主要的数据传输方式:主动模式(PORT)和被动模式(PASV)。被动模式下,客户端向服务器发起请求时,服务器会从指定的端口范围内选择一个未使用的端口与客户端建立连接。如果这个端口范围过大,...

    IE7、IE8中如何设置才能始终以资源管理器模式打开FTP

    首先,我们需要了解IE浏览器中的两种FTP访问模式:主动模式和被动模式。主动模式中,客户端向服务器请求一个数据连接,而被动模式则是服务器主动建立数据连接到客户端。这两种模式主要是为了解决防火墙和NAT设备对...

    ftp简单应用源代码,支持ftp文件上传和下载,对理解ftp协议有帮助

    FTP客户端通过发送各种命令来与服务器交互,如`USER`、`PASS`(身份验证)、`CWD`(改变工作目录)、`LIST`(列出目录内容)、`RETR`(下载文件)、`STOR`(上传文件)、`PASV`(被动模式)和`PORT`(主动模式)等。...

    FTP主动模式和被动模式区别详解

     FTP只通过TCP连接,没有用于FTP的UDP组件.FTP不同于其他服务的是它使用了两个端口, 一个数据端口和一个命令端口(或称为控制端口)。通常21端口是命令端口,20端口是数据端口。当混入主动/被动模式的概念时,数据端口...

    ftp客户端和ftp通信协议

    FTP客户端是实现这一协议的应用程序,允许用户连接到远程服务器并执行文件上传、下载和其他相关操作。在这个压缩包中,我们很可能会找到一个FTP客户端的源代码,这对于理解FTP工作原理和进行自定义开发非常有价值。 ...

    FTP服务器 FTP服务器

    FTP有两种模式:主动模式(PORT)和被动模式(PASV)。主动模式下,服务器主动发起数据连接,可能会被防火墙阻止。而被动模式下,由客户端指定一个端口,服务器连接到这个端口进行数据传输,适合通过NAT和防火墙的...

    ftp.rar_dos ftp_ftp_ftp 列表

    同时,了解FTP的主动和被动模式、二进制和文本模式的区别也是必要的,因为它们直接影响文件传输的正确性。 总之,FTP是互联网上广泛使用的文件传输工具,而DOS环境下的FTP命令提供了一种简单直接的操作方式。FTP...

    ftp.rar_ftp

    9. 被动模式:FTP有两种工作模式:主动和被动。主动模式中,服务器发起数据连接,但在防火墙或NAT设备后面可能导致问题。被动模式则是由客户端建立数据连接,解决了这些问题,更适应现代网络环境。 10. 配置与管理...

    ftp服务器FtpServer

    4. **传输模式**:FTP有两种传输模式,主动(Active)和被动(Passive)。主动模式中,客户端打开一个端口向服务器发送数据;被动模式下,服务器打开一个端口等待客户端连接,用于解决防火墙和NAT设备下的连接问题。...

    FTP客户端工具

    主动模式下,服务器主动连接客户端的数据端口,而在被动模式中,客户端主动连接服务器指定的数据端口,以避免防火墙和NAT设备的问题。 在DELPHI编程环境下,开发者可以选择使用内置的TIdFTP组件或第三方FTP控件来...

    使用linux socket的基本的FTP协议实现

    FTP有两种传输模式:主动模式和被动模式。主动模式下,客户端打开一个端口并告知服务器,服务器则连接到该端口进行数据传输。而在被动模式中,服务器开启一个随机端口并通知客户端,客户端随后连接到这个端口进行...

    FTP服务器FTP服务器

    FTP有两种主要的连接模式:主动模式和被动模式。主动模式中,客户端打开一个端口接收数据,而服务器主动连接到这个端口;被动模式则适用于防火墙或NAT环境,服务器会提供一个端口供客户端连接,以避免端口转发问题。...

    Quick Easy FTP Server 4.0.0

    此外,了解被动模式(Passive Mode)和主动模式(Active Mode)的区别对于克服防火墙或NAT设备带来的连接问题至关重要。 总的来说,Quick Easy FTP Server 4.0.0是一款适合初学者和小型团队的FTP服务器解决方案,它...

    FTP编程,FTP服务器实例

    4. **被动模式与主动模式**: FTP有两种工作模式,主动模式和被动模式。主动模式中,服务器主动向客户端发起数据连接;被动模式下,客户端建立数据连接。根据网络环境,可能需要调整FTP服务器的工作模式。 **FTP...

Global site tag (gtag.js) - Google Analytics