centos系统vsftp防火墙如何配置
导读:CentOS 上 vsftpd 防火墙配置 一、准备与原则 明确使用的防火墙:CentOS 7/8 默认使用 firewalld;CentOS 6 使用 iptables。FTP 有控制通道(默认端口 21/TCP)和数据通道,数据通道在...
CentOS 上 vsftpd 防火墙配置
一、准备与原则
- 明确使用的防火墙:CentOS 7/8 默认使用 firewalld;CentOS 6 使用 iptables。FTP 有控制通道(默认端口 21/TCP)和数据通道,数据通道在主动模式常用 20/TCP,在被动模式由服务器开放一段端口范围,两端必须一致才能成功传输。为减少攻击面,建议固定并只开放需要的被动端口范围。
二、firewalld 配置步骤(CentOS 7/8)
- 启动并持久化 vsftpd:
- 安装:sudo yum install -y vsftpd
- 启动与自启:sudo systemctl start vsftpd & & sudo systemctl enable vsftpd
- 开放控制端口与被动端口范围(示例范围:5000–5500/TCP,可自定义):
- 开放 21/TCP:sudo firewall-cmd --permanent --add-port=21/tcp
- 开放被动端口范围:sudo firewall-cmd --permanent --add-port=5000-5500/tcp
- 重载防火墙:sudo firewall-cmd --reload
- 可选:开放 FTP 服务模块(部分环境有效):sudo firewall-cmd --permanent --add-service=ftp & & sudo firewall-cmd --reload
- 说明:主动模式的数据连接由服务器从 20/TCP 主动连客户端高位端口;若使用主动模式,还需放行 20/TCP。被动模式由客户端连服务器你配置的被动端口范围,通常更便于穿越防火墙与 NAT。
三、iptables 配置步骤(CentOS 6)
- 编辑规则文件 /etc/sysconfig/iptables,在合适位置插入(示例被动端口范围:9000–9045/TCP):
- 放行控制端口:-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
- 主动模式数据端口:-A INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT
- 被动模式端口范围:-A INPUT -m state --state NEW -m tcp -p tcp --dport 9000:9045 -j ACCEPT
- 保存并重启:service iptables restart(或 /etc/init.d/iptables restart)
- 提示:若修改了默认控制端口(如 2222),需同步放行对应端口。
四、vsftpd 与 SELinux 关键配置
- vsftpd.conf 被动端口范围需与防火墙一致(示例:5000–5500):
- pasv_enable=YES
- pasv_min_port=5000
- pasv_max_port=5500
- 如需固定控制端口:listen_port=21(或其他端口,同时防火墙放行该端口)
- SELinux 放行(若启用 enforcing):
- 允许本地用户家目录访问:sudo setsebool -P ftp_home_dir on
- 允许完整 FTP 访问:sudo setsebool -P allow_ftpd_full_access on
- 目录上下文(示例用户主目录):sudo chcon -Rv --type=public_content_t /home/ftpuser
- 修改配置后重启 vsftpd:sudo systemctl restart vsftpd。
五、验证与常见问题
- 连通性验证:
- 查看防火墙状态与已放行端口:firewall-cmd --state;firewall-cmd --list-all
- 客户端连接测试(主动/被动模式在客户端选择):ftp your_server_ip;或 FileZilla 测试上传/下载
- 常见问题排查:
- 被动模式连不上:核对 vsftpd.conf 的 pasv_min_port/pasv_max_port 与防火墙端口范围完全一致;云服务器还需在安全组放行相同端口。
- 登录慢:可在 vsftpd.conf 中关闭 DNS 反向解析 reverse_lookup_enable=NO。
- SELinux 拒绝:getenforce 查看状态;必要时执行上文 setsebool 与 chcon 命令,或临时 setenforce 0 验证是否为 SELinux 导致。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos系统vsftp防火墙如何配置
本文地址: https://pptw.com/jishu/762968.html
