温馨提示×

怎样限制FTP服务器访问IP

小樊
33
2025-11-30 08:36:43
栏目: 云计算

限制 FTP 服务器访问 IP 的实用方案

一、防火墙层面限制(推荐)

  • 使用 iptables 精确控制来源 IP 与端口,适用于所有 FTP 服务(如 vsftpd、proftpd、pure-ftpd)。
    • 仅允许单个 IP 访问控制端口:
      • 命令:sudo iptables -A INPUT -p tcp --dport **21** -s **203.0.113.10** -j ACCEPT
      • 命令:sudo iptables -A INPUT -p tcp --dport **21** -j DROP
    • 允许网段访问:
      • 命令:sudo iptables -A INPUT -p tcp --dport **21** -s **192.168.1.0/24** -j ACCEPT
    • 规则持久化:
      • Debian/Ubuntu:sudo apt-get install iptables-persistent 并在保存后写入 /etc/iptables/rules.v4
      • 通用:sudo iptables-save > /etc/iptables/rules.v4
  • 使用 UFW(Ubuntu/Debian 友好):
    • 仅允许指定 IP 访问 21/tcpsudo ufw allow from **203.0.113.10** to any port **21**
    • 如需默认拒绝其他来源,可先设置默认策略为 deny,再逐条放行必要来源
  • 说明:上述仅限制了控制通道(21/tcp)。若启用被动模式(PASV),还需放行被动端口范围(见下文 vsftpd 示例)。

二、在 vsftpd 中基于 TCP Wrappers 限制

  • 启用 vsftpd 的 TCP Wrappers 支持:编辑 /etc/vsftpd.conf,设置 tcp_wrappers=YES,然后重启服务。
  • 配置访问控制:
    • 编辑 /etc/hosts.denyvsftpd: ALL
    • 编辑 /etc/hosts.allowvsftpd: **203.0.113.10**, **192.168.1.0/24**
  • 使配置生效:sudo systemctl restart vsftpd
  • 适用场景:快速按来源 IP 做全局允许/拒绝,配置简单、与具体 FTP 服务解耦。

三、vsftpd 专项配置与被动端口放行

  • 基本思路:在 /etc/vsftpd.conf 中结合用户与目录限制,并显式配置被动模式端口范围,便于防火墙放行。
  • 示例(白名单思路,结合外部防火墙放行 21/tcp 与被动端口):
    • 配置片段:
      • anonymous_enable=NO
      • local_enable=YES
      • chroot_local_user=YES
      • allow_writeable_chroot=YES
      • pasv_enable=YES
      • pasv_address=你的服务器公网IP
      • pasv_min_port=**10000**
      • pasv_max_port=**10100**
    • 防火墙放行被动端口范围(示例):
      • sudo iptables -A INPUT -p tcp --dport **10000:10100** -j ACCEPT
    • 重启服务:sudo systemctl restart vsftpd
  • 说明:仅配置 chroot_local_user 并不能替代 IP 限制,它主要是目录隔离;IP 限制仍需通过防火墙或 TCP Wrappers 实现。

四、进阶与运维建议

  • 结合 fail2ban 自动封禁暴力来源 IP(示例):
    • 安装:sudo apt-get install fail2ban
    • /etc/fail2ban/jail.local 中启用 vsftpd 段并指向日志(如 /var/log/vsftpd.log),设置 bantimefindtimemaxretry,重启 fail2ban 服务。
  • 使用 PAM 白名单 做用户级来源限制(可选):
    • /etc/pam.d/vsftpd 添加:auth required pam_listfile.so item=user sense=allow file=/etc/vsftpd/allowed_users onerr=succeed
    • /etc/vsftpd/allowed_users 中写入允许登录的用户名(可与 IP 限制叠加使用)。
  • 安全提示:
    • 尽量使用 SFTP/FTPS 替代明文 FTP;若必须用 FTP,务必限制来源 IP、只开放必要端口、并定期审计日志。

0