温馨提示×

如何防止Debian SFTP被暴力破解

小樊
43
2025-12-25 19:08:35
栏目: 智能运维

Debian SFTP防暴力破解实用方案

一 核心加固清单

  • 使用密钥认证并禁用密码:在客户端生成密钥对(如4096位 RSA),将公钥写入用户家目录的**~/.ssh/authorized_keys**,随后在服务器设置PasswordAuthentication noPubkeyAuthentication yes,可显著降低被暴力猜解的风险。
  • 禁用root远程登录:设置PermitRootLogin no,避免攻击者直接以最高权限账户尝试登录。
  • 更改默认端口:将Port 22改为非标准端口(如2222),能减少自动化扫描与噪声流量。
  • 限制认证尝试与并发会话:设置MaxAuthTries 3–5MaxSessions 2–5,降低短时间内的爆破效率。
  • 仅允许指定用户或组:通过AllowUsersAllowGroups白名单化管理登录主体。
  • 启用SFTP专用子系统Chroot隔离:使用Subsystem sftp internal-sftp,对特定用户/组强制仅SFTP,并限制在其主目录,减少攻击面。
  • 禁用不必要通道与转发:关闭X11ForwardingAllowTcpForwardingAllowAgentForwardingPermitTunnel,避免被滥用为跳板。
  • 强化目录权限:Chroot目录必须由root拥有且权限为755,可写目录单独授权给相应用户,以满足 internal-sftp 的权限要求。
  • 保持系统与软件更新:及时apt update && apt upgrade,修复OpenSSH等组件已知漏洞。

二 使用 Fail2ban 自动封禁

  • 安装与启用:执行sudo apt install fail2ban -y && sudo systemctl enable --now fail2ban
  • 配置 SSH 防护(/etc/fail2ban/jail.local):
    • 示例(若已改端口为2222):
      [sshd]
      enabled = true
      port = 2222
      filter = sshd
      logpath = /var/log/auth.log
      maxretry = 3
      bantime = 600
    • 若仍使用22端口,将 port 改为22
  • 使配置生效:执行sudo systemctl restart fail2ban
  • 说明:Fail2ban 会基于**/var/log/auth.log**的失败记录自动封禁反复尝试的源 IP,是抵御暴力破解的有效“闸门”。

三 防火墙与网络层限制

  • 使用UFW仅放行必要来源与端口:例如仅允许某固定 IP 访问22/2222端口,其余默认拒绝。
  • 使用iptables精细化控制:对指定来源放行,对其它来源丢弃22/2222端口的 TCP 包。
  • 原则:最小化暴露面,只开放必需端口与来源,并定期审计规则是否被误改。

四 最小权限与 SFTP 专用配置示例

  • 创建 SFTP 专用用户与组:
    • 组:sudo groupadd sftpusers
    • 用户:sudo useradd -m -g sftpusers -s /bin/false sftpuser(禁止 SSH 登录,仅用于 SFTP)
  • 配置 /etc/ssh/sshd_config(在文件末尾追加):
    Subsystem sftp internal-sftp
    Match Group sftpusers
    ChrootDirectory /home/%u
    ForceCommand internal-sftp
    X11Forwarding no
    AllowTcpForwarding no
    AllowAgentForwarding no
    PermitTunnel no
  • 目录与权限(满足 Chroot 要求):
    • 主目录:sudo chown root:root /home/sftpuser && sudo chmod 755 /home/sftpuser
    • 可写目录:sudo mkdir /home/sftpuser/uploads && sudo chown sftpuser:sftpusers /home/sftpuser/uploads
  • 应用配置:sudo systemctl restart ssh(或 sshd,视系统服务名而定)。

五 验证与运维

  • 配置语法检查:sudo sshd -t,确认无误再重启服务。
  • 查看与维护 Fail2ban:
    • 状态:sudo fail2ban-client status sshd
    • 解封:sudo fail2ban-client set sshd unbanip
  • 日志核查:持续关注**/var/log/auth.log**与 Fail2ban 日志,及时发现异常登录与封禁情况。
  • 安全运维:定期更新系统与安全组件,审计用户与权限,保留关键操作的审计记录。

0