好记性不如烂笔头,记录一下博主之前Linux环境下搭建FTP过程。vsftpd(very secure FTP daemon)是Linux操作系统下的一款小巧轻快、安全易用的FTP服务器软件。本文介绍如何在Linux服务器中安装、配置vsftpd,并测试连接FTP服务器。

背景信息

FTP(File Transfer Protocol)是一种文件传输协议,基于客户端/服务器架构,支持以下两种工作模式:

  • 主动模式(PORT):客户端向FTP服务器发送端口信息,由服务器主动连接该端口。

  • 被动模式(PASV):FTP服务器开启并发送端口信息给客户端,由客户端连接该端口,服务器被动接受连接。

FTP支持以下三种认证模式:

  • 匿名用户模式:任何人无需密码验证就可以直接登录FTP服务器。该模式不安全,一般只用来传输不重要的公开文件,不推荐在生产环境中使用。

  • 本地用户模式:通过Linux系统本地用户验证登录权限,相较于匿名用户模式更安全。

  • 虚拟用户模式:通过虚拟用户验证登录权限,虚拟用户只能访问Linux系统为其提供的FTP服务,而不能访问Linux系统的其它资源。该模式相较于其他两种模式更加安全,如果您对服务器的数据有较高的安全性要求,建议在相关专业人员的指导下,自行配置该模式。

本文主要介绍配置简单的匿名用户模式以及较为安全的本地用户模式。

安装与配置vsftpd

1、运行以下命令,安装vsftpd

yum install -y vsftpd

2、运行以下命令,设置FTP服务开机自启动

systemctl enable vsftpd.service

3、运行以下命令,启动FTP服务。

systemctl start vsftpd.service

4、运行以下命令,查看FTP服务的端口号。

netstat -antup | grep ftp

设置FTP服务器访问模式

您可以选择以下任一方式设置FTP服务器,建议您使用更加安全的本地用户模式。

1、匿名访问模式

运行以下命令,修改配置文件/etc/vsftpd/vsftpd.conf。

如果您在安装vsftpd时,使用的是apt install vsftpd安装命令,则配置文件路径为/etc/vsftpd.conf。

vim /etc/vsftpd/vsftpd.conf

分别找到匿名模式(anonymous_enable)以及匿名上传权限(anon_upload_enable),并确认已修改为开启状态。

不同操作系统版本中,默认的配置文件信息可能有所不同,您需要保证修改后的参数配置,如下所示:

anonymous_enable=YES
anon_upload_enable=YES

在文件的末尾,新增以下参数。

#开启被动模式。
pasv_enable=YES
#设置被动模式下,建立数据传输可使用的端口范围的最小值。
#建议您把端口范围设置在一段比较高的范围内,例如50000~50010,有助于提高访问FTP服务器的安全性。
pasv_min_port=<port number>
#设置被动模式下,建立数据传输可使用的端口范围的最大值。
pasv_max_port=<port number>

运行以下命令,更改/var/ftp/pub目录的权限,为FTP用户添加写权限。

/var/ftp/pub为FTP服务默认的文件目录。

chmod o+w /var/ftp/pub/

运行以下命令,重启FTP服务。

systemctl restart vsftpd.service

2、本地用户模式

运行以下命令为FTP服务创建一个Linux用户。

本示例中,该用户名为ftptest

adduser ftptest

运行以下命令修改ftptest用户的密码。

passwd ftptest

运行以下命令创建一个供FTP服务使用的文件目录。

mkdir /var/ftp/test

运行以下命令更改/var/ftp/test目录的拥有者为ftptest

chown -R ftptest:ftptest /var/ftp/test

修改vsftpd.conf配置文件

运行以下命令,修改配置文件/etc/vsftpd/vsftpd.conf。

如果您在安装vsftpd时,使用的是apt install vsftpd安装命令,则配置文件路径为/etc/vsftpd.conf。

vim /etc/vsftpd/vsftpd.conf

配置FTP服务器为被动模式。

具体的配置参数说明如下:

#除下面提及的参数,其他参数保持默认值即可。

#修改下列参数的值:
#禁止匿名登录FTP服务器。
anonymous_enable=NO
#允许本地用户登录FTP服务器。
local_enable=YES
#监听IPv4 sockets。
listen=YES

#在行首添加#注释掉以下参数:
#关闭监听IPv6 sockets。
#listen_ipv6=YES

#在配置文件的末尾添加下列参数:
#设置本地用户登录后所在目录。
local_root=/var/ftp/test
#全部用户被限制在主目录。
chroot_local_user=YES
#启用例外用户名单。
chroot_list_enable=YES
#指定例外用户列表文件,列表中用户不被锁定在主目录。
chroot_list_file=/etc/vsftpd/chroot_list
#开启被动模式。
pasv_enable=YES
allow_writeable_chroot=YES
#本示例中为Linux服务器的公网IP。
pasv_address=<FTP服务器公网IP地址>
#设置被动模式下,建立数据传输可使用的端口范围的最小值。
#建议您把端口范围设置在一段比较高的范围内,例如50000~50010,有助于提高访问FTP服务器的安全性。
pasv_min_port=<port number>
#设置被动模式下,建立数据传输可使用的端口范围的最大值。
pasv_max_port=<port number>

创建chroot_list文件,并在文件中写入例外用户名单。

a、运行以下命令,创建chroot_list文件。

vim /etc/vsftpd/chroot_list

b、输入例外用户名单。此名单中的用户不会被锁定在主目录,可以访问其他目录。

运行以下命令,重启FTP服务。

systemctl restart vsftpd.service

配置Linux服务器的防火墙

搭建好FTP站点后,在Linux服务器的防火墙中,需要放行下列FTP端口。

被动模式需开放21端口,以及配置文件/etc/vsftpd/vsftpd.conf中参数pasv_min_port和pasv_max_port之间的所有端口。

配置完成后,如下图所示:

image.png

测试连接FTP服务器

打开 我的电脑 如下图输入url

image.png

输入账号、密码即可。至此,FTP服务器搭建完成!

image.png