温馨提示×

如何提高Linux FTPServer的安全性

小樊
40
2025-12-28 19:28:20
栏目: 智能运维

Linux FTP Server 安全加固清单

一 协议与加密优先

  • 优先选择加密传输:使用 FTPS(FTP over SSL/TLS)SFTP(基于 SSH)。FTP 明文传输用户名与口令,风险高。若业务允许,建议直接采用 SFTP 替代 FTP。
  • 启用 FTPS(以 vsftpd 为例):生成证书(生产用 CA 签发,测试可用自签),并在 /etc/vsftpd/vsftpd.conf 中启用并强制加密:
    • 生成证书示例:
      sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.key -out /etc/ssl/certs/vsftpd.crt
    • 关键配置:
      • ssl_enable=YES
      • allow_anon_ssl=NO
      • force_local_data_ssl=YES
      • force_local_logins_ssl=YES
      • rsa_cert_file=/etc/ssl/certs/vsftpd.crt
      • rsa_private_key_file=/etc/ssl/private/vsftpd.key
      • 禁用不安全协议:ssl_sslv2=NO,ssl_sslv3=NO;如需兼容老客户端可保留 ssl_tlsv1=YES,更推荐仅启用 TLSv1.2+
  • 若采用 SFTP:基于 OpenSSH,通常无需额外 FTP 服务;可在 /etc/ssh/sshd_config 中禁用 root 登录、启用公钥认证、按需限制用户与来源 IP,重启 sshd 生效。

二 身份与访问控制

  • 禁用匿名访问:设置 anonymous_enable=NO,避免未授权访问与滥用。
  • 限制系统账号:将高权限账号(如 rootsudo 组)加入 /etc/vsftpd/ftpusers 或相应 PAM 配置,阻断其 FTP 登录。
  • 强制目录隔离:启用 chroot_local_user=YES 将本地用户限制在其主目录;若需可写,使用 allow_writeable_chroot=YES(注意某些版本/场景下可写 chroot 存在风险,必要时改为仅对特定子目录授权)。
  • 精细权限:为用户主目录设置 755,上传目录 775 并归属相应用户/组,避免越权与删除系统文件。
  • 登录保护:实施强密码策略(大小写字母、数字、特殊字符,定期更换),并限制失败登录尝试。

三 网络与防火墙配置

  • 被动模式端口范围:在 vsftpd.conf 中固定端口范围,便于防火墙放行:
    • pasv_enable=YES
    • pasv_min_port=40000
    • pasv_max_port=50000
    • 如对外服务,设置 pasv_address=服务器公网IP
  • 防火墙放行(示例):
    • 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=40000-50000/tcp
      • sudo firewall-cmd --reload
    • UFW:
      • sudo ufw allow 21/tcp
      • sudo ufw allow 20/tcp
      • sudo ufw allow 40000:50000/tcp
  • 安全组/边界防火墙:仅允许可信 IP/网段 访问 21 与控制通道所需端口。

四 日志监控与入侵防护

  • 启用日志:在 vsftpd.conf 中开启传输与登录日志,便于审计与取证:
    • xferlog_enable=YES
    • xferlog_file=/var/log/vsftpd.log
    • 结合系统日志(如 auth.log)观察失败登录与异常行为。
  • 入侵防护:部署 Fail2Ban 自动封禁暴力破解来源:
    • 示例 jail.local 片段:
      • [vsftpd]
      • enabled = true
      • port = 21,40000-50000
      • filter = vsftpd
      • logpath = /var/log/vsftpd.log
      • maxretry = 3
      • bantime = 3600
  • 定期审计与基线检查:周期性核查配置、用户、权限与日志,开展漏洞扫描与渗透测试演练。

五 系统加固与维护

  • 最小权限与隔离:启用 SELinuxAppArmor 对 vsftpd 进行域隔离与文件访问限制;按需设置布尔值(如 allow_ftpd_anon_write、allow_ftpd_full_access)与目录安全上下文。
  • 服务与内核参数:仅开放必要服务,限制并发连接与速率,调整文件描述符与内核网络参数以抵御资源耗尽与连接洪泛。
  • 持续更新与备份:通过包管理器及时更新 vsftpd/ProFTPD/Pure-FTPd 与依赖组件;对业务数据与配置定期备份与异地保存。
  • 安全基线示例(vsftpd 关键项汇总):
    • anonymous_enable=NO
    • local_enable=YES
    • write_enable=YES(按目录授权)
    • chroot_local_user=YES
    • allow_writeable_chroot=YES(或改为仅 upload 目录可写)
    • pasv_enable=YES;pasv_min_port=40000;pasv_max_port=50000;pasv_address=公网IP
    • ssl_enable=YES;allow_anon_ssl=NO;force_local_data_ssl=YES;force_local_logins_ssl=YES
    • rsa_cert_file=/etc/ssl/certs/vsftpd.crt;rsa_private_key_file=/etc/ssl/private/vsftpd.key
    • ssl_sslv2=NO;ssl_sslv3=NO;ssl_tlsv1=YES(更推荐仅启用 TLSv1.2+
    • xferlog_enable=YES;xferlog_file=/var/log/vsftpd.log

0