FTP(File Transfer Protocol,文件传输服务)提供在Internet上的任意两台计算机之间相互进行的文件传输。只要双方主机都支持FTP协议,就可以利用FTP来进行文件传输。
工作原理
FTP服务是客户/服务器模式,用户通过客户机程序连接远程计算机上运行的服务器程序。FTP协议需要两个端口,一个作为控制连接端口(端口号为21),用于发送指令给服务器以及等待服务器响应;另一个作为数据传输端口(端口号为20),用于建立数据通道。
FTP服务具体过程如下:
- 客户端向服务器发出连接请求,同时客户端系统动态打开一个大于1024的端口等候服务器连接。
- 若FTP服务器在端口21侦听到该请求,则在客户端1031端口和服务器的21端口之间建立起一个FTP会话连接。
- 需要传输数据时,FTP客户端再动态打开一个大于1024的端口,连接到服务器的20端口,并在这两个端口之间进行数据的传输。
- 传输完毕后,这两个端口会自动关闭。
匿名用户
FTP服务要求先登录服务器,再进行文件传输,这对于很多公开提供软件下载的服务器来说十分不便。匿名用户访问就是在这样的环境中诞生的,通过使用一个公用的用户名Anonymous,密码不限的管理策略(一般使用用户的邮箱作为密码即可),让任何用户都可以很方便地从这些服务器上下载软件。匿名文件传输使用户以匿名身份与远程主机建立起连接,并被允许从远程主机上拷贝文件。
FTP服务的连接模式
主动模式
FTP客户端会随机开启一个大于1024的端口N,并和服务器的21号端口建立连接,然后开放N+1号端口进行监听,同时向服务器发出PORT 1026命令(PORT命令包括客户端用什么端口接收数据)。服务器端在传送数据的时候,通过自己的TCP 20端口发送数据,因此FTP必须和客户端建立一个新的连接用于数据传输。
被动模式
在建立控制通道的时候和主动模式类似,只是向服务器发送的命令是PASV,通知服务器之间处于被动模式。服务器收到命令后,会开放一个大于1024的端口P进行监听,然后用PORT P命令通知客户端,自己的数据端口是1521。客户端收到命令后,会通过1026号端口连接服务器的端口1521,然后在两个端口之间进行数据传输。
主动模式的FTP是服务器主动连接客户端的数据端口,被动模式的FTP是服务器被动地等待客户端连接自己的数据端口。
流行FTP服务器软件介绍
FileZilla
FileZilla是一种免费的FTP客户端以及服务器端开放源代码程序,具有多种平台的软件包,可以在Windows,Linux和macOS平台上运行。服务器和客户端都支持FTP和FTPS(FTP over SSL/TLS),而客户端还可以连接到SFTP服务器。
特点
- 跨平台,在Windows,Linux,Mac OS X和其他平台下运行more;
- 多种可用的语言(包含中文);
- 多标签用户界面;
- 功能强大的站点管理器(Site Manager)和传输队列管理;
- 上传下载速度限制,并可以限定某个特定的时间段的速度;
- 支持虚拟目录,可以映射不同的盘符的文件到根目录下。
其官网为:FileZilla - The free FTP solution (filezilla-project.org)
ProFTPd
ProFTPd是一套可配置性强的开放源代码的FTP服务器软件,名称最后的d字是因为在Linux中是用daemon来称呼。ProFTPd与Apache的配置方式类似,因此十分容易配置和管理。
ProFTPd亦开发了有图形用户界面的FTP服务器软件称为gProFTPd。
特点
- 可设定多个虚拟FTP服务器,匿名FTP服务更是十分容易;
- 单配置文档,容易配置,其配置指示和apache的有类似之处;
- 基于单个目录的.ftpaccess配置文档,类似于Apache的.htaccess文档;
- 能够配置为从inetd启动,或是单独FTP服务器两种运行方式;
- 匿名FTP的根目录无需任何特别的目录结构,或系统程式或其他系统文档;
- 以非root身份运行以及不执行任何外部程式,从而减少了安全隐患;
- 能够根据文档属主情况或UNIX风格的访问控制来隐藏文档或目录;
- 支持Shadow密码,包括支持密码过期机制;
- 强大的Log功能,支持utmp/wtmp及Wu-ftpd格式的记录标准,并支持扩展功能的日志记录。
- 支持Shadow密码,包括支持密码过期机制;
- 能够根据文档属主情况或UNIX风格的访问控制来隐藏文档或目录;
- 以非root身份运行以及不执行任何外部程式,从而减少了安全隐患;
- 匿名FTP的根目录无需任何特别的目录结构,或系统程式或其他系统文档;
- 能够配置为从inetd启动,或是单独FTP服务器两种运行方式;
- 基于单个目录的.ftpaccess配置文档,类似于Apache的.htaccess文档;
- 单配置文档,容易配置,其配置指示和apache的有类似之处;
其官网为:The ProFTPD Project: Home
vsFTPd
vsFTPd的最初发展理念是为了建构一个安全为主的 FTP 服务器,针对操作系统的程序的权限 (privilege) 概念来设计,具有很多独有的特性,有非常高的安全性需求、带宽限制、良好的可伸缩性、创建虚拟用户的可能性、IPv6支持、中等偏上的性能、分配虚拟IP的可能性等。
特点
- 匿名服务设置十分方便;
- 匿名FTP的根目录不需要任何特殊的目录结构,或系统程序或其它的系统文件;
- 不执行任何外部程序,从而减少了安全隐患;
- 支持虚拟用户,并且每个虚拟用户可以具有独立的属性配置;
- 可以设置从inetd中启动,或者独立的FTP服务器两种运行方式;
- 支持两种认证方式(PAP或xinetd/ tcp_wrappers);
- 支持带宽限制。
PureFTPd
PureFTPd 是一款专注于程序健壮和软件安全的免费FTP服务器软件。
特点
- 轻量级的 FTP 服务器软件,它具有优化的代码和高效的处理机制,可以提供快速的文件传输和响应速度;
- 采用了多种安全措施来保护 FTP 服务器,包括 chroot 限制、用户权限控制、密码加密等;
- 支持多种扩展模块,可以满足不同用户的需求;
- 提供了一个 Web 管理界面,可以方便地管理 FTP 服务器;
- 允许创建虚拟用户,并可以为每个用户设置独立的目录和权限。这样可以灵活地控制用户的访问权限和文件操作权限,实现更精细的权限管理。
其官网为:Pure-FTPd :: Pure-FTPd (pureftpd.org)