
小さなホームサーバーにログインしたところ、次のメッセージが表示されました。
Last failed login: Sun Jan 14 17:08:42 CET 2024 from 192.168.1.111 on ssh:notty
There were 4 failed login attempts since the last successful login.
私はルートユーザーに切り替えて実行しました
root@homeserver ~]# egrep "Failed|Failure" /var/log/secure
Jan 14 17:08:42 homeserver sshd[4906]: Failed password for invalid user podman from 192.168.1.111 port 59183 ssh2
最初のプロンプトでは 4 回のログイン失敗が報告されているのに、egrep コマンドではsecure
ログから 1 つのエントリしか返されないのはなぜですか? 別の何かを grep する必要がありますか?
答え1
ログイン成功後のログの行と を検査したという事実から/var/log/secure
、マシン上で Redhat/CentOS を実行していると推測します。実際、質問で言及した最初のプロンプトは、おそらく の出力でありpam_lastlog
、そのマニュアル ページには次のように書かれています。
PAM_LASTLOG(8)
... (omitted for brevity)
OPTIONS
... (omitted for brevity)
showfailed
Display number of failed login attempts and the date of the last failed attempt from btmp. The date is not displayed when nodate is specified.
... (omitted for brevity)
マニュアルページには、この数字はbtmp
、つまり/var/log/btmp
失敗したログインを記録する別のログファイルから取得されることが明記されていることに注意してください。残念ながら、これはバイナリファイルなので、コマンドcat
やgrep
コマンドを使用して調べることはできません。回避策として、last -f /var/log/btmp
コマンドを使用してファイルに記録されている内容を確認できます。この答え。
ちなみに、のmanページを確認すると役立つかもしれませんpam_lastlog
。この質問さらに読むには。