在CentOS上设置FTP服务器的防火墙,通常需要使用firewalld
服务。以下是一些基本步骤来配置防火墙以允许FTP流量:
启动并启用firewalld服务(如果尚未启动):
sudo systemctl start firewalld
sudo systemctl enable firewalld
检查firewalld状态:
sudo firewall-cmd --state
允许FTP服务: FTP通常使用两个端口:21用于控制连接,20用于数据传输。你可以使用以下命令来允许这些端口:
sudo firewall-cmd --permanent --add-service=ftp
sudo firewall-cmd --permanent --add-port=20/tcp
sudo firewall-cmd --permanent --add-port=21/tcp
如果你需要被动模式(PASV),FTP服务器可能会打开一个范围的高端口(通常是49152到65535)。你可以添加这个范围:
sudo firewall-cmd --permanent --add-port=49152-65535/tcp
重新加载防火墙配置以应用更改:
sudo firewall-cmd --reload
验证端口是否已打开:
sudo firewall-cmd --list-all
或者检查特定端口是否开放:
sudo firewall-cmd --query-port=21/tcp
如果你使用的是SELinux,可能需要调整相关的策略来允许FTP流量。例如,你可能需要设置适当的SELinux上下文或者临时将SELinux设置为宽容模式(permissive mode)来测试:
sudo setenforce 0
记得在测试完成后将SELinux恢复为强制模式:
sudo setenforce 1
配置FTP服务器:
确保你的FTP服务器(如vsftpd)配置正确,特别是如果你打算使用被动模式,需要在服务器配置文件中设置pasv_enable=YES
和pasv_min_port
以及pasv_max_port
。
请注意,FTP协议不是非常安全,因为它在客户端和服务器之间传输用户名和密码时使用明文。如果可能的话,考虑使用更安全的替代方案,如SFTP(SSH File Transfer Protocol),它提供了加密的传输通道。如果你需要设置SFTP,通常只需要允许SSH端口(默认是22)即可。