如何配置Linux FTP防火墙
导读:Linux FTP 防火墙配置实操指南 一 前置准备与模式选择 明确 FTP 工作模式:主动模式由服务器从端口 20/TCP 主动连接客户端高位端口;被动模式由客户端连接服务器配置的被动端口范围。为减少攻击面,建议固定并限制被动端口范围(...
Linux FTP 防火墙配置实操指南
一 前置准备与模式选择
- 明确 FTP 工作模式:主动模式由服务器从端口 20/TCP 主动连接客户端高位端口;被动模式由客户端连接服务器配置的被动端口范围。为减少攻击面,建议固定并限制被动端口范围(如 30000–31000),并在服务器与防火墙中同步放行。若追求更高安全性,优先考虑 SFTP/FTPS 替代明文 FTP。以上做法能在防火墙层面更易管控与验证。
二 使用 firewalld 放行 FTP
- 放行控制与数据端口(适用于主动模式的最小集):
- 命令:sudo firewall-cmd --permanent --add-port=21/tcp
- 命令:sudo firewall-cmd --permanent --add-port=20/tcp
- 命令:sudo firewall-cmd --reload
- 放行被动端口范围(示例为 30000–31000,需与 FTP 服务端配置一致):
- 命令:sudo firewall-cmd --permanent --add-port=30000-31000/tcp
- 命令:sudo firewall-cmd --reload
- 说明:firewalld 对 FTP 有内置模块支持,但在生产环境更推荐显式放行控制端口与“固定被动端口范围”,便于审计与最小化暴露。
三 使用 iptables 放行 FTP
- 主动模式最小规则集(示例):
- 命令:sudo iptables -A INPUT -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
- 命令:sudo iptables -A INPUT -p tcp --sport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT
- 命令:sudo iptables -A OUTPUT -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT
- 命令:sudo iptables -A OUTPUT -p tcp --dport 20 -m state --state ESTABLISHED -j ACCEPT
- 被动模式(需限定端口范围,示例 30000–31000):
- 命令: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
- CentOS/RHEL:sudo service iptables save
- 提示:iptables 方案需确保“已建立/相关”状态流量可回传,避免数据通道被拦截。
四 结合 FTP 服务端的关键配置
- vsftpd 示例(/etc/vsftpd.conf,按需调整):
- 启用本地用户与写入:local_enable=YES;write_enable=YES
- 限制用户在主目录:chroot_local_user=YES
- 固定被动端口范围(与防火墙一致):pasv_min_port=30000;pasv_max_port=31000
- 主动模式相关:connect_from_port_20=YES
- 日志:xferlog_enable=YES
- 修改后重启服务:sudo systemctl restart vsftpd
- 说明:服务端被动端口范围必须与防火墙放行范围一致,否则被动模式将连接失败。
五 访问控制与加固建议
- 来源 IP 白名单(示例仅允许 192.168.1.100 访问 FTP 端口):
- firewalld:sudo firewall-cmd --permanent --add-rich-rule=‘rule family=“ipv4” source address=“192.168.1.100” port protocol=“tcp” port=“21” accept’;sudo firewall-cmd --reload
- iptables:sudo iptables -A INPUT -p tcp --dport 21 -s 192.168.1.100 -j ACCEPT;sudo iptables -A INPUT -p tcp --dport 21 -j DROP
- 加密传输:建议启用 FTPS(vsftpd 配置 ssl_enable=YES,配置证书并强制本地登录/数据传输使用 SSL),或直接使用 SFTP 替代明文 FTP,降低凭据与数据泄露风险。
- 验证步骤:从客户端连接并测试上传/下载;核对服务端与防火墙日志,确保控制通道与数据通道均正常。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何配置Linux FTP防火墙
本文地址: https://pptw.com/jishu/749315.html
