SSH 一直被暴力破解怎么办:fail2ban 与密钥登录加固步骤 核心要点图解,禁用密码登录并启用密钥认证是防暴力破解的根本措施。;fail2ban 可自动封禁频繁失败的 IP,降低攻击面。;修改默认 SSH 端口并限制用户可进一步减少攻击尝试。;定期检查日志和更新系统是维持安全的关键。
SSH 一直被暴力破解怎么办:fail2ban 与密钥登录加固步骤 · 核心要点一图读懂(AegisX)

核心要点(TL;DR)

  • 禁用密码登录并启用密钥认证是防暴力破解的根本措施。
  • fail2ban 可自动封禁频繁失败的 IP,降低攻击面。
  • 修改默认 SSH 端口并限制用户可进一步减少攻击尝试。
  • 定期检查日志和更新系统是维持安全的关键。

痛点:SSH 暴力破解为何防不胜防

如果你管理过公网服务器,一定见过 /var/log/auth.log 里密密麻麻的 SSH 失败记录。攻击者利用自动化工具全天候扫描,尝试常见用户名和弱密码。一旦得手,服务器就可能沦为肉鸡。仅靠修改密码或换端口治标不治本,必须从认证机制和主动防御两层加固。本文提供 fail2ban 与密钥登录的完整操作步骤,跟着做就能显著降低风险。

第一步:启用 SSH 密钥登录,彻底告别密码

密码是暴力破解的根源,改用密钥认证能直接免疫密码猜解。操作如下:

  1. 生成密钥对(在本地机器执行):
    ssh-keygen -t ed25519 -C "your_email@example.com"
    按提示保存密钥(默认 ~/.ssh/id_ed25519),建议设置私钥密码。
  2. 上传公钥到服务器:
    ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server_ip
    或手动将公钥内容追加到服务器 ~/.ssh/authorized_keys。
  3. 设置权限(服务器执行):
    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys
  4. 测试密钥登录:新开终端,使用 ssh -i ~/.ssh/id_ed25519 user@server_ip 确认免密登录成功。

注意:在禁用密码登录前,务必保持一个已连接的 SSH 会话,防止配置错误导致无法登录。

第二步:修改 SSH 配置,禁用密码认证

编辑 /etc/ssh/sshd_config,调整以下参数:

Port 2222                     # 修改默认端口,降低扫描频率
PermitRootLogin no            # 禁止 root 直接登录
PasswordAuthentication no     # 禁用密码认证
PubkeyAuthentication yes      # 启用密钥认证
AllowUsers your_username      # 仅允许特定用户登录

保存后重启 SSH 服务:systemctl restart sshd。使用新端口和密钥登录验证,确认无误后关闭旧会话。

第三步:安装配置 fail2ban,自动封禁攻击 IP

fail2ban 通过监控日志,自动封禁多次认证失败的 IP。以 Ubuntu/Debian 为例:

  1. 安装:
    apt update && apt install fail2ban -y
  2. 创建本地配置:
    cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
    编辑 jail.local,在 [sshd] 段设置:
    enabled = true
    port = 2222
    maxretry = 3
    bantime = 1h
    findtime = 10m
  3. 启动并设置开机自启:
    systemctl enable fail2ban
    systemctl start fail2ban
  4. 查看状态:fail2ban-client status sshd 可看到当前封禁的 IP 列表。

如需调整封禁策略,可修改 bantime(封禁时长)和 maxretry(最大失败次数)。

第四步:验证与监控,确保加固生效

完成上述步骤后,进行以下检查:

  • 使用密码登录应被拒绝,密钥登录正常。
  • 故意输错密钥密码几次,观察 fail2ban 是否封禁你的 IP(可在服务器上用 fail2ban-client status sshd 查看)。
  • 检查 SSH 日志:tail -f /var/log/auth.log,确认无异常登录成功记录。
  • 使用 ss -tlnp | grep sshd 确认 SSH 监听在新端口。

建议定期查看 fail2ban 日志和封禁列表,及时调整规则。

第五步:进阶加固与工具推荐

除了基础配置,还可采取以下措施:

  • 启用双因素认证(如 Google Authenticator)。
  • 使用 ufw 或 firewalld 限制访问源 IP。
  • 定期更新系统和 SSH 软件补丁。
  • 部署入侵检测系统,如 AegisX 可提供实时 SSH 暴力破解防护和异常行为告警,与 fail2ban 互补,形成多层防御。

行动建议:立即加固你的 SSH

不要等到服务器被入侵才行动。按照本文步骤,今天就去配置密钥登录、禁用密码认证、安装 fail2ban,并修改默认端口。完成后用检查清单逐项核对,确保每项措施生效。安全是一个持续的过程,定期审计日志和更新规则同样重要。

常见问题(FAQ)

我已经用了密钥登录,为什么还有大量 SSH 失败日志?

即使启用了密钥登录,攻击者仍会尝试连接并触发认证失败。这些日志是正常的扫描行为,只要密码登录已禁用,攻击就不会成功。建议配合 fail2ban 自动封禁这些 IP,减少日志噪音。

fail2ban 安装后需要修改哪些配置才能生效?

安装后需创建 jail.local 文件启用 sshd 监控,并设置 maxretry、bantime 等参数。默认配置可能不启用 sshd,需手动添加 [sshd] 段并设置 enabled = true,然后重启服务。

如何安全地生成和使用 SSH 密钥对?

使用 ssh-keygen -t ed25519 生成密钥对,将公钥上传至服务器 ~/.ssh/authorized_keys,并设置权限 600。私钥务必加密保存,避免泄露。

修改 SSH 端口后需要注意什么?

修改端口后需更新防火墙规则允许新端口,并确保 SELinux 或 AppArmor 策略放行。同时通知相关用户,避免连接失败。建议先保留旧端口一段时间过渡。

除了 fail2ban 和密钥登录,还有哪些加固措施?

可禁用 root 直接登录、限制可登录用户、启用双因素认证、定期更新系统补丁,并使用入侵检测工具如 AegisX 进行实时监控和防护。