Linux上配置FTPServer防火墙主要涉及开放必要端口,以下是常见工具的设置方法:
firewalld(CentOS 7+默认工具)开放基础端口
21/tcp20/tcp40000-50000):40000-50000/tcp990/tcpsudo firewall-cmd --permanent --add-port=21/tcp
sudo firewall-cmd --permanent --add-port=20/tcp
sudo firewall-cmd --permanent --add-port=40000-50000/tcp
sudo firewall-cmd --permanent --add-port=990/tcp # 若使用FTPS
sudo firewall-cmd --reload
限制特定IP访问(可选)
sudo firewall-cmd --permanent --add-rich-rule="rule source address='192.168.1.100' port port='21' protocol='tcp' accept"
sudo firewall-cmd --reload
ufw(Ubuntu/Debian默认工具)sudo ufw allow 21/tcp # 控制连接
sudo ufw allow 20/tcp # 数据连接(主动模式)
sudo ufw allow 40000:50000/tcp # 被动模式端口范围
sudo ufw allow 990/tcp # 若使用FTPS
sudo ufw reload
iptables(需手动配置)sudo iptables -A INPUT -p tcp --dport 21 -j ACCEPT # 控制连接
sudo iptables -A INPUT -p tcp --dport 20 -j ACCEPT # 数据连接(主动模式)
sudo iptables -A INPUT -p tcp --dport 40000:50000 -j ACCEPT # 被动模式端口范围
sudo iptables -A INPUT -p tcp --dport 990 -j ACCEPT # 若使用FTPS
sudo service iptables save # 保存规则(CentOS)
sudo iptables-save > /etc/iptables/rules.v4 # 保存规则(Ubuntu)
/etc/vsftpd.conf)中设置pasv_min_port和pasv_max_port,并与防火墙规则一致。SELinux或AppArmor限制FTP服务权限,避免越权访问。firewall-cmd --list-ports(firewalld)或ufw status(ufw)检查端口是否开放。