温馨提示×

Linux vsftp防火墙配置:保护服务器安全

小樊
41
2025-12-14 03:40:25
栏目: 云计算

Linux vsftpd 防火墙配置与加固指南

一 基础安全与 vsftpd 推荐配置

  • 禁用匿名访问、仅启用本地用户,开启写入与目录隔离,降低攻击面:
    • 编辑配置文件:/etc/vsftpd/vsftpd.conf
    • 关键项:
      • anonymous_enable=NO
      • local_enable=YES
      • write_enable=YES
      • chroot_local_user=YES
      • 如必须可写 chroot,使用更安全的替代:allow_writeable_chroot=NO,并为上传目录单独赋权(如 755/775),避免将根目录设为可写。
  • 启用 SSL/TLS 强制加密,防止明文凭据与数据泄露:
    • 生成证书(示例):
      • openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.key -out /etc/ssl/certs/vsftpd.crt
    • vsftpd 配置:
      • ssl_enable=YES
      • rsa_cert_file=/etc/ssl/certs/vsftpd.crt
      • rsa_private_key_file=/etc/ssl/private/vsftpd.key
      • force_local_logins_ssl=YES
      • force_local_data_ssl=YES
  • 日志与审计:
    • xferlog_enable=YES
    • xferlog_file=/var/log/vsftpd.log
  • 重启生效:systemctl restart vsftpd

二 防火墙放行与模式选择

  • 主动模式与被动模式要点
    • 主动模式:客户端在高位端口发起数据连接,服务器从20/tcp主动连回客户端;对客户端 NAT/防火墙不友好。
    • 被动模式:服务器在预设的高位端口范围等待客户端连接;对穿越 NAT/云安全组更友好,推荐在公网环境使用。
  • firewalld(RHEL/CentOS 7+/Fedora)
    • 放行控制通道与服务:
      • firewall-cmd --permanent --zone=public --add-service=ftp
      • 或显式放行端口:firewall-cmd --permanent --zone=public --add-port=21/tcp
    • 放行被动端口范围(示例:40000-50000/tcp):
      • firewall-cmd --permanent --zone=public --add-port=40000-50000/tcp
    • 重载:firewall-cmd --reload
  • UFW(Debian/Ubuntu)
    • 放行控制与被动端口:
      • ufw allow 21/tcp
      • ufw allow 40000:50000/tcp
    • 启用:ufw enable
  • iptables(传统方式)
    • 放行控制与被动端口:
      • iptables -A INPUT -p tcp --dport 21 -j ACCEPT
      • iptables -A INPUT -p tcp --dport 40000:50000 -j ACCEPT
    • 保存(Debian/Ubuntu):netfilter-persistent save;或 iptables-save > /etc/iptables/rules.v4
  • 被动端口范围建议
    • 选择一个较小且明确的区间(如40000-5000059800-59900),并在防火墙与 vsftpd 配置中保持一致。

三 vsftpd 与防火墙联动配置示例

  • 被动模式最小配置(示例端口范围:40000-50000
    • vsftpd.conf:
      • pasv_enable=YES
      • pasv_min_port=40000
      • pasv_max_port=50000
    • 防火墙:放行21/tcp40000-50000/tcp(见第二部分对应命令)
    • 重启:systemctl restart vsftpd
  • 主动模式要点
    • vsftpd.conf:
      • connect_from_port_20=YES(服务器使用 20/tcp 主动发起数据连接)
    • 防火墙:放行21/tcp20/tcp
    • 注意:客户端需允许入站数据连接,NAT/严格客户端防火墙下常不如被动模式稳定
  • 修改默认控制端口(示例:2121
    • vsftpd.conf:listen_port=2121
    • 防火墙:放行2121/tcp
    • 可选:更新 /etc/services 中 ftp 端口映射(部分系统/工具依赖该文件)
    • 重启:systemctl restart vsftpd

四 验证与排障

  • 服务与端口检查
    • 服务状态:systemctl status vsftpd
    • 端口监听:ss/telnet/nmap 确认 21/tcp 与被动端口范围处于监听
  • 防火墙规则核验
    • firewalld:firewall-cmd --list-all(查看 services/ports)
    • UFW:ufw status verbose
    • iptables:iptables -S(或 iptables -L -n
  • 客户端连接测试
    • 主动模式:命令行 ftp 客户端通常默认主动;被动模式:使用 FileZilla 等图形客户端默认被动
    • 启用 TLS 时,客户端需选择“要求显式 FTP over TLS”
  • 日志与监控
    • 实时查看:tail -f /var/log/vsftpd.log
    • 异常登录与暴力尝试:部署 Fail2Ban 监控日志并自动封禁

五 加固清单与最佳实践

  • 身份与访问控制
    • 禁用匿名:anonymous_enable=NO
    • 目录隔离:chroot_local_user=YES;如需可写,避免 allow_writeable_chroot=YES,改为对上传目录单独授权
  • 加密与协议
    • 强制 SSL/TLSssl_enable=YESforce_local_logins_ssl=YESforce_local_data_ssl=YES
    • 证书与协议:使用有效证书;禁用不安全协议(如 SSLv2/SSLv3)
  • 端口与攻击面
    • 被动端口范围固定且最小化(如40000-50000),并在防火墙精确放行
    • 仅开放必要端口(控制通道与被动端口)
  • 系统与合规
    • 启用 SELinux 时按需设置布尔值(如 ftp_home_dirallow_ftpd_full_access),确保与目录标签/权限一致
    • 定期更新系统与 vsftpd,限制登录失败次数,使用强密码策略

0