Ubuntu与vsftp的网络配置
小樊
35
2025-12-26 04:14:47
Ubuntu 与 vsftpd 网络配置实操指南
一 环境准备与安装
- 更新索引并安装 vsftpd:sudo apt update && sudo apt install vsftpd
- 启动与开机自启:sudo systemctl enable --now vsftpd
- 备份默认配置:sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
- 说明:FTP 控制通道默认使用21/TCP,主动模式数据通道使用20/TCP;被动模式需额外开放一段高位端口供数据连接使用。
二 网络与防火墙配置
- 静态 IP(推荐用于服务器)
- 查看网卡名:ip addr show(常见如 ens33/eth0)
- Ubuntu 18.04+/20.04+ 使用 netplan:编辑 /etc/netplan/*.yaml,示例:
- network:
- version: 2
- renderer: networkd
- ethernets:
- ens33:
- dhcp4: no
- addresses: [192.168.1.100/24]
- gateway4: 192.168.1.1
- nameservers: { addresses: [8.8.8.8, 8.8.4.4] }
- 应用:sudo netplan apply;验证:ip addr show ens33
- UFW 防火墙放行
- 主动模式最小放行:sudo ufw allow 21/tcp;如启用主动数据通道可补充 sudo ufw allow 20/tcp
- 被动模式放行(示例端口段 10000–10100):sudo ufw allow 20,21,10000:10100/tcp
- 启用:sudo ufw enable
- 云服务器安全组
- 放行入站 TCP 21 与被动端口段(如 10000–10100),协议为 TCP。
三 vsftpd 核心配置示例
- 基本安全与本地用户
- 建议值:anonymous_enable=NO;local_enable=YES;write_enable=YES;local_umask=022
- 将本地用户限制在其家目录:chroot_local_user=YES
- 若启用 chroot 且需写权限:allow_writeable_chroot=YES
- IPv4/IPv6 监听(二选一,避免端口占用冲突)
- 仅 IPv4:listen=YES;listen_ipv6=NO
- 仅 IPv6:listen=NO;listen_ipv6=YES
- 被动模式(穿越 NAT/防火墙必备)
- pasv_enable=YES;pasv_min_port=10000;pasv_max_port=10100
- 日志与连接
- xferlog_enable=YES;connect_from_port_20=YES
- SSL/TLS(可选但强烈建议)
- rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
- rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
- ssl_enable=YES
- 应用配置:sudo systemctl restart vsftpd
- 提示:若使用 PAM/用户列表限制,可结合 userlist_enable、userlist_deny、userlist_file 等参数进行精细化控制。
四 连接测试与验证
- 本机/局域网测试
- 命令行:ftp 127.0.0.1 或 ftp 服务器IP
- 图形化:文件管理器“连接到服务器”输入 ftp://服务器IP;或使用 FileZilla 输入主机、端口 21、用户名与密码
- 被动模式连通性验证
- 抓包/状态检查:ss -lntp | grep :21;以及 ss -lntp | grep :10000(示例被动端口段)
- 云环境需确认安全组与云厂商防火墙均放行对应端口段
- 常见问题速查
- 无法登录:检查本地用户是否存在、家目录权限、PAM/用户列表、SELinux/AppArmor 策略
- 能登录但列目录/传文件失败:确认 write_enable=YES、目录可写、被动端口段已放行
- 数据连接卡住:核对被动端口范围与防火墙/安全组一致性,或临时改用主动模式验证。