サーバーにいたのは誰ですか?

システム管理者が各ユーザーの最後のログインの日付を決定し、そうしていないアカウントのリストを準備する必要があるときが来ます。 lastlogコマンドを以前に知らなかった場合、このデータを提供することがどれほど簡単かつ迅速に行えるか驚くでしょう。







まだ考えている場合は、このコマンドがLinuxシステムを実行しているサーバーで実行できる優れたセキュリティ検証方法の1つであることも忘れないでください。 彼女はあなたが潜在的な問題を識別するのを手伝います。 たとえば、長い間非アクティブであったアカウントは、それらがもはや必要でなく、無効にされていることを意味する場合があります。 しかし、ユーザーがバハマのどこかで休暇を取ることになっていたときにアクティブだったアカウントは、サーバーのセキュリティの問題を示唆する可能性があります。



lastlogコマンドは、ユーザーの最後のログインに関する情報を保存しますが、 wtmpファイルにあるログに関する情報のみを提供します。 このファイルのエントリはバイナリ形式で作成されるため、特別なコマンドを使用しないと表示できません。 コンソールにログインすると、次のメッセージが画面に表示されるという事実に多くの人が注意を払っていると思います。



Last login: Wed Nov 11 13:19:44 on ttys002
      
      





この行は、 ログインユーティリティによって形成されます。ユーザー認証の後、ファイル/ var / log / lastlogにアクセスし、以前に成功したログインに関する情報を抽出し、画面に表示してから、 lastlogファイルのエントリを更新します。 各ユーザーの最終ログオン時刻に関するエントリを含むファイル/ var / log / lastlogとは異なり、ファイル/ var / log / wtmpは、すべてのユーザーログインと、このファイルが作成された時点からのログインを保存します。



特定のユーザーのデータを表示するには、次のコマンドlast xxxを使用する必要があります。xxxはユーザーのログインです。 また、パラメーター5でhead sortコマンドを使用すると、画面に最後の5つの結果のみを表示するのに役立ちます。



 # last | head -5 root pts/0 193.178.187.30 Wed Nov 11 14:21 still logged in tuto ftpd3292 ::ffff:176.104.0 Wed Nov 11 11:11 - 11:15 (00:04) tuto ftpd29523 ::ffff:176.104.0 Tue Nov 10 18:58 - 19:03 (00:04) naturcok ftpd23502 ::ffff:176.104.0 Tue Nov 10 13:55 - 13:55 (00:00) naturcok ftpd20128 ::ffff:176.104.0 Tue Nov 10 13:50 - 13:55 (00:05)
      
      





最近のコマンドの履歴をどの程度「深く」見ることができるかは、 wtmpファイルがどれだけの期間存在していたかに依存します。 たとえば、 logrotateユーティリティを使用して、ログファイルを監視し、これらのファイルが指定されたサイズを超えた場合(または指定された時間間隔後に)、いわゆるローテーションを提供できます。 また、複数のwtmpファイルをサポートすることができ、 logrotate.confに次のようなエントリがあります



 /var/log/wtmp { monthly create 0664 root utmp minsize 1M rotate 1 }
      
      





複数のwtmpファイルがある場合でも、一部のユーザーは単にデータを表示しない場合があります。 個々のユーザーチェックの結果、ユーザーに関するデータを受け取っていない場合、これは、 wtmpファイルに特定のユーザーのエントリがないことを意味します。 wtmpファイルが作成された日付を確認するには、コンソールに最後のmiaを入力します。



 # last mia wtmp begins Thu Sep 17 16:10:00 2015
      
      





各ユーザーの最終ログイン情報を見つける最良の方法は、 lastlogコマンドを使用することです 。 ユーザーがシステムに一度もログインしたことがない場合、端末名と最後のログイン時刻の代わりに、文字列** Never never login **が表示されます。 出力結果が多数の行で構成される場合は、moreコマンドを使用することもできます。これは、 lessコマンドとは異なり、画面上のファイルの内容を個別のページに表示します。 結果は次のようになります。



 # lastlog | more Username Port From Latest root pts/0 xxx.xxx.xxx.xxx Wed Nov 11 14:21:59 +0200 2015 bin **Never logged in** daemon **Never logged in** adm **Never logged in** ispmaster pts/0 xxx.xxx.xxx.xxx Thu Nov 5 17:00:44 +0200 2015
      
      





おそらく、bin、daemon、adm、およびその他のサービスアカウントがシステムに一度もログインしたことがないことに驚くでしょう。 これは確かにそうであり、ユーザー登録時に割り当てられたシェル(ログインシェル)に対してのみ、/ sbin / nologinパラメーターが設定されているため、認証が不可能であることを意味します。 残りの入力データは、認証が行われたシステムの日付と時刻を示します。



ログインしたことがないすべてのアカウントのリストを作成するには、次のコマンドセットを使用する必要があります。 lastlogチームについてはすでによく知っているので、詳しくは説明しません。キーワードで検索するgrepユーティリティを追加する価値があります。この場合は単語Neverです。データのある最初の列のみを表示するには、 awkユーティリティを次の構文は'{print $ 1}'です。



 # lastlog | grep Never | awk '{print $1}' bin daemon adm . . . ntp user1819 user1939
      
      





lastlogのエントリは、ユーザー識別子(UID)に従ってリストされます-スーパーユーザー(root)から/ etc / passwdファイルで最高のUIDを持つユーザーまで。 これは、 lastlogファイル自体の形式によるものです。 ほとんどのUnixログファイルとは異なり、各ユーザーのログのlastlogファイルでは個別の場所が予約されており、各レコードの場所はUIDでインデックス付けされています。 その後、特に16ビットUID 65536など、システムに可能なUID範囲の上限を持つアカウントがある場合、ファイルは固定サイズになります。ただし、これは、識別子が厳密に連続していない場合のみ、大量の未使用スペースも作成します。 システムが32ビットUIDをサポートしている場合、ファイルは非常に大きくなり、4,294,967,296(232)の異なる識別子値を持つ可能性があります。



lastlogファイルの各エントリには、ユーザー名、ユーザーがログオンしている端末の名前、および最後のログイン時刻が含まれています。 ファイルの先頭にあるスーパーユーザー(UID 0)のレコードは次のようになります。



 # od -xc /var/log/lastlog | more 0000000 fba3 563d 7470 2f73 0030 0000 0000 0000 243 373 = V pts / 0 \0 \0 \0 \0 \0 \0 \0 0000020 0000 0000 0000 0000 0000 0000 0000 0000 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0000040 0000 0000 3138 392e 2e35 3831 2e34 3532 \0 \0 \0 \0 8 1 . 9 5 . 1 8 4 . 2 5 0000060 0034 0000 0000 0000 0000 0000 0000 0000 4 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0000100 0000 0000 0000 0000 0000 0000 0000 0000 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0
      
      





特定の場合に一部のコンピューターでlastlogコマンドを実行すると、コマンドが「スタック」しているような印象を受けることがあります。 これは、システムに2人のユーザー(rootとユーザー)のみがログインしている場合でも、システムで作業できるユーザーの最大数の場所が/ var / log / lastlogファイルに割り当てられているためです。 したがって、/ var / log / lastlogファイルでは、システムで作業したユーザーのID番号の間に大きなギャップがある場合があります。 そのような間隔を表示すると、プログラムは画面に情報を表示せず、「フリーズ」の印象があります。 したがって、急いでボタンを押してコンソールを閉じるのではなく、コマンドが応答するのを待ちます。



確立したとおりlastlogコマンドは、サポートをまだ実装しているユーザーのログを確認し、システム内のアカウントが適切に使用され、関連性があることを確認するのに非常に役立ちます。 また、ログのサイズを確認することを忘れないでください。そうしないと、ログのボリュームがシステムの合計サイズよりもかなり大きくなることがあります。



仕事でかなり単純なコマンドを使用することを怠らないでください。もちろん、その場所を賢く使用してください。 頑張って



All Articles