获取自上次成功登录以来尝试登录失败的次数

获取自上次成功登录以来尝试登录失败的次数

当我们建立 SSH 连接时,如何重现此消息:

上次登录失败:2 月 19 日星期日 03:52:25 自上次成功登录以来,已有 41 次登录尝试失败。

我想在 Ansible 中配置一个 playbook,这将在一组主机中进行此检查。那可能吗?哪个服务负责生成此消息?

如果没有,有人能给我指出一个实现这一目标的好方法吗?我知道我可以从安全日志中获取失败的尝试,但不确切知道如何计算上次成功访问后的数字。

答案1

注意:以下答案假设您不通过 SSH 连接到服务器,但只能通过 Ansible 访问它


可能不是最优雅的解决方案,但希望足够好:

- name: Failed logins since last playbook execution
  shell: 'echo $((`lastb | wc -l` - 2)) ; > /var/log/btmp'

解释(抱歉,如果我在这里太明显了……):

  • lastb是一个列出不成功登录的命令,其输出基于以下内容/var/log/btmp

  • `` 是进行命令替换的一种方法,其目的是用命令的输出替换命令,以便它可以成为另一个命令的参数 - 在本例中,是算术运算的双括号,即$(()))

  • lastb | wc -l返回 的行数/var/log/btmp,但是,我们需要从中减去 2 才能得到我们想要的结果,因为 的倒数第二行/var/log/btmp是空行,并且最后一行包含时间戳,例如

    btmp begins Sat Feb 19 18:50:43 2022 
    
  • 最后,为了重置失败的登录计数,我们截断/var/log/btmp

相关内容