`
085567
  • 浏览: 217421 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

FTP连接问题相关

 
阅读更多

 

425 Security: Bad IP connecting.错误应对

 

 

ftp软件报此错误,估计是在连接中变换了ip

编辑vsftp配置文档,位置:

    /etc/vsftpd/vsftpd.conf

在最后一行添加

    pasv_promiscuous = YES

 

关于此参数的说明:

引用:
如果你想关闭被动模式安全检查(这个安全检查能确保数据连接源于同一个IP地址)的话,设为YES。确定后再启用它(注:原话是:只有你清楚你在做什么时才启用它!)
合理的用法是:在一些安全隧道配置环境下,或者更好地支持FXP时(才启用它)。
默认值:NO

 

FTP主被动连接

FTP是仅基于TCP的服务,不支持UDP。与

众不同的是FTP使用2个端口,一个数据端口和一个命令端口(也可叫做控制端口)。通常来说这两个端口是21(命令端口)和20(数据端口)。但FTP 工作方式的不同,数据端口并不总是20。这就是主动与被动FTP的最大不同之处。

(一)主动FTP
主动方式的FTP是这样的:客户端从一个任意的非特权端口N(N>1024)连接到FTP服务器的命令端口,也就是21端口。然后客户端开始监听端 口N+1,并发送FTP命令“port N+1”到FTP服务器。接着服务器会从它自己的数据端口(20)连接到客户端指定的数据端口(N+1)。
针对FTP服务器前面的防火墙来说,必须允许以下通讯才能支持主动方式FTP:

1. 任何大于1024的端口到FTP服务器的21端口。(客户端初始化的连接)
2. FTP服务器的21端口到大于1024的端口。 (服务器响应客户端的控制端口)
3. FTP服务器的20端口到大于1024的端口。(服务器端初始化数据连接到客户端的数据端口)
4. 大于1024端口到FTP服务器的20端口(客户端发送ACK响应到服务器的数据端口)

(二)被动FTP

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

在被动方式FTP中,命令连接和数据连接都由客户端发起,这样就可以解决从服务器到客户端的数据端口的入方向连接被防火墙过滤掉的问题。

当开启一个 FTP连接时,客户端打开两个任意的非特权本地端口(N > 1024和N+1)。第一个端口连接服务器的21端口,但与主动方式的FTP不同,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交 PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(P > 1024),并发送PORT P命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。
对于服务器端的防火墙来说,必须允许下面的通讯才能支持被动方式的FTP:

1. 从任何大于1024的端口到服务器的21端口 (客户端初始化的连接)
2. 服务器的21端口到任何大于1024的端口 (服务器响应到客户端的控制端口的连接)
3. 从任何大于1024端口到服务器的大于1024端口 (客户端初始化数据连接到服务器指定的任意端口)

4. 服务器的大于1024端口到远程的大于1024的端口(服务器发送ACK响应和数据到客户端的数据端口)


以上关于主动和被动FTP的解释,可以简单概括为以下两点:

主动FTP:

命令连接:客户端 >1024端口 -> 服务器 21端口

数据连接:客户端 >1024端口 <- 服务器 20端口

被动FTP:

命令连接:客户端 >1024端口 -> 服务器 21端口

数据连接:客户端 >1024端口 -> 服务器 >1024端口

下面是主动与被动FTP优缺点的简要总结:

主动FTP对FTP服务器的管理有利,但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的 防火墙 阻塞掉。被动FTP对FTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口 很有可能被服务器端的防火墙阻塞掉。

幸运的是,有折衷的办法。既然FTP服务器的管理员需要他们的服务器有最多的客户连接,那么必须得支持被动FTP。我们可以通过为FTP服务器指定 一个有 限的端口范围来减小服务器高位端口的暴露。这样,不在这个范围的任何端口会被服务器的防火墙阻塞。虽然这没有消除所有针对服务器的危险,但它大大减少了危 险。

更多相关资料:

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

IE 在 internet 选项 - 高级 中可以选择 passive(被动)方式

via http://susis.ust.hk/tut011.php

分享到:
评论

相关推荐

    java ftp连接池

    Java FTP连接池是一种用于管理FTP(文件传输协议)连接的资源池,它的主要目标是提高应用程序的性能和效率。在传统的FTP操作中,每次需要连接到FTP服务器时都会创建一个新的连接,这会消耗大量时间和系统资源。而...

    ftp连接器,经典的ftp操作

    这个"ftp连接器"应该是提供了一个编程接口或工具,使得开发者能够轻松地实现FTP的基本操作,如连接、上传、下载等。接下来,我们将深入探讨FTP的相关知识点。 1. FTP协议基础: FTP基于TCP/IP协议族,它定义了两台...

    springboot集成ftp连接池工具

    本文将深入探讨如何在Spring Boot项目中集成FTP连接池,以解决并发用户上传附件时的性能问题。 首先,我们需要引入相关的依赖。在Spring Boot项目中,可以使用Apache Commons Net库来实现FTP功能,并使用Apache ...

    ftp连接池实例

    其实ftp连接池跟数据库连接池的原理是差不多的,不同的是ftp连接池有个连接时间的限制,如果你没设置的话,它的默认连接服务器的时间是0,所以我们要合理的设置它的服务器的时间,ftp.setConnectTimeout(5000);...

    SpringBoot2.2+commons-pool2实现多Ftp连接池完整项目,开箱即用,经过长期生产使用稳定可靠

    使用JDK1.8、SpringBoot2.2.10.RELEASE、lombok1.18.8、guava23.0、hutool5.3.10、commons-pool2 2.7.0、tika1.22等实现多Ftp连接池实现,通过守护线程实现连接池内连接可用性校验,配置最大、最小连接个数防止Ftp...

    C# ftp连接到服务器

    下面将详细介绍如何在C#中实现FTP连接到服务器以及相关的知识点。 1. **创建FtpWebRequest对象**: 首先,我们需要创建一个FtpWebRequest对象,它代表FTP请求。通过传递URL(包括服务器地址和端口号)到...

    Windows Server 2012 R2 服务器建立FTP访问,及无法与服务器建立连接相关问题解决.docx

    Windows Server 2012 R2 服务器建立 FTP 访问及无法与服务器建立连接相关问题解决 FTP(File Transfer Protocol)是一种常用的文件传输协议,用于在网络中传输文件。Windows Server 2012 R2 提供了一种简单的方式来...

    FTP连接抓包分析.docx

    FTP 连接抓包分析 FTP(File Transfer Protocol,文件传输协议)是一种用于在网络上传输文件的协议。它是应用层协议,使用 TCP 作为传输层协议。FTP 的主要目标是提供一种高效、可靠的文件传输方式。 FTP 连接过程...

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

    2、控制面板 --- Windows防火墙 --- 高级 --- 选中"本地连接**”(或者无线网络连接,和使用何种方式连接路由器共享上网有关)--- 设置 --- 钩选"FTP服务器"和“HTTP服务”。开放端口。 3、如果你还使用了路由器,就...

    FTP连接与密码明文抓取的实验内容(win2003).pdf

    FTP连接与密码明文抓取的实验内容(win2003).pdf 学习资料 复习资料 教学资源

    winfrom连接FTP上传文件

    下面是一个简单的FTP连接和上传文件的步骤: 1. **建立FTP连接**:创建一个`FtpWebRequest`对象,设置其`Method`属性为`WebMethod.UploadFile`,并指定FTP服务器的URL、用户名和密码。 ```csharp FtpWebRequest ...

    FTP协议父子连接

    FTP协议父子连接

    连接FTP服务器的工具

    小巧,方便而且实用 FTP连接器,必备的工具!

    FTP连接工具

    FTP连接工具

    ftp连接Windows和Linux实现文件互传FTP.zip

    ftp连接Windows和Linux实现文件互传。同大多数Internet服务一样,FTP也是一个客户/服务器系统。用户通过一个客户机程序连接至在远程计算机上运行的服务器程序。依照 FTP 协议提供服务,进行文件传送的计算机就是 FTP...

    C#-ftp连接示例源码

    本文将详细介绍如何在C#中实现FTP连接,并提供相关的示例源码。 首先,为了在C#中实现FTP连接,我们需要使用System.Net命名空间中的FtpWebRequest和FtpWebResponse类。这两个类提供了与FTP服务器交互的基本功能,...

    java中的ftp连接与获取.rar_ftp java_java ftp_连接ftp

    本文将深入探讨Java中实现FTP连接的基本步骤和关键知识点。 首先,Java提供了一个内置的`java.net.Socket`类,可以用来创建网络连接,但FTP协议的复杂性使得直接使用Socket进行FTP操作并不方便。因此,Java社区开发...

    FTP连接工具 FillZilla

    FillZilla是一款功能强大的FTP(File Transfer Protocol)连接工具,专为用户提供了高效且便捷的文件上传和下载服务。...它的易用性和强大的功能使得它在同类软件中脱颖而出,是许多用户首选的FTP连接工具。

    shell ftp 连接 linux 等

    shell 工具,ftp工具,22端口连接linux

Global site tag (gtag.js) - Google Analytics