在配置防火墙前,需确保系统已安装vsftpd(FTP服务)及防火墙管理工具(ufw或iptables):
sudo apt update
sudo apt install vsftpd ufw iptables # 同时安装vsftpd、ufw(推荐)和iptables(可选)
UFW(Uncomplicated Firewall)是Debian/Ubuntu系统的简化防火墙工具,操作便捷,适合大多数场景。
sudo ufw enable # 启用防火墙
sudo ufw default deny incoming # 默认拒绝所有入站连接(增强安全性)
验证UFW状态:
sudo ufw status verbose # 查看规则及状态(需显示“Status: active”)
FTP服务依赖控制连接(端口21)和数据连接(端口20),需首先开放:
sudo ufw allow 21/tcp # FTP控制连接(必须)
sudo ufw allow 20/tcp # FTP数据连接(主动模式必需)
被动模式(PASV)下,FTP服务器会随机开放一个端口范围供客户端连接。需在vsftpd.conf中指定范围,并在UFW中开放:
vsftpd.conf(/etc/vsftpd.conf):sudo nano /etc/vsftpd.conf
添加/修改以下参数(示例范围:50000-50050,可根据需求调整):pasv_enable=YES # 启用被动模式
pasv_min_port=50000 # 被动模式最小端口
pasv_max_port=50050 # 被动模式最大端口
sudo systemctl restart vsftpd
sudo ufw allow 50000:50050/tcp # 根据vsftpd.conf中的范围调整
允许系统接受已建立的连接(如FTP数据传输的后续数据包),避免中断现有会话:
sudo ufw allow proto tcp from any to any port 20:65535 state ESTABLISHED,RELATED
sudo ufw reload # 重新加载规则(无需重启服务)
sudo ufw status # 确认规则已正确添加(如“21/tcp ALLOW”、“50000:50050/tcp ALLOW”)
iptables是Linux内核级防火墙工具,适合需要高级规则的场景(如复杂网络环境)。
sudo iptables -A INPUT -p tcp --dport 21 -j ACCEPT # 控制连接
sudo iptables -A INPUT -p tcp --dport 20 -j ACCEPT # 数据连接(主动模式)
与UFW类似,需先在vsftpd.conf中设置被动模式端口范围(如50000-50050),然后开放:
sudo iptables -A INPUT -p tcp --dport 50000:50050 -j ACCEPT # 被动模式
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -P INPUT DROP # 默认拒绝所有入站连接
sudo iptables -P FORWARD DROP # 默认拒绝所有转发连接
sudo iptables -P OUTPUT ACCEPT # 允许所有出站连接(根据需求调整)
Debian系统需安装iptables-persistent工具,确保重启后规则不丢失:
sudo apt install iptables-persistent
sudo netfilter-persistent save # 保存当前规则到/etc/iptables/rules.v4
sudo netfilter-persistent reload # 重新加载规则
vsftpd.conf中的pasv_min_port/pasv_max_port必须与防火墙开放的端口范围完全一致,否则客户端无法连接。anonymous_enable=NO)、限制用户访问其主目录(chroot_local_user=YES)(已在vsftpd配置中体现);sudo tail -f /var/log/syslog或sudo ufw logging on),及时发现异常连接。iptables-persistent工具保存,避免重启后丢失。通过以上策略,可实现Debian系统下vsFTP服务的防火墙安全配置,兼顾可用性与安全性。