![我有一个 FTP 服务器,需要打开端口 21,如何保证它的安全?](https://linux22.com/image/1277260/%E6%88%91%E6%9C%89%E4%B8%80%E4%B8%AA%20FTP%20%E6%9C%8D%E5%8A%A1%E5%99%A8%EF%BC%8C%E9%9C%80%E8%A6%81%E6%89%93%E5%BC%80%E7%AB%AF%E5%8F%A3%2021%EF%BC%8C%E5%A6%82%E4%BD%95%E4%BF%9D%E8%AF%81%E5%AE%83%E7%9A%84%E5%AE%89%E5%85%A8%EF%BC%9F.png)
我很疑惑,因为我需要路由器和防火墙上的 21 端口都打开才能正常工作,但这样一来,似乎很容易受到攻击。有什么方法可以保证安全吗?幸运的是,我的路由器上的 21 端口已打开仅有的拥有 ftp 服务器的计算机,因此它不会危及我的整个网络,只会危及 ftp 服务器。我使用的是 Windows XP,因此我更加担心,因为我确信针对 XP 的攻击更多。
答案1
FTP 存在安全风险,因为它以纯文本形式传输登录信息(包括密码),因此您需要对其进行加密。如果您需要专门使用 FTP,那么 OpenVPN 可以很好地将其包装在完全加密的流中:
OpenVPN(免费且开源)
http://www.openvpn.net/index.php/open-source.html
您的服务器和所有需要使用 FTP 服务器的客户端都必须安装 OpenVPN。
当然,您可能会发现使用更安全的 FTP 版本之一(称为 SFTP 或 FTPS)会更方便,因为许多 FTP 客户端都内置了对此的支持。一个非常好的版本是 FileZilla,它提供完整且独立的客户端和服务器应用程序,并符合相关的 RFC:
FileZilla(免费、开源)
http://www.filezilla-project.org/
答案2
答案3
FTP 实际上需要两个端口,21 是主控制端口,20 用于数据。
FTP 是一种奇怪的协议,它是在互联网时代早期创建的,当时还没有防火墙和安全的概念。因此,按照设计,它不适合防火墙。
ftp 服务器在端口 21 上侦听来自客户端的连接。但数据通过另一个端口传输。在“传统”ftp 中,服务器将从端口 20 打开连接服务器到客户端上的某个临时端口。现在你无法这样做,因为从服务器到客户端的连接会被防火墙阻止,或者由于客户端 NAT 而不可用。
在被动 FTP 中,服务器在某个端口上创建一个新的监听套接字,供客户端连接。现在,您正在尝试对某个动态变化的端口进行防火墙保护。
并且正如其他人提到的那样,密码是明文的,我强烈建议使用 http/https。这样更干净,除非你真的需要 ftp。在这种情况下,我只会将我愿意使用匿名 ftp 传输的内容放在其中。