- 首页 >
- 问答 >
-
智能运维 >
- Debian FTPServer的防火墙设置怎么做
Debian FTPServer的防火墙设置怎么做
小樊
42
2025-11-16 11:47:01
Debian FTP Server 防火墙设置
一、前置准备与模式选择
- 明确使用的 FTP 类型与控制端口:
- 明文 FTP:控制通道 21/TCP,主动模式数据通道由服务器从 20/TCP 发起。
- 显式 FTPS(FTP over SSL/TLS):控制通道 21/TCP,数据通道协商为 990/TCP(显式)或在 TLS 握手后使用协商端口。
- 被动模式(PASV):除 21/TCP 外,还需在服务器上固定一个数据端口范围(如 30000–31000/TCP),并在防火墙放行该范围。
- 建议做法:在服务器(如 vsftpd)配置中固定被动端口范围,并在防火墙放行对应端口;若使用云服务器,还需在云平台安全组同步放行相同端口。
二、使用 UFW 放行规则
- 安装并启用 UFW:
- sudo apt update && sudo apt install ufw
- sudo ufw enable
- 放行规则(按需选择):
- 明文 FTP:sudo ufw allow 21/tcp;主动模式通常还需 sudo ufw allow 20/tcp;被动模式需放行自定义端口段,例如 sudo ufw allow 30000:31000/tcp。
- 显式 FTPS:sudo ufw allow 21/tcp;如服务器/客户端要求显式数据端口,放行 990/tcp;被动端口段同样需要放行(如 30000:31000/tcp)。
- 应用与检查:
- sudo ufw reload
- sudo ufw status verbose(或 sudo ufw status numbered)
三、使用 iptables 放行规则
- 基本放行(示例):
- 控制通道: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 30000:31000 -j ACCEPT
- 已建立/相关连接:sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
- 本地回环:sudo iptables -A INPUT -i lo -j ACCEPT
- 持久化保存与恢复(Debian 常用做法):
- 保存:sudo iptables-save > /etc/iptables/rules.v4
- 开机恢复:可创建 /etc/network/if-pre-up.d/iptables,内容:/sbin/iptables-restore < /etc/iptables/rules.v4 并 chmod +x;或使用 iptables-persistent / netfilter-persistent 保存与加载规则。
四、vsftpd 与防火墙联动配置
- 编辑配置文件(/etc/vsftpd.conf)以匹配防火墙策略:
- 启用被动模式:pasv_enable=YES
- 设置被动端口范围(与防火墙一致):pasv_min_port=30000;pasv_max_port=31000
- 如为显式 FTPS:ssl_enable=YES;require_ssl_reuse=NO;rsa_cert_file=…;rsa_private_key_file=…
- 重启服务:sudo systemctl restart vsftpd
- 说明:主动模式由服务器从 20/TCP 主动连接客户端高位端口,通常需要在客户端侧或边界防火墙允许该方向连接;若不确定,优先使用被动模式并固定端口范围。
五、验证与常见问题
- 验证规则是否生效:
- UFW:sudo ufw status verbose(或 sudo ufw status numbered)
- iptables:sudo iptables -L -v -n
- 客户端连通性测试:
- 使用 FileZilla 连接,切换到目标模式(主动/被动或显式 FTPS),验证登录、列目录与传输是否正常。
- 常见问题与处理:
- 被动模式失败:检查服务器 pasv_min_port/pasv_max_port 与防火墙端口范围一致,且云安全组已放行。
- 数据连接超时:主动模式需确保服务器 20/TCP 能出网并到达客户端高位端口;被动模式需确保客户端能访问服务器被动端口段。
- 安全性建议:FTP 明文传输不安全,优先使用 SFTP(基于 SSH)或 FTPS(显式/隐式 TLS)。