如何在Linux中查找所有失败的SSH登录尝试

在Linux中列出所有失败的SSH登录尝试的最基本的机制是使用cat或grep命令显示和过滤日志。

每次尝试登录到SSH服务器都会被Linux中的rsyslog守护进程跟踪并记录到日志文件中。 在Linux中列出所有失败的SSH登录尝试的最基本的机制是在cat命令grep命令的帮助下显示和过滤日志文件的组合。

为了在Linux中显示失败的SSH登录列表,请发布本指南中提供的一些命令。 确保这些命令是以root权限执行的。

列出所有失败的SSH登录名的最简单命令如下所示。

# grep "Failed password" /var/log/auth.log
列出所有失败的SSH登录尝试

列出所有失败的SSH登录尝试

发出cat命令也可以达到同样的效果。

# cat /var/log/auth.log | grep "Failed password"

为了显示有关失败的SSH登录的额外信息,请按照下面的示例所示发出命令。

# egrep "Failed|Failure" /var/log/auth.log
查找失败的SSH登录

查找失败的SSH登录

CentOSRHEL中 ,失败的SSH会话记录在/ var / log / secure文件中。 针对此日志文件发出上述命令以标识失败的SSH登录名。

# egrep "Failed|Failure" /var/log/secure
在CentOS中查找失败的SSH登录

在CentOS中查找失败的SSH登录

上述命令的稍微修改版本显示在CentOS或RHEL中失败的SSH登录如下。

# grep "Failed" /var/log/secure
# grep "authentication failure" /var/log/secure
找到SSH身份验证失败登录

找到SSH身份验证失败登录

要显示尝试失败登录到SSH服务器的所有IP地址列表以及每个IP地址尝试失败的次数,请发出以下命令。

# grep "Failed password" /var/log/auth.log | awk ‘{print $11}’ | uniq -c | sort -nr
查找SSH失败登录的IP地址

查找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登录

查找实时失败的SSH登录

CentOSRHEL中 ,使用sshd.service替换SSH守护程序单元,如下面的命令示例所示。

# journalctl _SYSTEMD_UNIT=sshd.service | grep "failure"
# journalctl _SYSTEMD_UNIT=sshd.service | grep "Failed"

在确定了频繁出现在你的SSH服务器上的IP地址,以便用可疑的用户帐号或无效的用户帐号登录系统后,你应该更新系统防火墙规则来阻止失败的SSH尝试 IP地址或者使用专门的软件,比如fail2ban来管理这些攻击。