FTP服务器如何配置防火墙
导读:FTP服务器防火墙配置指南 一 基础概念与端口规划 FTP有两种工作模式:主动模式与被动模式。控制通道始终使用TCP 21端口;主动模式的数据通道由服务器从20/tcp端口主动连接到客户端高位端口;被动模式由服务器在配置的被动端口范围内监...
FTP服务器防火墙配置指南
一 基础概念与端口规划
- FTP有两种工作模式:主动模式与被动模式。控制通道始终使用TCP 21端口;主动模式的数据通道由服务器从20/tcp端口主动连接到客户端高位端口;被动模式由服务器在配置的被动端口范围内监听,等待客户端连接。为减少暴露面,建议在被动模式显式限定端口范围(如30000–31000或50000–50100),并在防火墙中仅开放该范围。若使用FTPS(FTP over SSL/TLS),控制与数据通道均被加密,但端口规划与主动/被动模式一致,仍需放行相同端口与范围。
二 使用 firewalld 的配置步骤(CentOS/RHEL、Fedora)
- 放行服务与端口
- 放行内置FTP服务(会同时处理控制通道与相关连接,适合大多数场景):
- 命令:
sudo firewall-cmd --permanent --add-service=ftp & & sudo firewall-cmd --reload
- 命令:
- 或手动精确放行端口(示例被动范围30000–31000):
- 命令:
sudo firewall-cmd --permanent --add-port=21/tcp - 命令:
sudo firewall-cmd --permanent --add-port=20/tcp - 命令:
sudo firewall-cmd --permanent --add-port=30000-31000/tcp - 命令:
sudo firewall-cmd --reload
- 命令:
- 放行内置FTP服务(会同时处理控制通道与相关连接,适合大多数场景):
- 仅允许特定来源访问(示例IP:192.168.1.100)
- 命令:
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 --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="20" accept' - 命令:
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="30000-31000" accept' - 命令:
sudo firewall-cmd --reload
- 命令:
- 说明:若未显式放行被动端口范围,被动模式在 firewalld 上可能失败;使用内置“ftp”服务可简化配置,但精确端口放行更利于审计与最小化暴露。
三 使用 UFW 的配置步骤(Ubuntu/Debian)
- 放行端口与范围
- 命令:
sudo ufw allow 20/tcp - 命令:
sudo ufw allow 21/tcp - 命令:
sudo ufw allow 30000:31000/tcp
- 命令:
- 说明:UFW为iptables的前端,规则简洁直观;务必与FTP服务器配置的被动端口范围保持一致,否则被动模式将无法正常传输数据。
四 使用 iptables 的配置步骤(通用 Linux)
- 放行控制与被动端口(示例被动范围50000–50100)
- 命令:
sudo iptables -A INPUT -p tcp --dport 21 -j ACCEPT - 命令:
sudo iptables -A INPUT -p tcp --dport 20 -j ACCEPT - 命令:
sudo iptables -A INPUT -p tcp --dport 50000:50100 -j ACCEPT - 命令:
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
- 命令:
- 保存规则
- Debian/Ubuntu:
sudo apt-get install iptables-persistent & & sudo netfilter-persistent save & & sudo netfilter-persistent reload - CentOS/RHEL:
sudo service iptables save
- Debian/Ubuntu:
- 说明:
-m state --state ESTABLISHED,RELATED用于放行已建立及相关连接,避免数据通道被拦截;如未使用状态模块,需确保OUTPUT链也允许相应出站流量。
五 服务器配置与验证要点
- vsftpd 关键配置(示例)
- 启用本地用户与写入:
local_enable=YES、write_enable=YES - 限制用户根目录:
chroot_local_user=YES - 被动端口范围(与防火墙一致):
pasv_min_port=30000、pasv_max_port=31000 - 重启服务:
sudo systemctl restart vsftpd
- 启用本地用户与写入:
- 启用加密(FTPS,强烈建议)
- 生成证书:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem - vsftpd 配置:
ssl_enable=YES、force_local_data_ssl=YES、force_local_logins_ssl=YES、ssl_cert_file=/etc/ssl/private/vsftpd.pem - 重启服务:
sudo systemctl restart vsftpd
- 生成证书:
- 连通性验证
- 客户端工具(如FileZilla)测试上传/下载;命令行:
ftp < server-ip>。若被动模式失败,优先检查服务器被动端口范围与防火墙是否一致,再检查日志(如/var/log/vsftpd.log或xferlog)。
- 客户端工具(如FileZilla)测试上传/下载;命令行:
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: FTP服务器如何配置防火墙
本文地址: https://pptw.com/jishu/748339.html
