使用FTPS时需要打开哪些防火墙端口?


33

我需要访问供应商站点上的FTPS服务器(vsftpd)。供应商在ftps服务器前面有一个防火墙。我的FTPS客户端前有防火墙。

我了解需要打开端口990、991和989,以控制流量。

我有一些问题:

  1. 从供应商的防火墙角度来看,是否应该为入站和出站流量打开这些端口?
  2. DATA通道的端口呢?
  3. 我必须打开所有大于1000的端口吗?
  4. 我应该同时对入站和出站流量执行此操作吗?

Answers:


19

我对基于SSL的FTP(ftps)的理解是,它不适用于防火墙和NAT。在普通的FTP会话中,防火墙会读取有关数据连接的信息,并进行NAT修改,以使防火墙动态打开所需的端口。如果该信息由SSL保护,则防火墙无法读取或更改它。

使用SFTP或scp,使网络管理员的工作更加轻松-一切都在服务器的端口22上进行,并且事务遵循正常的客户端/服务器模型。

未提及的一件事是您的防火墙是否正在执行NAT,以及它是静态NAT还是动态NAT。如果您的客户端计算机具有静态地址或正在被静态NAT,则可能不需要进行任何防火墙更改,前提是您允许所有出站流量,并且服务器仅在被动模式(PASV)下运行。

若要确切知道您需要打开哪些端口,您将需要:

a)与供应商联系以获取有关其系统配置方式的详细信息。

b)使用协议分析器(例如tcpdump或wireshark)从防火墙外部和防火墙内部查看流量

您需要找出哪个端口是控制连接。您列出了3,这对我来说似乎很奇怪。假设服务器仅在PASV(被动)模式下工作,则需要弄清楚如何将服务器配置为分配的DATA端口。他们是否将DATA通道锁定到单个入站端口?他们是否将DATA通道锁定在较小范围或端口上?

有了这些答案,您就可以开始配置防火墙了。


3
被动模式FTPS将在端口号1024上使用控制端口,因此与非被动FTPS相比,它与防火墙配合使用会更好。客户端告诉端口21要打开哪个上限端口,因此您可以配置客户端说“控制在端口2000或2001”,然后服务器将打开出站端口2000或2001。大多数FTP客户端支持定义特定范围设置“控制”端口,这使防火墙定义变得容易。
djangofan

27

我相信990左右的端口用于隐式SSL,这是做FTP / SSL的一种旧的非标准方式。如今,“正确”的方式是显式SSL,这意味着您仍然在端口21上进行连接,然后在发送商品之前协商SSL。要支持通过防火墙的连接,您需要使用PASV模式并硬设置要使用的数据端口。

我相信您要支持的每个数据连接至少需要一个端口。如果只有您,则可能只打开几个额外的端口就可以了。我专门使用21000-21010。

在vsftpd.conf中,我有这两行(以及其他所有支持SSL的内容):

pasv_min_port=21000

pasv_max_port=21010

在防火墙上,我有一个公共静态IP,它具有到内部IP的一对一/静态NAT,并且仅打开了tcp端口21、21000-21010。


10

我知道这是一个非常古老的线程。

请注意,SFTP与FTPS完全不同。(SSH与SSL)

FTPS有两种工作方式。显式和隐式。显式安全性较差,因为在初始握手后,数据传输过程中会跳过加密[如果维护数据加密,则可以在服务器端使用PROT P进行配置],而隐式也将在握手后保留数据的加密。默认的Explicit FTPS端口为21。默认的Implicit端口为990(握手后,如果配置不同,它将自动切换到989进行数据传输)。虽然通常将端口21接受为EXPLICIT FTPS,将990接受为IMPLICIT FTPS,但实际上,您将配置的任何端口(990/989除外)都将导致EXPLICIT FTPS,而只有990/989被接受为IMPLICIT FTPS。

因此,要回答您的问题:-根据FTPS服务器配置,您需要打开端口21或990/989。但是,请确保与FTPS服务器管理员联系,并要求提供指导。另外,请记住,对于被动模式,与所有其他FTP软件一样,您必须打开其他端口(TCP / UDP),通常范围在64000-65000之间。


2

基本上ftps几乎没有用,因为您必须向防火墙管理员提出令人尴尬的请求。建议将端口限制为10个。更重要的是,它变得可悲。

sftp在理论上要好得多。但是您需要一台可行的sftp服务器,例如将客户端限制在其自己的主目录中的服务器。

根据应用程序,考虑使用HTTPS。文件上传确实很简单,显然下载也是如此。如果您仍在编写FTP脚本,则编写HTTPS文件上载脚本可能会更加容易。

自动化的FTP是设计问题的标志。当我与大约十二家供应商打交道时,我注意到了这一点,他们“需要”我工作过的地方来进行自动FTP(对于非常重要的事情),并且当数十名客户在同一家商店这样做时(针对我目睹了20种不同的用法)。说服大多数应用程序人员使用HTTPS很容易(通常在提要时,他们说:“等等,我们没有理由不只是让他们从已经向其提供数据的Web服务器上通过HTTPS获得它吗?” ),但有些人给出的回应是:“好吧,我们已经有了这些脚本,这些脚本似乎可以正常工作,而且我们团队中没有人真正擅长脚本编写,因此我们无法真正进行任何更改”(一个由5至10名程序员组成的团队,


1

如果尚未安装,则供应商可以为DATA连接端口配置狭窄的端口范围。然后,您可以为需要这种访问权限的主机在端部打开相同的范围。应该使用PASV模式。


-1

端口22是标准端口,因为UNIX上的SSH守护程序具有一个SFTP模块,您可以启用该模块来基本上制作一个显式SFTP服务器。如果要使用Filezilla运行隐式FTP服务器,则可以在所需的任何端口上运行它,但是有一个问题:如果使用FileZilla客户端,则需要将ftp站点URL指定为ftps://mysite.com:8086。而不是将端口放在FileZilla客户端提供的单独的端口字段中。

对于显式选项,您只需要一个端口:22.对于隐式选项,您只需要为控制端口:8086(在内部转发到filezilla服务器上的端口21)打开防火墙。


6
该问题询问的是FTPS,而不是SFTP。
Michael Lang

-7

如果ftps与sftp相同,则仅需要能够访问供应商站点上的端口22。

在您结束时,你应该配置防火墙以允许端口22外向,相关的传入流量。这将允许端口22上的初始传出连接相关的任何传入端口上的通信。


11
SFTP与ftps(codeguru.com/csharp/.net/net_general/internet/article.php/…)不同。SFTP是SSH使用的文件传输协议。FTPS是具有SSL的FTP,FTPS在新的随机端口上启动新的DATA连接,这使得很难在防火墙后面进行部署,但是在这种情况下我无法删除防火墙。

2
那不好意思了。不过,如果其他人有同样的困惑,我将保留此职位。
布伦特

这是一个非常普遍的困惑。从防火墙的角度来看,sftp是更易于允许的方式,除了它是基于旨在用于登录访问的协议构建的。对独立安全组的疏忽允许不进行大量独立验证。系统管理员很难为不受信任的客户端找到/配置合理的sftp服务器。关于sftp或ftps的任何讨论都必须提及其他协议,因为混淆很常见。
carlito
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.