这个坑值得记一笔。日志里每天几万条登录失败记录,来源遍布各地,虽然没被攻破,但日志量大、噪音多,还担心哪天被撞开。

排查方向其实有限,先把可能性排一排。默认端口和 root 账号是扫描的首要目标;密码登录开着,弱口令风险很高;没有自动封禁机制。

动手时先统计失败来源的数量

lastb | awk '{print $3}' | sort | uniq -c | sort -rn | head

然后关闭密码登录只留密钥

grep PasswordAuthentication /etc/ssh/sshd_config

再往下启用自动封禁

fail2ban-client status sshd

限制来源地址范围

iptables -S | grep 22

我习惯把每一步的执行时间和结果记在一边,后面复盘省事。

改之前我把相关日志按时间截了一段存着,事后对时间线用得上。

怎么算真的好了,看的是同一批现象。失败登录记录大幅减少,只有白名单地址和密钥可以登录。

这里还有个坑。改端口只能减少噪音,不能替代密钥认证;最有效的手段是限制来源地址,把管理入口收到固定网络。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。

作者 9823189