在Ubuntu上安装VSFTPD(Very Secure FTP Daemon),使用以下命令更新软件包列表并安装:
sudo apt update
sudo apt install vsftpd
编辑VSFTPD的主配置文件/etc/vsftpd.conf(使用nano或vim等编辑器):
sudo nano /etc/vsftpd.conf
根据需求调整以下关键配置(常见选项说明):
listen=YES:启用独立监听模式(替代xinetd);listen_ipv6=NO:禁用IPv6(若无需IPv6支持);anonymous_enable=NO:禁止匿名用户登录(提升安全性);local_enable=YES:允许本地系统用户登录;write_enable=YES:允许用户上传/修改文件;chroot_local_user=YES:将本地用户限制在其主目录(防止越权访问);allow_writeable_chroot=YES:允许chroot目录可写(若用户主目录需写入文件)。pasv_enable=YES:启用被动模式(解决主动模式下的防火墙穿透问题);pasv_min_port=50000:设置被动模式最小端口(建议取值50000+);pasv_max_port=50100:设置被动模式最大端口(与最小端口间隔足够,避免端口冲突)。配置完成后,保存文件并退出编辑器。
使配置生效,重启VSFTPD服务:
sudo systemctl restart vsftpd
# 设置开机自启(可选但推荐)
sudo systemctl enable vsftpd
若未安装UFW,先安装:
sudo apt install ufw
启用防火墙(默认拒绝所有入站连接,允许所有出站连接):
sudo ufw enable
VSFTPD需要开放控制连接端口(21/tcp)和数据连接端口(主动模式20/tcp、被动模式动态范围):
sudo ufw allow 21/tcp # FTP控制连接
sudo ufw allow 20/tcp # FTP数据连接(主动模式)
vsftpd.conf中的pasv_min_port和pasv_max_port设置,开放对应的动态端口范围(如50000-50100):sudo ufw allow 50000:50100/tcp # 被动模式端口范围
应用新的防火墙规则:
sudo ufw reload
检查规则是否生效,确保FTP端口已开放:
sudo ufw status
预期输出示例:
Status: active
To Action From
-- ------ ----
21/tcp ALLOW Anywhere
50000:50100/tcp ALLOW Anywhere
21/tcp (v6) ALLOW Anywhere (v6)
50000:50100/tcp (v6) ALLOW Anywhere (v6)
使用FTP客户端(如FileZilla或命令行ftp)测试连接:
ftp localhost
输入本地用户名和密码,验证是否能正常登录及传输文件(上传/下载)。pasv_enable=YES)并开放对应端口范围,否则无法正常下载文件。setsebool -P ftpd_full_access on),但Ubuntu默认使用AppArmor,无需此步骤。sudo tail -f /var/log/vsftpd.log查看VSFTPD日志,定位问题根源(如端口未开放、配置错误)。