温馨提示×

Ubuntu FTP Server防火墙配置

小樊
43
2025-12-09 07:45:13
栏目: 智能运维

Ubuntu FTP Server 防火墙配置

一 前置准备与模式选择

  • 安装并启用 FTP 服务(以 vsftpd 为例):sudo apt update && sudo apt install vsftpd && sudo systemctl enable --now vsftpd。
  • 选择传输模式:
    • 主动模式:服务器从 20/tcp 主动连接客户端数据端口,通常只需放行服务器的 20/tcp21/tcp
    • 被动模式(PASV):客户端连接服务器随机高位端口,需在服务器与防火墙同时开放一段端口范围(如 30000–31000/tcp),并在 vsftpd 中配置 pasv_min_port/pasv_max_port。
  • 建议:公网或 NAT 环境下优先使用被动模式,便于穿越防火墙与云安全组。

二 使用 UFW 放行 FTP

  • 启用 UFW:sudo ufw enable;查看状态:sudo ufw status。
  • 放行控制与数据端口:
    • 主动模式:sudo ufw allow 21/tcp;sudo ufw allow 20/tcp
    • 被动模式:在 vsftpd 配置端口范围后(如 30000–31000/tcp),执行:sudo ufw allow 30000:31000/tcp
  • 重载服务:sudo systemctl restart vsftpd;用 FileZilla 等客户端测试上传/下载。

三 使用 iptables 放行 FTP

  • 主动模式常用规则:
    • 入站:sudo iptables -A INPUT -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
    • 入站:sudo iptables -A INPUT -p tcp --dport 20 -m state --state NEW,ESTABLISHED -j ACCEPT
    • 出站:sudo iptables -A OUTPUT -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT
    • 出站:sudo iptables -A OUTPUT -p tcp --sport 20 -m state --state ESTABLISHED -j ACCEPT
  • 被动模式:在 vsftpd 配置端口范围(如 30000–31000/tcp)后,放行该范围:
    • 入站:sudo iptables -A INPUT -p tcp --dport 30000:31000 -m state --state NEW,ESTABLISHED -j ACCEPT
  • 持久化(Debian/Ubuntu):sudo apt-get install iptables-persistent;sudo netfilter-persistent save。

四 使用 firewalld 放行 FTP(如已安装 firewalld)

  • 启动与开机自启:sudo systemctl start firewalld && sudo systemctl enable firewalld。
  • 放行规则:
    • 直接放行服务与端口:sudo firewall-cmd --permanent --add-service=ftp;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;查看:sudo firewall-cmd --list-all。

五 vsftpd 与防火墙联动及安全建议

  • vsftpd 关键配置(/etc/vsftpd.conf):
    • 启用被动模式与端口范围:pasv_enable=YES;pasv_min_port=30000;pasv_max_port=31000
    • 本地用户与写入:local_enable=YES;write_enable=YES;chroot_local_user=YES;allow_writeable_chroot=YES。
    • 加密传输(推荐):ssl_enable=YES;rsa_cert_file=/etc/ssl/private/vsftpd.crt;rsa_private_key_file=/etc/ssl/private/vsftpd.key。
  • 云环境:除系统防火墙外,还需在云厂商安全组放行 21/tcp 与被动端口范围(如 30000–31000/tcp)。
  • 安全建议:优先采用 SFTP/FTPS;避免使用过大的被动端口范围;限制可登录用户与目录;定期更新与审计日志。

0