Linux FTP Server 防火墙配置技巧
一 基础概念与模式选择
二 使用 firewalld 的推荐做法
sudo firewall-cmd --permanent --add-service=ftp
sudo firewall-cmd --permanent --add-port=21/tcp
sudo firewall-cmd --permanent --add-port=30000-31000/tcp
sudo firewall-cmd --reload
说明:许多发行版对内置的 ftp 服务包含模块处理 FTP 协议细节;若未生效或你使用自定义端口,显式放行 21/tcp 与被动端口范围更稳妥。sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="ftp" accept'
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
sudo firewall-cmd --runtime-to-permanent
提示:若使用 firewalld,优先用“服务/富规则+端口”的组合,减少直接操作链表的复杂度。三 使用 iptables 的做法
# 控制通道
sudo iptables -A INPUT -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT
# 被动模式数据通道(服务器监听)
sudo iptables -A INPUT -p tcp --dport 30000:31000 -m state --state NEW,ESTABLISHED -j ACCEPT
sudo iptables -A OUTPUT -p tcp --sport 30000:31000 -m state --state ESTABLISHED -j ACCEPT
说明:主动模式涉及服务器从 20/tcp 主动出站连接客户端高位端口,但在 NAT/严格出站策略下更易受阻,跨公网环境通常改用被动模式。sudo apt-get install iptables-persistent
sudo netfilter-persistent save
sudo netfilter-persistent reload
sudo service iptables save
sudo iptables-save > /etc/iptables/rules.v4
四 vsftpd 与防火墙的配合要点
pasv_min_port=30000
pasv_max_port=31000
# 其他常用安全项可按需开启:
# anonymous_enable=NO
# local_enable=YES
# write_enable=YES
# chroot_local_user=YES
sudo systemctl restart vsftpd
随后在防火墙中仅放行上述端口范围,避免开放 1024–65535 这类过宽区间。五 安全加固与排错清单
sudo firewall-cmd --list-all 或 sudo iptables -L -n -v 核对规则是否生效与命中计数。