温馨提示×

CentOS SFTP安全策略有哪些推荐

小樊
36
2025-12-23 10:48:59
栏目: 智能运维

CentOS SFTP 安全策略清单

一 身份与访问控制

  • 使用专用 SFTP 用户/用户组(如:sftpusers),禁止共享账号与系统账号滥用。
  • 禁用root通过 SSH 登录:设置PermitRootLogin no
  • 采用SSH 密钥认证为主,必要时再启用密码;在 /etc/ssh/sshd_config 中配置:PubkeyAuthentication yesPasswordAuthentication no
  • 仅允许指定用户或组访问 SFTP:在 sshd_config 使用Match User/Group进行精细化策略下发。
  • 限制来源 IP:在 firewalld 中按源地址放通 22/TCP,或在 sshd_config 的 Match Address 块中限制。
  • 启用Fail2ban防暴力破解,针对 sshd 设置自动封禁规则。

二 传输与会话安全

  • 使用internal-sftp 子系统:设置Subsystem sftp internal-sftp,更安全且易于与 chroot 配合。
  • 强制仅 SFTP:在 Match 块中配置ForceCommand internal-sftp
  • 禁用不必要通道与功能:关闭X11ForwardingAllowTcpForwarding、端口转发与代理转发,减少攻击面。
  • 仅开放必要端口:通过firewalld仅放行 22/TCP,并定期审查规则。
  • 保持组件更新:及时更新 OpenSSH 与系统补丁,修复已知漏洞。

三 目录与权限模型

  • 采用Chroot 监狱:将用户根目录限制在其主目录或统一目录(如 /srv/sftp),在 Match 块中设置ChrootDirectory
  • 满足 chroot 的权限前提:Chroot 根目录必须由root 拥有且权限为755;为用户创建可写子目录(如 uploads),由用户本人拥有。
  • 最小权限原则:禁止用户修改根目录属性;必要时使用ACL对共享目录进行精细化授权。
  • 示例目录结构:
    • /srv/sftp(root:root,755)
    • /srv/sftp/sftpuser(root:root,755)
    • /srv/sftp/sftpuser/uploads(sftpuser:sftpusers,775/700 视业务而定)

四 日志监控与合规

  • 启用并集中审计 SSH/SFTP 日志:重点查看**/var/log/secure**,监控失败登录、异常时段与来源 IP。
  • 结合 Fail2ban 与系统日志分析,形成告警与处置闭环。
  • 定期复核用户与目录权限,清理过期账号与共享目录,保持最小权限。

五 推荐最小配置示例

  • 目标:仅允许 sftpusers 组成员通过密钥登录,chroot 到各自家目录,仅能写入 uploads 子目录,禁用 root 与其他转发功能。

  • 步骤

    1. 创建用户与目录
      groupadd sftpusers
      useradd -m -g sftpusers -s /bin/false sftpuser
      echo “StrongPass!” | passwd --stdin sftpuser # 若仍启用密码
      mkdir -p /home/sftpuser/uploads
      chown root:root /home/sftpuser
      chmod 755 /home/sftpuser
      chown sftpuser:sftpusers /home/sftpuser/uploads
      chmod 775 /home/sftpuser/uploads

    2. 配置公钥(推荐)
      mkdir -p /home/sftpuser/.ssh
      echo “ssh-rsa AAAAB3NzaC1yc2E…” >> /home/sftpuser/.ssh/authorized_keys
      chown -R sftpuser:sftpusers /home/sftpuser/.ssh
      chmod 700 /home/sftpuser/.ssh
      chmod 600 /home/sftpuser/.ssh/authorized_keys

    3. 配置 /etc/ssh/sshd_config(片段)
      Port 22
      PermitRootLogin no
      PubkeyAuthentication yes
      PasswordAuthentication no
      Subsystem sftp internal-sftp
      Match Group sftpusers
      ChrootDirectory /home/%u
      ForceCommand internal-sftp
      X11Forwarding no
      AllowTcpForwarding no
      PermitTunnel no

    4. 防火墙与防暴力
      firewall-cmd --permanent --add-service=ssh && firewall-cmd --reload

    或按源 IP 放通:firewall-cmd --permanent --zone=trusted --add-source=1.2.3.4

    yum install -y epel-release fail2ban && systemctl enable --now fail2ban

    1. 重启与验证
      systemctl restart sshd
      sftp sftpuser@your_server_ip
      注:修改 sshd_config 前先备份;变更后用 sshd -t 检查语法,避免锁死。

0