SSH端口一直被暴力破解怎么办:从fail2ban到密钥登录的完整加固步骤 核心要点图解,fail2ban可自动封禁频繁失败的IP,大幅减少暴力破解尝试。;禁用密码登录并启用密钥认证是防止SSH暴破的根本措施。;修改默认SSH端口能降低自动化攻击概率,但非长久之计。;定期检查日志和更新系统补丁是持续安全的关键。
SSH端口一直被暴力破解怎么办:从fail2ban到密钥登录的完整加固步骤 · 核心要点一图读懂(AegisX)

核心要点(TL;DR)

  • fail2ban可自动封禁频繁失败的IP,大幅减少暴力破解尝试。
  • 禁用密码登录并启用密钥认证是防止SSH暴破的根本措施。
  • 修改默认SSH端口能降低自动化攻击概率,但非长久之计。
  • 定期检查日志和更新系统补丁是持续安全的关键。

痛点:SSH 端口为何总被暴力破解?

如果你管理过公网服务器,很可能见过 /var/log/auth.log 中密密麻麻的 Failed password 记录。SSH 作为远程管理入口,默认端口 22 是自动化扫描的重灾区,攻击者利用字典进行暴力破解,一旦得手即可完全控制服务器。本文提供从 fail2ban 到密钥登录的完整加固步骤,包含具体命令和检查清单,帮助你彻底阻断这类攻击。

原理与危害:暴力破解如何发生?

攻击者通过扫描开放 22 端口的 IP,使用常见用户名(如 root、admin)和弱密码字典尝试登录。一旦成功,他们会植入挖矿程序、勒索软件或后门,导致数据泄露、服务瘫痪。即使未成功,大量尝试也会消耗服务器资源,并可能触发账号锁定策略,影响正常运维。

具体排查:确认是否被攻击

首先检查登录日志:

sudo grep 'Failed password' /var/log/auth.log | tail -20
sudo lastb | head -20

如果看到大量来自不同 IP 的失败记录,说明正在被扫描。还可以使用 sudo grep 'Accepted password' /var/log/auth.log 确认是否有异常成功登录。检查当前登录用户:who 或 w。

分步解决:从 fail2ban 到密钥登录

1. 安装并配置 fail2ban

fail2ban 能自动封禁多次尝试失败的 IP。安装:

sudo apt install fail2ban  # Debian/Ubuntu
sudo yum install fail2ban  # CentOS/RHEL

创建本地配置 /etc/fail2ban/jail.local:

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
findtime = 600

重启服务:sudo systemctl restart fail2ban。查看状态:sudo fail2ban-client status sshd。

2. 修改 SSH 默认端口

编辑 /etc/ssh/sshd_config,将 Port 22 改为其他端口(如 2222),然后重启 sshd:sudo systemctl restart sshd。注意更新防火墙规则和 fail2ban 配置中的端口。

3. 启用密钥登录并禁用密码认证

在客户端生成密钥对:ssh-keygen -t rsa -b 4096,将公钥上传至服务器:ssh-copy-id -p 2222 user@server。测试密钥登录成功后,编辑 /etc/ssh/sshd_config:

PubkeyAuthentication yes
PasswordAuthentication no
ChallengeResponseAuthentication no

重启 sshd 服务。确保不要关闭当前会话,另开窗口测试。

4. 限制登录用户和权限

在 sshd_config 中添加 AllowUsers yourusername,禁止 root 直接登录:PermitRootLogin no。设置 MaxAuthTries 3 减少尝试次数。

检查清单与对比

措施作用命令/配置
fail2ban自动封禁恶意 IPjail.local 配置
修改端口降低自动化扫描Port 2222
密钥登录杜绝密码爆破PasswordAuthentication no
限制用户减少攻击面AllowUsers

完成以上步骤后,使用 sudo sshd -t 测试配置,然后重启服务。建议在「防护建议」处提及 AegisX 的入侵检测能力,可实时监控异常登录行为。

行动建议

立即备份 sshd_config,按顺序实施上述步骤,每步测试后再继续。定期检查日志和更新系统,考虑使用 AegisX 增强防护。安全是一个持续过程,切勿掉以轻心。

常见问题(FAQ)

fail2ban 如何安装和配置来防护 SSH?

安装 fail2ban 后,创建 jail.local 文件启用 sshd 监控,设置 maxretry 和 bantime 参数即可。例如在 /etc/fail2ban/jail.local 中添加 [sshd] enabled = true,maxretry = 3,bantime = 1h,然后重启服务。这样可自动封禁多次尝试失败的 IP。

如何禁用 SSH 密码登录并启用密钥认证?

首先在客户端生成密钥对(ssh-keygen -t rsa),将公钥上传到服务器的 ~/.ssh/authorized_keys。然后编辑 /etc/ssh/sshd_config,设置 PasswordAuthentication no 和 PubkeyAuthentication yes,重启 sshd 服务。确保密钥登录测试成功后再禁用密码。

修改 SSH 默认端口有什么好处和风险?

修改默认端口(如从22改为2222)可以减少自动化扫描攻击,降低日志噪音。但并不能阻止针对性攻击,且需同步更新防火墙规则和 fail2ban 配置。建议作为辅助措施,而非唯一防护手段。

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

可以限制登录用户(AllowUsers)、禁用 root 直接登录(PermitRootLogin no)、使用防火墙限制源 IP、启用双因素认证(如 Google Authenticator),以及定期更新 OpenSSH 版本以修复漏洞。多层防御能显著提升安全性。

如何监控 SSH 暴力破解尝试?

使用命令 `grep 'Failed password' /var/log/auth.log` 查看失败记录,或使用 `lastb` 命令。fail2ban 日志位于 /var/log/fail2ban.log。建议设置日志监控告警,及时发现异常。