vsftpd(very secure FTP daemon)是一个广泛使用的、开源的FTP服务器软件,以其高性能、高安全性和稳定性著称,支持多种FTP相关协议,包括FTP、SFTP(通过SSH)、TLS/SSL加密的FTP等。本文介绍如何在Linux系统的ECS实例上安装并配置vsftpd。
快速部署
您可以单击一键运行进入Terraform Explorer查看并执行Terraform代码,从而实现自动化地在ECS实例中搭建FTP站点。
准备资源
已创建一台基础ECS实例,并满足以下配置。如果您还未创建,请参见自定义购买实例。
操作系统:Alibaba Cloud Linux 3 / 2、CentOS 7.x 64位、Ubuntu、Debian。
IP地址:实例已分配固定公网IP地址或绑定弹性公网IP(EIP)。具体操作,请参见弹性公网IP。
VSFTP简介
vsftpd(Very Secure FTP Daemon)是一个开源的FTP服务器软件,专为UNIX和Linux系统设计。其主要特点包括:
安全性高:vsftpd经过严格的安全审计,采用多种安全机制,能有效防止常见的攻击和漏洞。
性能优越:具备高性能的文件传输能力,支持大并发用户同时连接。
配置简单:提供灵活且易于理解的配置选项,适合各种用户需求。
支持IPv6:对新一代网络协议提供友好的支持。
搭建VSFTP服务
步骤一:安装vsftpd
执行以下命令,更新Yum源并安装 vsftpd。
sudo yum update sudo yum install -y vsftpd
执行以下命令,设置 vsftpd 开机自启动。
systemctl enable vsftpd
执行以下命令,启动 FTP 服务。
systemctl start vsftpd
执行以下命令,确认服务是否启动。
netstat -antup | grep ftp
显示结果如下,则说明 FTP 服务已成功启动。
此时,vsftpd 已默认开启匿名用户模式,无需通过用户名和密码即可登录 FTP 服务器。使用此方式登录 FTP 服务器的用户没有修改或上传文件的权限。
步骤二:配置 vsftpd
执行以下命令,为 FTP 服务创建一个 Linux 用户,本文以 ftpuser 为例。
useradd ftpuser
执行以下命令,设置 ftpuser 用户的密码。
passwd ftpuser
输入密码后请按 Enter 确认设置,密码默认不显示。
执行以下命令,创建 FTP 服务使用的文件目录,本文以 /var/ftp/test 为例。
mkdir /var/ftp/test
执行以下命令,修改目录权限。
chown -R ftpuser:ftpuser /var/ftp/test
执行以下命令,打开 vsftpd.conf 文件。
vim /etc/vsftpd/vsftpd.conf
按 i 切换至编辑模式,根据实际需求选择 FTP 模式,修改配置文件 vsftpd.conf。
FTP 可通过主动模式和被动模式与客户端机器进行连接并传输数据。由于大多数客户端机器的防火墙设置及无法获取真实 IP 等原因,建议您选择被动模式搭建 FTP 服务。如下修改以设置被动模式为例。
运行以下命令,备份
vsftp
配置文件。sudo cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
修改以下配置参数,设置匿名用户和本地用户的登录权限,设置指定例外用户列表文件的路径,并开启监听 IPv4 sockets。
anonymous_enable=NO local_enable=YES write_enable=YES chroot_local_user=YES chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list listen=YES
在行首添加 #,注释 listen_ipv6=YES 配置参数,关闭监听 IPv6 sockets。
#listen_ipv6=YES
添加以下配置参数,开启被动模式,设置本地用户登录后所在目录,以及云服务器建立数据传输可使用的端口范围值。
local_root=/var/ftp/test allow_writeable_chroot=YES #pasv_enable=YES 被动模式,pasv_enable=NO 主动模式 pasv_enable=YES #请修改为您的 Linux 云服务器公网 IP pasv_address=xxx.xx.xxx.xx pasv_min_port=40000 pasv_max_port=40100
FTP服务被动模式放通范围端口的原因及配置建议请参见搭建FTP站点(Windows)。
按 Esc 后输入 :wq 保存后退出。
执行以下命令,创建并编辑 chroot_list 文件。
vim /etc/vsftpd/chroot_list
按 i 进入编辑模式,输入用户名,一个用户名占据一行,设置完成后按 Esc 并输入 :wq 保存后退出。设置的用户将会被锁定在主目录,您若没有设置例外用户的需求,可跳过此步骤,输入 :q 退出文件。
执行以下命令,重启 FTP 服务。
systemctl restart vsftpd
步骤三:设置安全组
完成FTP服务搭建后,您需要根据实际使用的 FTP 模式给 Linux 云服务器放通入站规则,详情请参见添加安全组规则。
大多数客户端机器在局域网中,其 IP 地址经过了转换。如果您选择使用 FTP 主动模式,请确保客户端机器获得了其真实的 IP 地址,否则可能会导致客户端无法成功登录 FTP 服务器。确保正确配置有助于避免连接问题,从而提高 FTP 服务的稳定性和可用性。
主动模式:放通端口21。
被动模式:放通端口21,及配置文件 /etc/vsftpd/vsftpd.conf 中设置的 pasv_min_port 到 pasv_max_port 之间的所有端口,本文放通端口为40000-40100。FTP服务被动模式放通范围端口的原因及配置建议请参见FTP被动模式端口配置建议。
步骤四:验证FTP服务
您可通过 FTP 客户端软件、浏览器或文件资源管理器等工具验证 FTP 服务,本文以客户端的文件资源管理器为例。
打开客户端的计算机,在路径栏中访问以下地址。如下图所示。
在弹出的登录身份窗口中输入设置FTP用户及密码中已设置的用户名及密码。
成功登录后,即可上传及下载文件。
步骤一:安装VSFTP
运行以下命令,安装
vsftpd
服务:# 更新apt源 sudo apt-get update sudo apt-get install vsftpd
运行以下命令,备份原始配置文件。
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
步骤二:配置VSFTP
运行以下命令,修改
vsftpd
的配置文件:sudo vim /etc/vsftpd.conf
在配置文件中修改如下配置:
修改以下配置,配置FTP访问权限。只允许本地用户访问 FTP,并禁用任何匿名访问
anonymous_enable=NO local_enable=YES
修改以下配置,启用文件上传。
write_enable=YES
取消以下行配置前的注释,使用vsftpd 通过使用 chroot jails 实现限制FTP用户访问目录,并配置可访问FTP服务用户文件。
chroot_local_user=YES chroot_list_file=/etc/vsftpd.chroot_list
在配置文件中添加以下配置,配置FTP服务目录,以及开启允许用户在挂载的 chroot(改变根目录)环境中写入。当 chroot 环境为可写时通常会被禁止(默认)。
local_root=/home/ftp allow_writeable_chroot=YES
(可选)修改以下配置,配置FTP被动模式。vsftpd 可以使用任何端口进行被动 FTP 连接。可为 vsftpd 可以使用的最小和最大端口号指定一个范围。
在配置文件中,添加以下行以允许被动 FTP 连接。
pasv_min_port=35000 pasv_max_port=40000
运行以下命令,重新启动 vsftpd 以启用配置。
sudo systemctl restart vsftpd
步骤三:配置用户目录
在FTP安装完成后,会默认为我们创建用户名为ftp的用户,默认无密码。运行以下命令修改ftp密码。
sudo passwd ftp
设置一个强密码并跳过所有其他提示。
运行以下命令,将用户添加到允许的FTP用户列表中。
echo "ftp" | sudo tee -a /etc/vsftpd.userlist
运行以下命令,创建FTP文件目录和授予用户权限。
运行以下命令,创建FTP文件夹。
sudo mkdir /home/ftp
运行以下命令,设置文件夹所有权。本例中赋予文件夹读、写、完全控制权限。您也可以根据自己的需求修改相应权限。
sudo chmod 777 /home/ftp
步骤四:设置安全组
完成FTP服务搭建后,您需要根据实际使用的 FTP 模式给 Linux 云服务器放通入站规则,详情请参见添加安全组规则。
大多数客户端机器在局域网中,其 IP 地址经过了转换。如果您选择使用 FTP 主动模式,请确保客户端机器获得了其真实的 IP 地址,否则可能会导致客户端无法成功登录 FTP 服务器。确保正确配置有助于避免连接问题,从而提高 FTP 服务的稳定性和可用性。
主动模式:放通端口21。
被动模式:放通端口21,及配置文件 /etc/vsftpd/vsftpd.conf 中设置的 pasv_min_port 到 pasv_max_port 之间的所有端口。FTP服务被动模式放通范围端口的原因及配置建议请参见搭建FTP站点(Windows)。
步骤四:验证FTP服务
您可通过 FTP 客户端软件、浏览器或文件资源管理器等工具验证 FTP 服务,本文以客户端的文件资源管理器为例。
打开客户端的计算机,在路径栏中访问以下地址。如下图所示:
在弹出的登录身份窗口中输入设置FTP用户及密码中已设置的用户名及密码。
成功登录后,即可上传及下载文件。
附录
vsftp配置文件及参数说明
/etc/vsftpd
目录下文件说明如下:
/etc/vsftpd/vsftpd.conf
是vsftpd的核心配置文件。/etc/vsftpd/ftpusers
是黑名单文件,此文件中的用户不允许访问FTP服务器。/etc/vsftpd/user_list
是白名单文件,此文件中的用户允许访问FTP服务器。
vsftpd.conf
配置文件参数说明如下:
用户登录控制参数说明如下表所示。
参数
说明
参数
说明
anonymous_enable=YES
接受匿名用户
no_anon_password=YES
匿名用户login时不询问口令
anon_root=(none)
匿名用户主目录
local_enable=YES
接受本地用户
local_root=(none)
本地用户主目录
用户权限控制参数说明如下表所示。
参数
说明
参数
说明
write_enable=YES
可以上传文件(全局控制)
local_umask=022
本地用户上传的文件权限
file_open_mode=0666
上传文件的权限配合umask使用
anon_upload_enable=NO
匿名用户可以上传文件
anon_mkdir_write_enable=NO
匿名用户可以建目录
anon_other_write_enable=NO
匿名用户修改删除
chown_username=lightwiter
匿名上传文件所属用户名
- 本页导读 (1)
- 快速部署
- 准备资源
- VSFTP简介
- 搭建VSFTP服务
- 附录
- vsftp配置文件及参数说明