SSH接続を確立するときにこのメッセージを再現するには:
最後のログインに失敗しました:2月19日日曜日03:52:25 最後のログインの成功以降、41回のログイン試行が失敗しました。
ホストセットに対してこのチェックを実行するプレイブックをAnsibleで設定したいと思います。それは可能ですか?このメッセージの生成を担当するサービスは何ですか?
そうでなければ、誰でもこれを達成するための良い方法を教えてもらえますか?私はセキュリティログで失敗した試みを得ることができることを知っていますが、最後に成功したアクセス以降の回数を計算する方法がわかりません。
答え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を引く必要があります。 2番目の最後の行/var/log/btmp
は空の行で、最後の行にはタイムスタンプが含まれているためです。btmp begins Sat Feb 19 18:50:43 2022
最後に失敗したログイン回数をリセットするには、以下を切り捨てます。
/var/log/btmp