导读

FTP,是一种用于将文件从某一计算机传输至另一计算机上的文件传输协议,是一种基于TCP/IP传输的顶层(应用层)的传输协议。

FTP分为 主动模式被动模式 两种传输模式:

  • 主动模式:由客户端发起控制连接请求服务端建立数据传输链路。
  • 被动模式:整个传输过程的 控制请求传输链路 都由客户端控制和建立。

产生 主、被 动传输模式的原因,主要是由于防火墙的存在,使得传输端口是否能成功建立变得不确定。

FTP 传输原理?

前面说了,FTP协议是基于TCP协议进行数据通信的,所以在传输时需要建立会话连接。在计算机的通信当中都需要使用通信端口,FTP也不例外,其中FTP使用的是预留端口中的 20 和 21 这两个知名端口, 20 用于建立数据传输链路,21用于建立控制会话连接。

其完整过程为:

客户端:向系统随机申请一个大于1024的端口 (假设为1055),用此端口向FTP服务器的21端口(默认)申请建立会话连接。

服务器:在21端口侦听到该连接请求后,将用21端口与客户端的1055端口建立一个FTP的控制连接。

此时,整个 FTP 的控制链路已经建立完成,但此时还不能传输数据,需要传输数据,就必须建立特定的数据传输链路。往下看:

传输数据(主动模式):在需要传输数据时,需要新建一条专用的数据传送链路,此时客户端会再次向系统动态申请一个端口(假设1056),接着通过已经建立好的控制链路向FTP服务器发送一个 port 请求,告知服务器“我”(客户端)打开了此端口,请尽快连接到此端口。在服务器收到 port 请求后,立刻通过 20 端口连接到客户端指定的端口(1056)上,与客户端建立数据传送链路,建立成功后双方就可以进行数据的传输了。

数据传输完毕后,双方的数据端口将被释放。客户端与FTP服务器断开连接时,客户端上动态分配的端口都被回收。

FTP 用户有哪些?

FTP 服务器的使用者可以分为3类:

  1. 本地用户: 即ftp服务器上的帐号,它拥有绝对的权限,开放此用户有一定的危险。
  2. 虚拟用户:可以理解为是Guest用户或受限用户,该用户通过授权的方式进行登录,一般只能上传和下载文件,可以设定其可操作的目录范围。
  3. 匿名用户:即ftp服务器上没有该账户,它是通过帐号(anonmous或ftp)和密码(用户email或ftp)进行登录,该账户一般只能进行文件的下载操作。开放此用户同样有危险。

如何安装 FTP 服务器?

安装 ftp 服务器时,需要使用 vsftpd 这个安装包,一般使用常用的安装工具即可快速完成安装,如:

sudo apt-get install vsftpd

验证安装情况,最简单的,查看其帮助信息:

ftp -h

如果返回帮助信息,即可大致认为安装成功。

哪里配置 FTP 服务器?

安装好 ftp 服务器后,其参数都是默认的,如果想实现特定的功能或做一些安全措施,这时就需要修改配置了。修改FTP服务器的配置都在 vsFTPd.conf 这个文件内完成。该文件的目录根据安装的方式稍有差别,一般在:/etc/vsFTPd/ 的目录下。

如何启用匿名账户?

默认匿名账户不启用,下面将演示“启用匿名账户和设定登录时的欢迎消息”。

功能:启用匿名账户,且免密码登录,数据连接中50秒没回应就强制客户端断线,anonymous 超20分钟无操作强制断线。

找到 vsftpd.conf 配置文件,在其内部启用(删除 # 号)相应语句或修改相应的值即可,最终效果如下:

(1)设置配置文件:

local_enable = NO       # 取消本地账户登录

anonymous = YES     # 允许匿名访问
no_anon_password = YES     # 无需密码
data_connection_timeout = 50     # 设置数据连接超时时间
idle_session_timeout = 1200     # 设置客户端无操作时间

(2)添加“欢迎信息”

欢迎信息一般是设置在 /etc/vsftpd/anon_welcome.txt 文件中,需要提示什么信息,只需在文件中声明即可!

(3)设置完成后重启 vsftpd 生效。

/etc/init.d/vsFTPd restart

重启成功后,即可使用 ftp localhost 进行匿名登录。

提示:在开放匿名登录时,应做好相应的安全措施,如:加强对匿名用户的控制、做好访问目录控制、进行传输速率限制.....

设定匿名用户连接数

为了保障ftp服务器的安全、稳定、高效,可以通过配置 vsftpd.conf 文件来实现一系列的限制,如:控制连接数

同样打开 vsftpd.conf 文件,并在文件中将其最大连接数限制的参数 max_client 参数设置为指定数即可,如设定为 20 个。

max_client = 20    # 最大连接用户数

设定匿名用户的上传与下载

同样修改 vsftpd.conf 配置文件,修改其值为如下效果:

anon_upload_enable = YES    # 允许匿名用户上传数据
anon_mkdir_write_enable = YES    # 允许匿名账户创建目录
chown_uploads = YES    # 设置匿名账户的身份

chown_username = root   # 设置匿名账户上传的文件属于 root 账户

最后在终端给 匿名用户上传的目录添加可写权限即可,如:chmod 766 /var/ftp

最后修改:2021 年 04 月 02 日
如果觉得我的文章对你有用,请随意赞赏