温馨提示×

CentOS SFTP安全漏洞如何防范

小樊
44
2025-11-29 19:56:33
栏目: 网络安全

CentOS SFTP 安全漏洞防范清单

一 加固基础配置

  • 禁用 root 登录:在 /etc/ssh/sshd_config 设置 PermitRootLogin no,重启 sshd
  • 使用 SSH 密钥替代密码:客户端生成 4096 位 RSA 密钥,将公钥写入用户 ~/.ssh/authorized_keys,并设置权限 700/600;服务端禁用密码认证 PasswordAuthentication no、启用 PubkeyAuthentication yes
  • 仅启用内部 SFTP:注释或移除外部子系统,使用 Subsystem sftp internal-sftp
  • 限制危险功能:在 Match Group sftpusers 中设置 ForceCommand internal-sftpAllowTcpForwarding noX11Forwarding no
  • 目录与所有权:Chroot 根目录(如 %h/sftp/%u)必须由 root:root 拥有且权限 755;可写目录在子目录中单独授权给相应用户。
  • 防火墙:仅放行 22/TCP,如条件允许仅允许受信 IP 段访问。
  • 日志与监控:设置 LogLevel VERBOSE,持续审计 /var/log/secure
  • 定期更新:执行 yum update openssh-server 保持修复最新漏洞。

二 用户与权限隔离

  • 创建专用组与用户:
    • groupadd sftpusers
    • useradd -m -g sftpusers -s /sbin/nologin sftpuser(或 -s /bin/false
  • 目录结构示例:
    • /sftp/sftpuser(root:root,755
    • /sftp/sftpuser/upload(sftpuser:sftpusers,755/775 视业务而定)
  • Chroot 与权限要点:Chroot 目录及上级必须为 root 所有;如需上传,给对应用户在子目录授予写权限,避免对 Chroot 根目录可写。
  • 公钥分发与权限:
    • mkdir -p ~sftpuser/.ssh && chmod 700 ~sftpuser/.ssh
    • echo “<公钥>” > ~sftpuser/.ssh/authorized_keys && chmod 600 ~sftpuser/.ssh/authorized_keys
    • chown -R sftpuser:sftpusers ~sftpuser/.ssh
  • 可选:为 SFTP 用户设置 umask 002/022,统一新建文件权限。

三 网络与登录防护

  • 限制来源 IP:
    • firewalld:firewall-cmd --permanent --zone=public --add-rich-rule=‘rule family=“ipv4” source address=“<TRUSTED_IP>/32” port port=“22” protocol=“tcp” accept’ && firewall-cmd --reload
    • 或仅放行白名单段,其余默认拒绝。
  • 防暴力破解:部署 Fail2ban,启用 [sshd] jail,maxretry=5bantime=3600,日志路径 /var/log/secure
  • 端口与协议:尽量保持 22/TCP 不变更;如需端口迁移,同步更新防火墙与客户端配置,并谨慎评估现有自动化流程的兼容性。
  • 连接测试:
    • sftp sftpuser@<server_ip>
    • 验证仅密钥可登录、失败登录被封禁、日志有对应记录。

四 已知漏洞处置要点

  • CVE-2020-15778(scp 命令注入):
    • 修复:升级到 OpenSSH ≥ 8.4;如无法升级,建议禁用 scp(如重命名 /usr/bin/scp 为不可用或卸载 openssh-clients,注意对运维流程影响)。
    • 说明:该问题影响 scp,不直接等同于 SFTP 子系统漏洞,但常见运维替代关系使风险外溢。
  • 低版本 OpenSSH 历史漏洞:如扫描报出历史 SFTP/SSH 漏洞,建议升级至包含修复的版本(如 8.5p1 起修复若干问题);离线环境升级前准备 telnet 等应急通道,升级后及时关闭。

五 快速配置示例

  • 服务端 /etc/ssh/sshd_config 片段:
    • PermitRootLogin no
    • PasswordAuthentication no;PubkeyAuthentication yes
    • Subsystem sftp internal-sftp
    • Match Group sftpusers
      • ChrootDirectory %h
      • ForceCommand internal-sftp
      • AllowTcpForwarding no;X11Forwarding no
  • 目录与权限:
    • chown root:root /sftp/sftpuser && chmod 755 /sftp/sftpuser
    • chown sftpuser:sftpusers /sftp/sftpuser/upload
  • 生效与验证:
    • systemctl restart sshd
    • tail -f /var/log/secure;sftp sftpuser@ 测试上传/下载与权限边界。

0