SSH(Secure Shell)是远程连接服务器的常用工具,通过查看系统的认证日志,我们可以了解到系统上的SSH登录活动。使用以下命令可以检索相关信息:
grep -E "sshd.*Accepted password|pam_unix\(sshd:auth\): authentication failure" /var/log/auth.log* /var/log/secure* /var/log/auth.log /var/log/audit/audit.log 2>/dev/null | awk '{print $(NF-3)}' | sort | uniq -c | sort -nr
让我们一步步分析这个命令:
grep -E "sshd.*Accepted password|pam_unix\(sshd:auth\): authentication failure":使用正则表达式匹配包含"sshd.Accepted password"或"pam_unix(sshd:auth): authentication failure"的日志条目。
awk '{print $(NF-3)}':使用awk提取每行中倒数第三个字段,这通常是IP地址。
sort:对提取出的IP地址进行排序。
uniq -c:统计每个唯一的IP地址出现的次数,并在前面显示出现次数。
sort -nr:按照出现次数进行逆序排序,以便最高频次的IP地址在前面显示。
通过运行这个命令,我们可以得到一个按照SSH登录次数排序的IP地址列表。这对于监控和检测潜在的安全问题非常有用。
执行效果

第一列是登录成功的次数,后面是ip.
脚本也可以改成统计登录失败的次数,方式暴力破解服务器,
总结起来,这个命令帮助系统管理员追踪SSH登录活动,尤其是关注失败的认证尝试。通过分析登录频率,管理员可以及时发现异常登录行为,加强系统的安全性。