ssh日志是识别暴力破解等攻击的第一道防线,关键文件为/var/log/auth.log或/var/log/secure;需统计失败登录ip、排查异常成功会话、关联多维日志分析,并启用fail2ban、禁用密码登录等防护措施。

Linux 系统中,SSH 日志是识别暴力破解、非法登录和可疑行为的第一道防线。关键日志文件是 /var/log/auth.log(Debian/Ubuntu)或 /var/log/secure(RHEL/CentOS),它们记录了所有 SSH 认证相关事件,包括成功/失败登录、密钥验证、用户切换等。
快速定位高危登录失败记录
暴力破解通常表现为短时间内大量失败的登录尝试。可使用以下命令筛选高频失败记录:
-
grep "Failed password" /var/log/auth.log | awk '{print $(NF-3)}' | sort | uniq -c | sort -nr | head -10—— 统计来源 IP 的失败次数 -
grep "Invalid user" /var/log/auth.log | awk '{print $(NF-2)}' | sort | uniq -c | sort -nr | head -5—— 查找被频繁试探的不存在用户名 - 注意组合特征:同一 IP 在 1 分钟内出现 >5 次
Failed password或Invalid user,极可能为自动化攻击
识别伪装成功的异常登录
攻击者可能利用弱口令或泄露密钥成功登录,需重点排查“看似正常”但行为异常的会话:
- 检查非工作时间(如凌晨 2–4 点)的
Accepted password或Accepted publickey记录 - 比对登录用户与常用账户:例如
root直接登录、或低权限用户(如www-data)突然执行sudo或启动 shell - 关注登录后立即执行的命令:日志中若紧随
sshd.*@.*:.* pts/.* ".*"出现COMMAND=.*wget|curl|bash -i等,大概率已失陷
关联分析增强判断准确性
单条日志易误判,需结合多维度信息交叉验证:
- 将可疑 IP 提取后,用
last -i | grep "IP"查看其历史登录时长与终端(短时多次 login → 异常) - 用
journalctl _COMM=sshd --since "2 hours ago"获取更细粒度的连接建立、认证、会话关闭全流程 - 检查用户家目录下的
.bash_history(需在登录后及时备份)或/root/.bash_history,确认是否有隐蔽命令(如nohup python3 -c 'import socket')
自动化监控与响应建议
人工巡查效率低,建议部署轻量级防护机制:
- 启用
fail2ban:默认监控auth.log,自动封禁暴力 IP(配置/etc/fail2ban/jail.local调整阈值和封禁时长) - 配置
logwatch或自定义脚本每日邮件摘要:聚焦Failed/Invalid/Accepted三类事件的数量突增 - 限制 SSH 暴露面:禁用密码登录(
PasswordAuthentication no)、关闭 root 登录(PermitRootLogin no)、改用非标端口(降低扫描噪音)
不复杂但容易忽略的是:日志本身可能被篡改或清空。确保 /var/log/auth.log 权限为 600,并开启日志轮转与远程日志转发(如 rsyslog 发送到独立 SIEM),才能让分析真正可信。










