插件窝 干货文章 Linux FTPServer如何设置防火墙

Linux FTPServer如何设置防火墙

FTP 端口 sudo 模式 754    来源:    2025-05-05

Linux FTP服务器防火墙设置指南

在Linux上设置FTP服务器的防火墙需要特别注意FTP协议的特殊性,因为FTP使用动态端口进行数据传输。以下是详细的设置步骤:

1. 确定使用的FTP模式

FTP有两种主要模式: - 主动模式(PORT): 服务器主动连接客户端的数据端口 - 被动模式(PASV): 客户端连接服务器的数据端口

现代FTP服务器通常使用被动模式(PASV)。

2. 防火墙基本设置

对于iptables (传统Linux防火墙)

# 允许FTP控制连接(默认端口21)
sudo iptables -A INPUT -p tcp --dport 21 -j ACCEPT

# 对于被动模式,需要开放端口范围(例如30000-31000)
sudo iptables -A INPUT -p tcp --dport 30000:31000 -j ACCEPT

# 保存iptables规则(根据发行版不同)
sudo iptables-save > /etc/sysconfig/iptables
# 或
sudo service iptables save

对于firewalld (CentOS/RHEL 7+)

# 添加FTP服务(默认包含端口21)
sudo firewall-cmd --permanent --add-service=ftp

# 添加被动模式端口范围
sudo firewall-cmd --permanent --add-port=30000-31000/tcp

# 重新加载防火墙
sudo firewall-cmd --reload

对于UFW (Ubuntu)

# 允许FTP端口
sudo ufw allow 21/tcp

# 允许被动模式端口范围
sudo ufw allow 30000:31000/tcp

# 启用防火墙
sudo ufw enable

3. 配置FTP服务器使用固定被动端口范围

大多数FTP服务器(vsftpd, proftpd等)需要配置被动端口范围:

vsftpd配置示例(/etc/vsftpd.conf)

pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
pasv_address=your.server.ip.address

proftpd配置示例(/etc/proftpd.conf)

PassivePorts 30000 31000
MasqueradeAddress your.server.ip.address

4. 加载必要的FTP防火墙模块

FTP协议需要特殊的内核模块来处理动态端口:

# 加载ip_conntrack_ftp和ip_nat_ftp模块
sudo modprobe ip_conntrack_ftp
sudo modprobe ip_nat_ftp

# 使模块在启动时自动加载
echo "ip_conntrack_ftp" | sudo tee -a /etc/modules
echo "ip_nat_ftp" | sudo tee -a /etc/modules

5. 测试FTP连接

配置完成后,使用FTP客户端测试连接,确保主动和被动模式都能正常工作。

6. 其他安全建议

  1. 考虑使用FTPS(FTP over SSL/TLS)或SFTP(SSH文件传输)替代普通FTP
  2. 限制FTP访问的IP范围(如果可能)
  3. 定期检查FTP日志文件
  4. 使用强密码或密钥认证

常见问题解决

如果连接有问题,检查: - 防火墙规则是否正确应用(iptables -Lfirewall-cmd --list-all) - FTP服务器日志(/var/log/vsftpd.log等) - 确保SELinux不会阻止FTP(如有必要可临时设置为permissive模式测试)