安装 vsftpd
sudo apt update
sudo apt install vsftpd
vsftpd 服务将在安装过程完成后自动启动。通过打印服务状态进行验证:
sudo systemctl status vsftpd
输出如下所示,表明 vsftpd 服务处于活动状态并正在运行:
● vsftpd.service - vsftpd FTP server
Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2024-09-19 01:11:20 UTC; 57s ago
Main PID: 100007 (vsftpd)
Tasks: 1 (limit: 2143)
Memory: 856.0K
CPU: 2ms
CGroup: /system.slice/vsftpd.service
└─100007 /usr/sbin/vsftpd /etc/vsftpd.conf
配置vsftpd
通过编辑 /etc/vsftpd.conf 文件来配置vsftpd服务器。
打开vsftpd配置文件:
sudo vim /etc/vsftpd.conf
确认访问控制的配置(禁止匿名用户的访问+允许本地用户访问):
# Allow anonymous FTP? (Disabled by default).
anonymous_enable=NO
# Uncomment this to allow local users to log in.
local_enable=YES
允许写操作(默认是被注释掉的,要取消注释):
# Uncomment this to enable any form of FTP write command.
write_enable=YES
将本地用户限制在其主目录中(默认是被注释掉的,要取消注释):
# You may restrict local users to their home directories. See the FAQ for
# the possible risks in this before using chroot_local_user or
# chroot_list_enable below.
chroot_local_user=YES
当启用 chroot 时,如果用户被锁定的目录是可写的,则 vsftpd 将拒绝上传文件,因此还需要启用 allow_writeable_chroot 指令,将其设置为 YES :
# 如果找不到该条目可以可以自行新增一行即可
allow_writeable_chroot=YES
限制用户登录 在文件末尾添加以下配置:
userlist_enable=YES
userlist_file=/etc/vsftpd.user_allow_list
userlist_deny=NO
配置项 userlist_file 指定由 /etc/vsftpd.user_allow_list 文件配置具体的可登录用户,稍后再配置该文件。
设置 FTP 连接被动模式的端口号范围
在文件末尾添加以下配置:
pasv_min_port=31000
pasv_max_port=32000
当 FTP 客户端采用被动模式进行连接时,服务器端会随机从该端口范围内选择一个端口来和客户端建立数据通道。
至此,保存对 /etc/vsftpd.conf 文件的编辑并退出。
然后编辑 /etc/vsftpd.user_allow_list 文件配置具体的可登录用户:
sudo vim /etc/vsftpd.user_allow_list
输入用户名 ftp-user001 然后保存并退出!
为系统新增一个专用用户 在编辑 /etc/vsftpd.user_allow_list 文件时输入的用户名 ftp-user001 在系统中是不存在的,现在要通过 adduser 命令来创建该用户。
sudo adduser ftp-user001
期间需要设置为用户设置密码。
创建好用户之后重启 vsftpd :
sudo systemctl restart vsftpd
打开 FTP 需要的通信端口:
sudo ufw allow 20:21/tcp
sudo ufw allow 31000:32000/tcp
现在可以通过 FTP 客户端程序通过 ftp-user001 用户来连接 FTP 服务器并上传文件了,上传的文件就在 ftp-user001 用户的主目录中,通过高权限的用户 cd 到该用户的主目录中就能看到上传的文件了,这些文件应该作为临时文件存在。
启用 SSL 安全传输
**走公网环境必须**
打开 vsftpd 配置文件:
sudo vim /etc/vsftpd.conf
找到 ssl_enable 的配置项,默认值是 NO ,改成 YES 即可:
#
# This option specifies the location of the RSA certificate to use for SSL
# encrypted connections.
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
保存修改,然后重启 vsftpd 服务:
sudo systemctl restart vsftpd
**在 vsftpd 安装后默认配置的证书(.pem)和密钥(.key)是可以直接用的,当然你也可以把它换成你自有的证书和密钥。**