中規模から大規模の企業で働いている場合は、他の多くのシステム管理者と一緒に働いている可能性が非常に高くなります。
sysadminタスクを実行しているときに、一部のユーザーは日常のタスクを実行するためにサーバーに接続しようとする場合があります。
ただし、場合によっては、サーバーで何かが変更されていることに気付くことがあります。結果として、あなたは誰が変更を実行したのか疑問に思っています 。
幸いなことに、サーバーに最後にログインしたユーザーを見つける方法はたくさんあります。
このチュートリアルでは、コンピュータの最後のログインを確認するために使用できるさまざまな便利なコマンドについて学習します。
lastを使用して最後のログインを検索
Linuxコンピュータで最後のログインを見つける最も簡単な方法は、オプションなしで「last」コマンドを実行することです。このコマンドを使用すると、コンピューターで最後に実行されたすべてのログインが表示されます。
$ last
# To check the last ten login attempts, you can pipe it with "head"
$ last | head -n 10

ご覧のとおり、デフォルトでは、出力は切り捨てられます。「devconnected」ユーザーは、最後のコマンドを使用するだけで「devconne」としてのみ表示されます。
完全なユーザー名とホスト名を使用して最後のログインを見つけた場合 、「 -w」を追加する必要があります 」オプションまたは「–フルネーム 「。
$ last -w
$ last --fullnames

最後のコマンド列
最後のコマンドを見ると、出力が少し混乱する可能性があります。多くの列がありますが、それらが何を表しているのか正確にはわかりません。
まず、ユーザーログインと再起動には違いがあります。
ご覧のとおり、ユーザーログインはコンピューターに接続したユーザーの名前で始まります。 。一方、「reboot」ログは明らかに「reboot」キーワードで始まります 。
ユーザーログイン列
ユーザーログの場合 、さまざまな列の意味は次のとおりです:
- ユーザー名 :コンピューターに接続したユーザー名;
- TTY :ユーザーがコンピューターに接続するために使用するTTYのインデックス。 「:0」は接続がローカルであることを示し、ユーザーが使用しているデバイスを見つけるために「tty」コマンドを使用できます。
$ tty

- ディスプレイの名前 :Xはすべてのマシンのディスプレイサーバーとして使用されるため、ローカルディスプレイ(:0、:1など)またはリモートディスプレイを使用できます。グラフィカルアプリケーションをリモートで実行することに興味がある場合は、Xプロトコルに関するガイドをお読みください。
- ログイン時間 :サーバーの起動は、サーバーへのログインとはまったく異なります。この時間は、パスワードが実際にインターフェースで提供された時刻を表します。
- ログインステータス :セッションの期間中、「まだログインしている」または「ダウンしている」かのいずれかです。

たとえば、次の例では、セッション時間は12分でした。
疑似再起動列
再起動するたびに、システムはコンピュータで実行されている再起動の現在のリストに新しい行を追加します。
「再起動」で始まるこれらの特別な行 「、次の列があります:
- 再起動 :これがログインではなく、システムの再起動であることを指定します。
- 再起動の詳細 :この場合、実際には「システムブート」であり、システムが起動したばかりであることを意味します。
- カーネルバージョン :システムの起動時にロードされたカーネルバージョン。ブートパーティションで異なるバージョンのカーネルをホストしている場合は、異なる可能性があります。
- 起動時間 :時間はシステムの起動時間を表します。その後に「まだ実行中」の表示が続くか、終了時間の後にパランセシスのセッション期間が続きます。
サーバー上の最後のログインをすべて一覧表示する方法を確認したので、不正なログイン試行に関心があるかどうかを確認しましょう。
最終ログイン日を検索
場合によっては、過去の特定の日付以降、または過去5分間に行われたログインに関心があるかもしれません。
日付で最後のログインを検索するには、「-since」コマンドを指定して「last」コマンドを実行し、最後のログインを検索する日付を指定します。
同様に、「–until」コマンドを使用して、過去の特定の日付までに行われたログイン試行を検索できます。
$ last --since <date>
$ last --until <date>
では、検索に使用できる日付は何ですか?
日付形式 最後のドキュメントページで指定されています。

例として、過去2日間のすべてのログイン試行を検索したい場合は、次のコマンドを実行します
$ last --since -2days

同様に、過去5日間に行われたすべてのログイン試行を検索する場合は、次のコマンドを実行します
$ last --until -5days
ダイアグラムは言葉よりも役立つことが多いため、「 –以降」を理解する方法は次のとおりです。 」と「–まで 」オプション。

lastbを使用して最後の不正なログイン試行を見つける
Linuxサーバーでの最後の不正なログイン試行を見つけるには、管理者権限を持つ「lastb」を使用する必要があります。
$ sudo lastb
そのような権利を確認する方法がわからない場合は、必ずお読みください 専用ガイド 。

ご覧のとおり、出力は「最後」の出力と非常によく似ています。 ”コマンド:試行されたユーザー名、使用されたデバイス、および試行された時刻。
この場合、期間は「(00:00) 」は、接続の試行に継続時間がまったくないため修正されます。
SSH端末からログインを試みた場合、デバイス行に「ssh:notty」と表示される場合があることに注意してください。
auth.logファイルの検査
または、「/ var / log / auth.log」ファイルの内容を調べて、サーバーで失敗したすべての試行を確認することもできます。
$ tail -f -n 100 /var/log/auth.log | grep -i failed

Linuxで最後のSSHログインを検索
Linuxマシンで最後に実行されたSSHログインを見つけるには、「/ var / log / auth.log」の内容を調べ、「grep」でパイプしてSSHログを見つけるだけです。>
$ tail -f -n 100 /var/log/auth.log | grep -i sshd

または、「 journalctl 」を実行して、SSHサービスのログを調べることもできます。 」コマンドの後に「-u 「ユニット」の「」オプション 」とサービスの名前 。
$ sudo journalctl -r -u ssh | grep -i failed

注 :リスティングサービスに関心がある そしてあなたのサーバー上のそれらのステータス? Linuxでのサービスの一覧表示に関するガイドは次のとおりです。
SSHサービスに関連するログが表示されない場合は、SSH構成ファイル、つまり「 PrintLastLog」に関連している可能性があります。 」オプション。
$ cat /etc/ssh/sshd_config | grep PrintLastLog

サーバーでこのオプションが「いいえ」に設定されていて、最後のログを印刷する場合は、必ず「はい」の値で行のコメントを解除してください。その後、SSHサーバーを再起動することを忘れないでください。
$ sudo nano /etc/ssh/sshd_config
PrintLastLog yes
$ sudo systemctl restart ssh
$ sudo systemctl status ssh
素晴らしい! コンピュータで最後のSSHログを見つける方法を学びました。
Linuxでのユーザーの最終ログインの一覧表示
Linuxマシン上のすべてのユーザーの最終ログイン時刻を見つけるには、オプションなしで「lastlog」コマンドを使用できます。デフォルトでは、が表示されます すべてのユーザーのリスト 最後のログイン試行回数。
または、「 -u」を使用することもできます 「ユーザー」の「」オプション 」と入力して、探しているユーザーを指定します。
$ lastlog
$ lastlog -u <user>

ご覧のとおり、オプションがない場合、コマンドはルートアカウントとシステムアカウントを含む、マシン上のすべてのアカウントのリストを返します。
結論
このチュートリアルでは、Linuxコンピューターで行われた最後のログイン試行を簡単に見つける方法を学びました。
これらの試行がログインシェルまたはSSHセッションのどちらを介して行われたかにかかわらず、検査するファイルと、それらを取得するために使用するツールがわかりました。
これらのファイルを検査することはできますが、Kibanaなどのダッシュボードソリューションにプロットすることもできます。これを実現する方法のガイドは次のとおりです。
Linuxシステム管理に興味がある場合 、ウェブサイトにはそれ専用の完全なセクションがありますので、ぜひご覧ください!