为什么FTP的被动式更安全

认识FTP协议

在公司的文件共享用到较多的就是使用FTP协议共享文件, 平常使用手机共享文件到电脑, 往往也是FTP协议

FTP 使用一个端口用于发送命令,另一个用于发送和接收数据。FTP 服务器使用的标准端口号为 21,仅用于发送命令。由于 21 端口专门用于发送命令,因此该端口被称为命令端口。例如,要获取 FTP 服务器上存在的文件夹和文件的列表,FTP 客户端会发出“LIST”命令。然后,FTP 服务器将所有文件夹和文件的列表发送回 FTP 客户端。那么用于发送和接收数据的互联网连接呢?用于传输数据的端口称为数据端口。数据端口的数量将根据连接的“模式”而有所不同。(有关主动和被动模式,请参见下文。)

客户端决定是主动连接模式或被动连接模式

  • 主动模式

    在这种模式下,用户从 FTP 客户端的一个随机端口(随机端口 x(大于1024))连接到服务器的 21 端口。

    client发送PORT命令,告诉服务器它应该连接到客户端的哪个端口,即(随机端口 1027)。

    服务器从端口 20 连接到客户端指定的端口,即随机端口 1027。

    一旦建立连接,数据传输就会通过这些客户端和服务器端口进行。

服务器需要发起一个请求连接到客户端. 这样的连接有时候会被客户端的防火墙阻止, 也就是说要使用主动模式,需要关闭防火墙. so很不安全

主动模式

  • 被动模式

    在客户端无法接受连接(例如被防火墙阻止)的情况下,必须使用被动模式。这是最常见的模式,因为现在客户端位于防火墙后面(例如内置的 Windows 防火墙)。

    在这种模式下,用户从 FTP 客户端的一个随机端口(随机端口 1024)连接到服务器的 21 端口。它发送PASV命令,告诉客户端它应该连接到服务器的哪个端口,即(随机端口 2024)以建立连接。

    客户端从随机端口 1027 连接到服务器指定的端口,即随机端口 2024。一旦建立连接,数据传输就会通过这些客户端和服务器端口进行。

被动模式

被动模式下所有的请求都是客户端发起的

FTP的优势

  • 允许传输多个文件和目录
  • 当连接丢失时可以恢复传输
  • 传输文件的大小没有限制
  • 传输比HTTP快

FTP的不足

  • FTP是明文传输,所以在被抓包时,轻松的可以截获数据

linux 中内置的支持FTP软件为vsFTP(Very Secure FTP)

为什么说vsFTP是安全的呢

1进程分离,处理不同任务的进程彼此是独立运行的;

2进程运行时均以最小权限运行;

3多数进程都使用chroot进行了禁锢,防止客户访问非法共享目录

参考链接

https://www.deskshare.com/resources/articles/ftp-how-to.aspx
https://afteracademy.com/blog/what-is-ftp-and-how-does-an-ftp-work
<Linux运维之道>

我的原文在我的公众号cloudEng, 关注我不迷路

posted on 2022-02-26 22:07  joe_HelloWorld  阅读(265)  评论(0编辑  收藏  举报

导航