如何执行安全的FTP连接(对允许安全和不安全的服务器)

我正在devise一个最终用户上传文件到FTP服务器的过程。 关键的要求是确保与服务器的连接是安全的。

我知道许多FTP客户端应用程序可以创build一个安全的FTP连接(例如,FTPES或SFTP – 而且FTP服务器确实支持这些),但是它在客户端是一个可选的设置。 换句话说,我们可以要求人们创build安全的FTP连接,但我们不能强迫他们。

在这里我应该提到FTP服务器属于第三方提供者,如果有服务器设置来强制FTPES或SFTP连接,我们不能得到这些启用。

所以,问题是 – 有没有办法强制安全的FTP连接? 以下是一些猜测:

  1. 也许有一个FTP客户端强制使用安全的FTP连接,我告诉最终用户这是他们唯一可以使用的客户端。 这有点跛脚!

  2. 也许有一个FTP客户端可以从远程服务器(即我所控制的服务器)获取其FTP连接详细信息(url,协议和login),因此我可以指定它们,最终用户永远不会看到它们。

  3. 也许我可以build立某种“2跳”连接,其中用户最初连接到需要安全连接的服务器,但是(透明地向用户)连接实际上被redirect到真实的FTP服务器。

您的第三个想法似乎最有希望:考虑一个FTP代理服务器 。 您的用户使用您设置的连接要求(例如encryption)连接到代理,代理服务器使用您configuration的参数连接到目标服务器。

除非您可以强制执行或审核策略,否则无法让用户关注。 一个安全框架只能和最薄弱的环节一样强大。

这种情况对我来说似乎很陌生 – 你有一个保密的要求,要通过encryption数据stream量来满足,但是你正在和一个不符合这个要求的第三方合作。 也可能需要把pipe理旗杆上的问题也解决了。

一种可能的方法 – build立你自己的服务器,让他们在内部保存东西,然后build立一个脚本把数据镜像到远程站点。 这意味着您要负责在设定的时间内安全地传输数据,而不是将其交给用户(甚至可能为您消除一些麻烦,除非立即需要远程服务器上的数据)。

除非服务器可以设置为只允许安全连接,否则我不知道有什么办法可以确保用户正在做他们应该做的事情,而且你已经说过你不能重新configuration第三方服务器。

这种方法的另外一个好处是你有一种FTP数据的“备份”,可以更快地访问本地数据,而不是通过webbubes来访问它。 有这个“ftp代理”可以节省你的带宽。

如果你想进一步深入,你甚至可以有一个过程,你的服务器有一个脚本,可以由用户触发上传到远程站点,或者有一个cron工作,可以简单地检查每五分钟的file upload目录中的更改将触发上传过程到远程站点。

我认为只有多跳的方法才能真正起作用。

也许你可以防火墙的服务器,以便它不接受标准FTP端口上的连接?

在远离带宽/存储的地方购买虚拟机,并按照Bart的build议进行操作。

(通过sftp我假设你的意思是ssh相关的sftp。)

如果您只允许安全连接到服务器,则可以强制他们使用安全连接。 如果他们没有使用安全的连接,他们不能进入,他们打电话给你,你告诉他们configuration他们的FTP客户端使用安全的连接。 问题解决了。

我假设,特别是因为你指的是第三方的ftp服务器,ftp和sftp服务在各自的默认端口上运行,这是不同的。 你能configuration你的防火墙阻止到该服务器的ftp连接,但允许sftp / ssh传输?