Debian 下 vsftpd 防火墙设置
一 前置检查与准备
- 确认 vsftpd 已安装并运行:sudo apt update && sudo apt install vsftpd;sudo systemctl start vsftpd && sudo systemctl enable vsftpd。
- 确认防火墙状态:sudo ufw status;如未启用可执行 sudo ufw enable。
- 建议先备份 vsftpd 配置:sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak。
二 使用 UFW 放行 FTP 与被动端口
- 放行控制连接与主动数据端口:sudo ufw allow 21/tcp;sudo ufw allow 20/tcp。
- 配置并放行被动模式端口范围(示例为 50000–50100,需在 vsftpd 配置中同步设置):sudo ufw allow 50000:50100/tcp。
- 重载规则:sudo ufw reload;核对:sudo ufw status。
三 使用 iptables 放行 FTP 与被动端口
- 放行控制与主动数据端口:sudo iptables -A INPUT -p tcp --dport 21 -j ACCEPT;sudo iptables -A INPUT -p tcp --dport 20 -j ACCEPT。
- 放行被动端口范围(示例为 50000–50100):sudo iptables -A INPUT -p tcp --dport 50000:50100 -j ACCEPT。
- 保存规则(持久化):sudo apt install iptables-persistent;sudo netfilter-persistent save(或 iptables-save > /etc/iptables/rules.v4)。
四 vsftpd 配置与防火墙联动
- 编辑 /etc/vsftpd.conf,确保启用被动模式并设定与防火墙一致的端口范围:
pasv_enable=YES
pasv_min_port=50000
pasv_max_port=50100
- 可选:如需加密传输,启用 SSL/TLS(示例端口 990/989):
ssl_enable=YES
implicit_ssl=YES
listen_port=990
ftp_data_port=989
并在防火墙放行相应端口(UFW:sudo ufw allow 990/tcp;iptables:–dport 990 与 989)。
- 重启服务:sudo systemctl restart vsftpd。
五 验证与常见问题
- 验证规则生效:UFW 执行 sudo ufw status verbose;iptables 执行 sudo iptables -L -v -n。
- 客户端连接测试:使用 FileZilla 或命令行 ftp,验证登录、列目录、上传/下载是否正常。
- 常见问题与处理:
- 被动模式失败:检查 pasv_min_port/pasv_max_port 与防火墙端口范围完全一致,且云服务器安全组/外部防火墙已放行。
- 数据连接超时:确认服务器与客户端之间的 20/tcp(主动模式)或被动端口范围未被拦截。
- 规则未持久:UFW 已启用;iptables 使用 iptables-persistent 保存。
- IPv6 场景:如仅使用 IPv4,可在 vsftpd.conf 设置 listen_ipv6=NO。