温馨提示×

Debian SFTP配置中如何禁用不必要的功能

小樊
39
2025-12-14 00:15:12
栏目: 智能运维

Debian SFTP配置禁用不必要功能

一 核心原则

  • 只启用必要的文件传输能力,禁止 Shell 访问与网络转发。
  • 使用 internal-sftp 并配合 Chroot 将用户限制在指定目录。
  • 采用最小权限与最小功能集:禁用 root 直登、禁用密码登录(优先密钥)、关闭 TCP/代理转发X11
  • 通过 AllowUsers/AllowGroups 白名单控制可登录账户。
  • 变更前语法校验,变更后平滑重载,全程保留可回滚方案。

二 推荐配置示例

  • 全局基础加固(/etc/ssh/sshd_config)
    • 禁用 root 直登:PermitRootLogin no
    • 仅用密钥认证:PasswordAuthentication noPubkeyAuthentication yes
    • 限制认证尝试与并发:MaxAuthTries 3MaxSessions 3
    • 白名单控制:AllowUsers your_sftp_user(或 AllowGroups sftpusers
    • 可选:更改端口(如 Port 2222),并配合防火墙仅放行必要来源
  • SFTP专用配置(放在文件末尾,使用 Match 块)
    • 禁用外部 sftp-server,改用内置:Subsystem sftp internal-sftp -l INFO -f AUTH
    • 限制为 SFTP 并禁转发:
      Match Group sftpusers
          ChrootDirectory %h
          ForceCommand internal-sftp
          AllowTcpForwarding no
          X11Forwarding no
          PermitTunnel no
          AllowAgentForwarding no
          PermitTTY no
      
    • 如需对单个用户生效,将 Match Group sftpusers 替换为 Match User username。以上做法可确保用户被限制在自家目录且仅能使用 SFTP。

三 权限与目录设置

  • Chroot 根目录(如 %h 或自定义目录)必须:
    • 属主为 root:root,权限 755(或 750);否则 internal-sftp 会拒绝登录。
  • 用户可写目录放在根下,例如:
    • 家目录结构:/home/username(root 所有)与 /home/username/upload(username 所有)
    • 命令示例:
      sudo chown root:root /home/username
      sudo chmod 755 /home/username
      sudo mkdir -p /home/username/upload
      sudo chown username:username /home/username/upload
      sudo chmod 755 /home/username/upload
      
  • 若指定自定义根目录(如 /sftp/www-data),同样要求根目录 root:root 755,可写子目录交由业务用户所有。

四 验证与运维

  • 配置语法检查:sudo sshd -t
  • 平滑重载:sudo systemctl reload ssh(或 restart)
  • 连接与行为验证:
    • 连接测试:sftp -P 22 your_sftp_user@host
    • 目录限制测试:在 SFTP 中执行 cd … 应失败;pwd 应显示被限制的根
  • 日志审计:实时查看 /var/log/auth.log 中的 SFTP 登录与拒绝信息
  • 入侵防护:启用 Fail2ban 防止暴力破解
    • 安装与启用:sudo apt install fail2ban && sudo systemctl enable --now fail2ban
    • 按需配置 /etc/fail2ban/jail.local 的 SSH 规则。

五 常见问题与排查

  • Chroot 失败或无法登录:检查根目录是否为 root:root 755,父目录不可写;用户可写目录应单独授权
  • 认证被拒:确认 PasswordAuthentication 与密钥已正确配置;使用 ssh -v 与日志定位问题
  • 端口与防火墙:若更改 Port,确保防火墙与云安全组放行对应端口
  • 配置未生效:确认 Match 块位置在文件末尾、无语法错误,并执行 reload/restart

0