Answers:
我对基于SSL的FTP(ftps)的理解是,它不适用于防火墙和NAT。在普通的FTP会话中,防火墙会读取有关数据连接的信息,并进行NAT修改,以使防火墙动态打开所需的端口。如果该信息由SSL保护,则防火墙无法读取或更改它。
使用SFTP或scp,使网络管理员的工作更加轻松-一切都在服务器的端口22上进行,并且事务遵循正常的客户端/服务器模型。
未提及的一件事是您的防火墙是否正在执行NAT,以及它是静态NAT还是动态NAT。如果您的客户端计算机具有静态地址或正在被静态NAT,则可能不需要进行任何防火墙更改,前提是您允许所有出站流量,并且服务器仅在被动模式(PASV)下运行。
若要确切知道您需要打开哪些端口,您将需要:
a)与供应商联系以获取有关其系统配置方式的详细信息。
b)使用协议分析器(例如tcpdump或wireshark)从防火墙外部和防火墙内部查看流量
您需要找出哪个端口是控制连接。您列出了3,这对我来说似乎很奇怪。假设服务器仅在PASV(被动)模式下工作,则需要弄清楚如何将服务器配置为分配的DATA端口。他们是否将DATA通道锁定到单个入站端口?他们是否将DATA通道锁定在较小范围或端口上?
有了这些答案,您就可以开始配置防火墙了。
我相信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。
我知道这是一个非常古老的线程。
请注意,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之间。
基本上ftps几乎没有用,因为您必须向防火墙管理员提出令人尴尬的请求。建议将端口限制为10个。更重要的是,它变得可悲。
sftp在理论上要好得多。但是您需要一台可行的sftp服务器,例如将客户端限制在其自己的主目录中的服务器。
根据应用程序,考虑使用HTTPS。文件上传确实很简单,显然下载也是如此。如果您仍在编写FTP脚本,则编写HTTPS文件上载脚本可能会更加容易。
自动化的FTP是设计问题的标志。当我与大约十二家供应商打交道时,我注意到了这一点,他们“需要”我工作过的地方来进行自动FTP(对于非常重要的事情),并且当数十名客户在同一家商店这样做时(针对我目睹了20种不同的用法)。说服大多数应用程序人员使用HTTPS很容易(通常在提要时,他们说:“等等,我们没有理由不只是让他们从已经向其提供数据的Web服务器上通过HTTPS获得它吗?” ),但有些人给出的回应是:“好吧,我们已经有了这些脚本,这些脚本似乎可以正常工作,而且我们团队中没有人真正擅长脚本编写,因此我们无法真正进行任何更改”(一个由5至10名程序员组成的团队,
端口22是标准端口,因为UNIX上的SSH守护程序具有一个SFTP模块,您可以启用该模块来基本上制作一个显式SFTP服务器。如果要使用Filezilla运行隐式FTP服务器,则可以在所需的任何端口上运行它,但是有一个问题:如果使用FileZilla客户端,则需要将ftp站点URL指定为ftps://mysite.com:8086。而不是将端口放在FileZilla客户端提供的单独的端口字段中。
对于显式选项,您只需要一个端口:22.对于隐式选项,您只需要为控制端口:8086(在内部转发到filezilla服务器上的端口21)打开防火墙。
如果ftps与sftp相同,则仅需要能够访问供应商站点上的端口22。
在您结束时,你应该配置防火墙以允许端口22外向,相关的传入流量。这将允许与端口22上的初始传出连接相关的任何传入端口上的通信。