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

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

我知道990,991和989的端口需要打开控制stream量。

我有一些疑问:

  1. 从供应商的防火墙angular度来看,这些端口是否应该打开入站和出站stream量?
  2. 数据通道的端口怎么样?
  3. 我必须打开1000以上的所有端口吗?
  4. 我应该为入站和出站stream量做这件事吗?

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

使用SFTP或scp,使networkingpipe理员的工作变得更容易 – 所有事情都发生在服务器的端口22上,事务遵循正常的客户机/服务器模式。

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

要准确知道您需要打开哪些端口,您需要:

a)与供应商交谈以获得关于如何configuration其系统的细节。

b)使用协议分析器(例如tcpdump或wireshark)查看来自防火墙之外和防火墙之内的stream量

你需要找出哪个端口是控制连接。 你列出3,这对我来说似乎很奇怪。 假设服务器只能在PASV(被动)模式下工作,您需要弄清楚服务器如何configuration为分配DATA端口。 他们是否将数据通道locking到一个入站端口? 他们是否将数据通道locking在一个小范围或端口?

有了这些答案,你可以开始configuration你的防火墙。

我相信990左右的端口是隐式的SSL,这是做FTP / SSL的老式非标准方式。 这些日子的“正确”方式是明确的SSL,这意味着你仍然连接端口21,然后在发送你的好东西之前谈判SSL。 要支持通过防火墙的连接,您需要使用PASV模式并硬设置要使用的数据端口。

我相信你需要每个数据连接至less一个端口,你想支持。 如果只是你,你可能没有问题,只打开一些额外的端口。 特别对我来说,我使用21000-21010。

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

pasv_min_port=21000

pasv_max_port=21010

在我的防火墙上,我有一个公用的静态IP,内部IP有一对一/静态NAT,只有TCP端口21,21000-21010打开。

我知道这是一个非常老的线程,但..

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

FTPS崇拜2路。 显式和隐式。 显式的安全性较低,因为在数据传输过程中初始握手跳过encryption[如果数据encryption保持可以在服务器端用PROT Pconfiguration],而Implicit在握手之后也保持数据的encryption。 默认的显式FTPS端口是21.默认的隐式端口是990(在握手之后,它将自动切换到989进行数据传输,如果configuration不同)。 虽然端口21通常被认为是EXPLICIT FTPS而990被认为是IMPLICIT FTPS,但是实际上无论哪个端口,除了990/989,都会导致EXPLICIT FTPS,而只有990/989被认为是IMPLICIT FTPS。

所以,要回答你的问题: – 根据FTPS服务器的configuration,你需要打开端口21或990/989。 但是,可以肯定的是,您应该联系FTPS服务器pipe理员并询问路线。 另外,请记住,对于被动模式,与其他所有FTP软件一样,您必须打开其他端口(TCP / UDP),通常是64000-65000范围内的某个端口。

基本上ftps几乎是无用的,因为你必须向防火墙pipe理员发出令人尴尬的请求。 将端口限制为10的build议是很好的。 更多的是,它变得可悲。

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

根据应用程序,考虑HTTPS。 file upload非常简单,下载显然也是如此。 如果您正在编写FTP脚本,那么完成脚本HTTPSfile upload可能会更容易一些。

自动FTP是一个devise问题的标志。 我在处理大约十几个供应商的时候注意到了这个问题,这些供应商需要一个我自己做自动化FTP(对于非常重要的事情)的地方,而且在制造几十个客户的时候,我亲眼目睹了20个不同的用途)。 说服大多数应用程序用户使用HTTPS很容易(通常在提到的时候,他们说:“等等,我们没有理由不让他们通过Web服务器上的HTTPS获得我们已经为他们提供的数据? ),除了一些回答如“好,我们已经有这些脚本似乎工作,没有人在我们的团队是非常好的脚本,所以我们不能真正做出任何改变”(一个由5-10名程序员组成的团队,假装不明白他们可以用自己select的语言来写,因为他们不知道如何从头开始编写一个简单的程序)。

供应商可能能够为DATA连接端口configuration一个窄端口范围,如果它们还没有的话。 然后,您可以打开相同的范围,为需要这种访问的主机。 应该使用PASV模式。

端口22是标准的,因为在UNIX上的SSH守护进程有一个SFTP模块,你可以启用基本上做一个明确的SFTP服务器。 如果你想用Filezilla运行一个隐含的FTP服务器,那么你可以在你想要的任何端口上运行它,但有一个问题:如果你使用FileZilla客户端,你需要指定ftp站点URL为ftps://mysite.com:8086而不是将端口放在FileZilla客户端提供的独立端口字段中。

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

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

在您的最后,您应该configuration您的防火墙,以允许端口22传出和相关的传入stream量 。 这将允许端口22上的初始传出连接相关的任何传入端口上的通信。