在Linux系统上设置FTP服务器的防火墙,通常涉及以下几个步骤:
1. 确认FTP服务使用的端口
FTP服务默认使用以下两个端口:
- 21:用于控制连接(命令通道)
- 20:用于数据传输(数据通道)
此外,被动模式(PASV)FTP还需要开放一系列动态端口范围。
2. 配置防火墙规则
你可以使用iptables
或firewalld
来配置防火墙规则。以下是两种方法的示例:
使用 iptables
# 允许FTP控制连接(端口21) sudo iptables -A INPUT -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT # 允许FTP数据连接(端口20) sudo iptables -A INPUT -p tcp --dport 20 -m state --state ESTABLISHED -j ACCEPT # 允许被动模式FTP数据连接(假设被动模式端口范围为50000-50050) sudo iptables -A INPUT -p tcp --dport 50000:50050 -m state --state NEW,ESTABLISHED -j ACCEPT # 允许已建立的连接 sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # 保存iptables规则 sudo iptables-save > /etc/iptables/rules.v4
使用 firewalld
# 启用firewalld服务 sudo systemctl start firewalld sudo systemctl enable firewalld # 允许FTP控制连接(端口21) sudo firewall-cmd --permanent --add-port=21/tcp # 允许FTP数据连接(端口20) sudo firewall-cmd --permanent --add-port=20/tcp # 允许被动模式FTP数据连接(假设被动模式端口范围为50000-50050) sudo firewall-cmd --permanent --add-port=50000-50050/tcp # 重新加载firewalld配置 sudo firewall-cmd --reload # 查看当前firewalld配置 sudo firewall-cmd --list-all
3. 配置FTP服务器以使用被动模式
确保你的FTP服务器配置文件(通常是/etc/vsftpd/vsftpd.conf
或/etc/proftpd/proftpd.conf
)中启用了被动模式,并设置了正确的被动模式端口范围。
例如,在vsftpd
中:
pasv_enable=YES pasv_min_port=50000 pasv_max_port=50050
在proftpd
中:
PassivePorts 50000 50050
4. 重启FTP服务
最后,重启FTP服务以应用新的配置。
# 对于vsftpd sudo systemctl restart vsftpd # 对于proftpd sudo systemctl restart proftpd
5. 验证防火墙规则
确保防火墙规则已正确应用,并且FTP服务可以正常工作。
# 检查iptables规则 sudo iptables -L -v # 检查firewalld状态 sudo firewall-cmd --state
通过以上步骤,你应该能够成功配置Linux系统上的FTP服务器防火墙。