FTP服务器防火墙配置指南
一 基础概念与端口规划
二 使用 firewalld 的配置步骤(CentOS/RHEL、Fedora)
sudo firewall-cmd --permanent --add-service=ftp && sudo firewall-cmd --reloadsudo firewall-cmd --permanent --add-port=21/tcpsudo firewall-cmd --permanent --add-port=20/tcpsudo firewall-cmd --permanent --add-port=30000-31000/tcpsudo firewall-cmd --reloadsudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="21" accept'sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="20" accept'sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="30000-31000" accept'sudo firewall-cmd --reload三 使用 UFW 的配置步骤(Ubuntu/Debian)
sudo ufw allow 20/tcpsudo ufw allow 21/tcpsudo ufw allow 30000:31000/tcp四 使用 iptables 的配置步骤(通用 Linux)
sudo iptables -A INPUT -p tcp --dport 21 -j ACCEPTsudo iptables -A INPUT -p tcp --dport 20 -j ACCEPTsudo iptables -A INPUT -p tcp --dport 50000:50100 -j ACCEPTsudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPTsudo apt-get install iptables-persistent && sudo netfilter-persistent save && sudo netfilter-persistent reloadsudo service iptables save-m state --state ESTABLISHED,RELATED用于放行已建立及相关连接,避免数据通道被拦截;如未使用状态模块,需确保OUTPUT链也允许相应出站流量。五 服务器配置与验证要点
local_enable=YES、write_enable=YESchroot_local_user=YESpasv_min_port=30000、pasv_max_port=31000sudo systemctl restart vsftpdsudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pemssl_enable=YES、force_local_data_ssl=YES、force_local_logins_ssl=YES、ssl_cert_file=/etc/ssl/private/vsftpd.pemsudo systemctl restart vsftpdftp <server-ip>。若被动模式失败,优先检查服务器被动端口范围与防火墙是否一致,再检查日志(如/var/log/vsftpd.log或xferlog)。