我们有几个 Web 应用程序(B2B、B2C 电子商务),开发人员可以访问这些应用程序来上传文件。
我需要确保 FTP 部分非常安全。
最好的方法是什么?
目前,我有:
- 更改了端口号,以及
- 为上传设置静态 IP(仅限我们的本地 IP)
这足以使 FTP 访问安全吗?
我们有几个 Web 应用程序(B2B、B2C 电子商务),开发人员可以访问这些应用程序来上传文件。
我需要确保 FTP 部分非常安全。
最好的方法是什么?
目前,我有:
这足以使 FTP 访问安全吗?
尽管@mahbubut-r-aaman 顺便提到了它,但我想我会扩展一下关于 SSH 的内容。我要说的保护 FTP 的答案是不要使用 FTP。原因是它(默认情况下)以明文形式发送用户名和密码,这不被认为是一种非常安全的方法。
相反,您可以查看 SFTP(使用 SSH 协议)或使用带有 SSL 的 FTP 协议进行加密的 FTP(S)。
此外,我建议查看类似fail2ban的解决方案,以帮助阻止密码猜测尝试。
更改它侦听的端口有助于避免随机攻击日志中的噪音,但您不应该依赖它。
如果可行的话,锁定对特定源 IP 地址的访问是一个好主意,因为它会限制谁可以尝试访问该站点。
标准的 FTP 协议是不安全的。网络上的任何人(所谓的“中间人”,可以读取和/或修改连接上的数据)都可以看到您发送的内容,并修改发送的数据。典型的 FTP 登录如下所示:
* TCP connection is made to the server
220 Welcome to this FTP server!
USER <username>
331 Password required for <username>
PASS <password>
<a positive or negative response>
如您所见,密码没有任何保护。由于网络上的任何人都可以阅读此内容,因此攻击者可以使用被盗的用户名和密码轻松登录。
有多种方法可以解决此问题。您可以使用 FTP 以外的其他东西,但由于这不是这里的主题,所以我不会讨论这个。FTP 本身知道两个流行的安全版本:FTPS 和 SFTP。您可以按如下方式将它们分开:FTPS 的末尾有一个 S,就像 HTTPS 一样。事实上,它的工作方式与 HTTPS 完全相同,后者是通过 SSL/TLS 协议实现的。SFTP,前缀为 S,使用 SSH 连接,在 Linux 服务器上比较流行。
在这篇文章中,我将重点介绍 FTPS。
首先,您积极寻求确保这一点是一件好事。很多人根本不在乎!
更改端口号
这有两个方面的帮助,尽管两者都不值得。
可以从固定(我们的本地)IP 完成上传
这会有所帮助,但也会限制您。如果您在家并注意到您的网站存在巨大的安全漏洞,则需要开车过去。使用合适的密码,不需要限制 IP,特别是如果您的服务器支持在多次无效登录尝试后自动禁止。
您可以设置一个 VPN 来避免开车过来,但如果您可以简单地选择一个强 FTP 密码,那又有什么意义呢?
由于您没有提到它,我假设您对任何操作系统可用的任何 FTP 客户端和服务器实现开放。
虽然我没有测试过很多 FTP 服务器,但FileZilla Server非常适合我的目的,而且我想它适用于任何小型组织。特点包括:
如果您使用的是 Linux 服务器,您可以寻找具有类似选项的 FTP 服务器。到目前为止,要在服务器中寻找的最重要的功能是 FTPS 或 SFTP,以及强制执行此功能的可能性,这样任何人都不会在没有加密的情况下意外连接。除此之外,自动禁止和日志记录非常重要。
然后对于客户端,我再次认为 FileZilla 是一个非常好的选择。
以下步骤将帮助您保护 FTP 访问
编辑 :
编辑:实施示例
编辑:我喜欢@Rory McCune 的回答。很好很好的解释。
如果您可以查看 SFTP(使用 SSH 协议)或使用带有 SSL 的 FTP 协议进行加密的 FTP(S),而不是使用 FTP,那就更好了。
fail2ban是一个很好的解决方案,可以帮助阻止密码猜测尝试。
更改它侦听的端口有助于避免随机攻击日志中的噪音。
编辑:我更喜欢@Rook 的评论
don't use ftp! Your password and your code in in plain text!