温馨提示×

centos ftpserver怎样防火墙

小樊
45
2026-10-05 23:50:25
栏目: 智能运维

在 CentOS 上搭建 FTP / FTPS 服务器 后,通常需要配置 firewalld(CentOS 7/8/9 默认) 或 iptables 来放行相应端口。下面分情况说明。


一、确认 FTP 服务类型

常见 FTP 模式:

  1. vsftpd(最常用)
  2. FTP 被动模式(PASV)(企业环境最常用)
  3. FTPS(FTP over SSL)

二、使用 firewalld(推荐,CentOS 7/8/9)

1️⃣ 放行 FTP 服务(最简单)

sudo firewall-cmd --permanent --add-service=ftp
sudo firewall-cmd --reload

✅ 这会放行:

  • TCP 21(控制端口)

⚠️ 但 被动模式端口还不够


2️⃣ 配置 vsftpd 被动端口(重要)

编辑 vsftpd 配置:

sudo vi /etc/vsftpd/vsftpd.conf

添加或修改:

pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000

保存后重启:

sudo systemctl restart vsftpd

3️⃣ 放行被动端口范围

sudo firewall-cmd --permanent --add-port=30000-31000/tcp
sudo firewall-cmd --reload

三、FTPS(SSL/TLS)额外说明

如果是 FTPS(显式/隐式):

sudo firewall-cmd --permanent --add-service=ftp
sudo firewall-cmd --permanent --add-port=30000-31000/tcp
sudo firewall-cmd --reload

SSL 不改变防火墙端口。


四、使用 iptables(老版本 CentOS 6)

iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 30000:31000 -j ACCEPT
service iptables save
service iptables restart

五、SELinux 注意(常见坑)

如果 FTP 无法连接:

sudo setsebool -P ftpd_full_access on

查看状态:

getsebool -a | grep ftp

六、快速排查命令

# 查看防火墙状态
firewall-cmd --list-all

# 查看 vsftpd 状态
systemctl status vsftpd

# 测试端口
telnet 服务器IP 21

如果你能告诉我:

  • CentOS 版本
  • 使用的 FTP 软件(vsftpd / proftpd)
  • 是否是 FTPS / 被动模式

我可以给你 更精确的配置示例。

0 踩