如何监测Linux上失败的登录尝试,


在Linux服务器上重复的失败登录尝试可能表明有人企图闯入帐户,或者仅仅意味着有人忘了密码或输错密码。本文介绍了如何检查失败的登录尝试并检查系统的设置,查看何时锁住帐户以处理问题。

您要了解的第一件事是如何检查登录是否失败。以下命令在Ubuntu和相关系统上使用的/var/log/auth.log文件中查找登录失败的迹象。有人尝试使用错误或拼错的密码登录时,失败的登录将显示以下行:

  1. $ sudo grep "Failed password" /var/log/auth.log | head -3 
  2. Nov 17 15:08:39 localhost sshd[621893]: Failed password for nemo from 192.168.0.7 port 8132 ssh2 
  3. Nov 17 15:09:13 localhost sshd[621893]: Failed password for nemo from 192.168.0.7 port 8132 ssh2 

您可以使用这样的命令按帐户汇总失败登录的情况:

  1. $ sudo grep "Failed password" /var/log/auth.log | grep -v COMMAND | awk '{print $9}' | sort | uniq -c 
  2.      22 nemo 
  3.       1 shs 
  4.       2 times: 

该命令按用户名(grep输出的第9列)汇总失败的登录。它避免了查看含有“COMMAND”一词的行,跳过含有“Failed passwords”短语的查询(比如运行上面运行的命令的人)。 “times:”字符串表明重复尝试的次数比报告的次数还多。这些来自含有“消息重复5次:”的行,快速连续多次输错密码后,这些行可能被添加到日志文件中。

您可能要检查的另一个方面是失败的登录尝试来自何处。为此,如本例所示,将您关注的字段从第九个更改为第十一个:

  1. $ sudo grep "Failed password" /var/log/auth.log | grep -v COMMAND | awk '{print $11}' | sort | uniq -c 
  2.      23 192.168.0.7 

比如说,如果您发现多个用户的失败登录来自单单一个系统,这可能特别可疑。

在RHEL、Centos和相关系统中,您可以在/var/log/secure文件中找到与失败登录有关的消息。您可以使用与上述基本相同的查询来计数。只需更改文件名,如下所示:

  1. $ sudo grep "Failed password" /var/log/secure | awk '{print $9}' | sort | uniq -c 
  2.       6 nemo 

核查/etc/pam.d/password-auth和/etc/pam.d/system-auth文件中的设置。添加这样的行将强制执行您的设置。

检查faillog

您可能关注过faillog命令,但是该命令查看的/var/log/faillog文件如今似乎在许多系统上并没有使用。如果您使用faillog -a命令,会得到类似如下所示的在时间列中列出12/31/69的输出,很明显该文件并未使用。

  1. $ faillog -a 
  2. Login       Failures Maximum Latest                On 
  3.  
  4. root            0        0   12/31/69 19:00:00 -0500 
  5. daemon          0        0   12/31/69 19:00:00 -0500 
  6. bin             0        0   12/31/69 19:00:00 -0500 
  7. sys             0        0   12/31/69 19:00:00 -0500 

显示的日期和时间可以追溯到Unix的开始(01/01/70)――可能针对本地时区进行了更正。如果您运行下面显示的命令,可以证实文件不是空的,但不包含实际数据:

  1. $ ls -l /var/log/faillog 
  2. -rw-r--r-- 1 root root 32576 Nov 12 12:12 /var/log/faillog 
  3. $ od -bc /var/log/faillog 
  4. 0000000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 
  5.          \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0 
  6. 0077500 

如果faillog文件确实在使用中,您应该会看到最近的活动,并不提及1969错误提示。

如何回应?

失败登录的原因有很多。可能是您的一个用户在大写锁定键开启的情况下试图登录,却没有注意到。也许用户最近更改了密码,却忘了更改密码这回事,尝试使用旧密码。也许用户在尝试在其他系统上使用的密码。如果您在运行查询时经常出现某个特定的帐户,应调查一下。然而,偶尔失败的登录尝试很常见。

检查设置

要查看系统如何经过设置来处理失败的登录,请检查/etc/pam.d/common-auth文件。它用于带有Linux可插拔身份验证模块(PAM)的系统。该文件中的两个设置控制着暂时锁定帐户之前允许多少次失败的登录尝试以及锁住该帐户多长时间。

六次失败的登录尝试后,这样一行将使PAM锁住帐户。锁住时间将持续五分钟(300秒)。

  1. auth required pam_tally2.so deny=6 unlock_time=300 

原文标题:Monitoring failed login attempts on Linux,作者:Sandra Henry-Stocker

相关内容