每次尝试登录到SSH服务器都会被Linux中的rsyslog守护进程跟踪并记录到日志文件中。 在Linux中列出所有失败的SSH登录尝试的最基本的机制是在cat命令或grep命令的帮助下显示和过滤日志文件的组合。
为了在Linux中显示失败的SSH登录列表,请发布本指南中提供的一些命令。 确保这些命令是以root权限执行的。
列出所有失败的SSH登录名的最简单命令如下所示。
# grep "Failed password" /var/log/auth.log
列出所有失败的SSH登录尝试
发出cat命令也可以达到同样的效果。
# cat /var/log/auth.log | grep "Failed password"
为了显示有关失败的SSH登录的额外信息,请按照下面的示例所示发出命令。
# egrep "Failed|Failure" /var/log/auth.log
查找失败的SSH登录
在CentOS或RHEL中 ,失败的SSH会话记录在/ var / log / secure文件中。 针对此日志文件发出上述命令以标识失败的SSH登录名。
# egrep "Failed|Failure" /var/log/secure
在CentOS中查找失败的SSH登录
上述命令的稍微修改版本显示在CentOS或RHEL中失败的SSH登录如下。
# grep "Failed" /var/log/secure # grep "authentication failure" /var/log/secure
找到SSH身份验证失败登录
要显示尝试失败登录到SSH服务器的所有IP地址列表以及每个IP地址尝试失败的次数,请发出以下命令。
# grep "Failed password" /var/log/auth.log | awk ‘{print $11}’ | uniq -c | sort -nr
查找SSH失败登录的IP地址
在较新的Linux发行版中,可以通过journalctl命令查询Systemd守护进程维护的运行时日志文件。 为了显示所有失败的SSH登录尝试,您应该通过grep过滤器来输出结果,如以下命令示例所示。
# journalctl _SYSTEMD_UNIT=ssh.service | egrep "Failed|Failure" # journalctl _SYSTEMD_UNIT=sshd.service | egrep "Failed|Failure" #In RHEL, CentOS
查找实时失败的SSH登录
在CentOS或RHEL中 ,使用sshd.service替换SSH守护程序单元,如下面的命令示例所示。
# journalctl _SYSTEMD_UNIT=sshd.service | grep "failure" # journalctl _SYSTEMD_UNIT=sshd.service | grep "Failed"
在确定了频繁出现在你的SSH服务器上的IP地址,以便用可疑的用户帐号或无效的用户帐号登录系统后,你应该更新系统防火墙规则来阻止失败的SSH尝试 IP地址或者使用专门的软件,比如fail2ban来管理这些攻击。