Linux FTPServer的防火墙配置技巧
导读:Linux FTP Server 防火墙配置技巧 一 基础概念与模式选择 FTP 有两种工作模式:主动模式(服务器从20/tcp主动连客户端的数据端口)与被动模式(服务器在被动端口范围监听,由客户端主动连入)。主动模式常受客户端 NAT/...
Linux FTP Server 防火墙配置技巧
一 基础概念与模式选择
- FTP 有两种工作模式:主动模式(服务器从20/tcp主动连客户端的数据端口)与被动模式(服务器在被动端口范围监听,由客户端主动连入)。主动模式常受客户端 NAT/防火墙影响,跨公网更推荐被动模式。无论哪种模式,控制通道都使用21/tcp。为提高可控性与安全性,建议在服务器上显式配置被动端口范围,并在防火墙中仅放行该范围。
二 使用 firewalld 的推荐做法
- 放行控制通道与被动端口范围(示例范围:30000–31000/tcp):
说明:许多发行版对内置的 ftp 服务包含模块处理 FTP 协议细节;若未生效或你使用自定义端口,显式放行 21/tcp 与被动端口范围更稳妥。sudo firewall-cmd --permanent --add-service=ftp sudo firewall-cmd --permanent --add-port=21/tcp sudo firewall-cmd --permanent --add-port=30000-31000/tcp sudo firewall-cmd --reload - 仅允许特定来源访问(示例:仅内网 192.168.1.0/24):
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="ftp" accept' sudo firewall-cmd --reload - 运行时查看与持久化:
提示:若使用 firewalld,优先用“服务/富规则+端口”的组合,减少直接操作链表的复杂度。sudo firewall-cmd --list-all sudo firewall-cmd --runtime-to-permanent
三 使用 iptables 的做法
- 放行控制通道(21/tcp),并仅对被动端口范围放行数据通道(示例:30000–31000/tcp):
说明:主动模式涉及服务器从 20/tcp 主动出站连接客户端高位端口,但在 NAT/严格出站策略下更易受阻,跨公网环境通常改用被动模式。# 控制通道 sudo iptables -A INPUT -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT sudo iptables -A OUTPUT -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT # 被动模式数据通道(服务器监听) sudo iptables -A INPUT -p tcp --dport 30000:31000 -m state --state NEW,ESTABLISHED -j ACCEPT sudo iptables -A OUTPUT -p tcp --sport 30000:31000 -m state --state ESTABLISHED -j ACCEPT - 保存规则(按发行版):
- Debian/Ubuntu:
sudo apt-get install iptables-persistent sudo netfilter-persistent save sudo netfilter-persistent reload - RHEL/CentOS 7(传统方式):
sudo service iptables save - 通用:
sudo iptables-save > /etc/iptables/rules.v4
- Debian/Ubuntu:
四 vsftpd 与防火墙的配合要点
- 在 /etc/vsftpd.conf 中显式设置被动端口范围,并重启服务:
随后在防火墙中仅放行上述端口范围,避免开放 1024–65535 这类过宽区间。pasv_min_port=30000 pasv_max_port=31000 # 其他常用安全项可按需开启: # anonymous_enable=NO # local_enable=YES # write_enable=YES # chroot_local_user=YES sudo systemctl restart vsftpd - 若使用非默认端口(如 2121/tcp),需同步修改 vsftpd 的 listen_port 并在防火墙放行对应端口。
五 安全加固与排错清单
- 加固建议
- 优先采用被动模式 + 固定小范围被动端口,并在防火墙精确放行;避免使用过宽端口段。
- 结合 firewalld 富规则限制来源网段,仅暴露必要服务。
- 启用 SELinux/AppArmor 等强制访问控制,配合最小权限原则;必要时检查相关布尔值与策略。
- 如非必须,优先考虑更安全的 SFTP/SSH 替代明文 FTP。
- 快速排错
- 使用
sudo firewall-cmd --list-all或sudo iptables -L -n -v核对规则是否生效与命中计数。 - 客户端连接失败但端口已放行时,优先检查:被动端口范围是否一致、服务器是否监听该范围、NAT/云安全组是否放通、SELinux/AppArmor 是否拦截。
- 使用
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux FTPServer的防火墙配置技巧
本文地址: https://pptw.com/jishu/759898.html
