\r\n\r\n
誰が、いつ、どこからアクセスしたのか? セキュリティの基本は、誰があなたのLinuxにアクセスしているのかを知ることです。
Linuxや他のUnix系OS(MacOSなど)は、ログを取るのが得意です。システムの中のどこかに、思いつく限りのことを記録したログがあるのです。wtmpは「when(いつ)」なのか「who(誰)」なのか、誰もわからない。-誰も同意していないようです。tmp "の部分は "temporary "の略かもしれませんが、"timestamp "の略かもしれません。
分かっているのは、wtmpはログインとログアウトのすべてのイベントをキャプチャして記録するログであるということです。wtmpログのデータを確認することは、システム管理者の責任においてセキュリティ対策を講じるための基本的なステップです。一般的な家庭のパソコンでは、セキュリティの観点からはそれほど重要ではないかもしれませんが、パソコンの複合的な使い方を見直すことができるのは面白いですね。
Linuxの多くのテキストベースのログファイルとは異なり、wtmpはバイナリファイルです。その中のデータにアクセスするには、そのタスクのために設計されたツールを使う必要がある。
そのツールは、最後の仕事です。
最後のコマンドは、wtmpのログからデータを読み込み、ターミナルウィンドウに表示するものです。
lastと入力してEnterキーを押すと、ログファイルのすべてのレコードを表示します。
lastwtmpの各レコードがターミナルウィンドウに表示されます。
左から順に、各列に含まれています。
最後の行は、ログに記録された最も古いセッションの日付と時刻を表しています。
コンピューターが起動するたびに、仮想ユーザー「reboot」のログインエントリーがログに入力されます。ターミナルフィールドはカーネルバージョンに置き換えられる。これらのエントリーのログインセッションの期間は、コンピュータの実行時間を示しています。
最後のコマンドを使うだけで、ログ全体のダンプが生成され、そのほとんどがターミナルウィンドウを素早く通り過ぎます。表示されたままの部分は、ログの中で最も古いデータです。これは、あなたが見たいものではないのかもしれません。
lastには、特定の行数の出力を提供するように指示することができます。これは、コマンドラインで必要な行数を指定することによって行われます。ハイフンに注意してください。5行表示する場合は、5:の代わりに-5と入力します。
last -5これにより、ログの最初の5行が得られ、これが最も新しいデータとなります。
d (Domain Name System) オプションは、リモートユーザーのIPアドレスをマシン名またはネットワーク名に解決しようとするよう last に指示します。
last -dlastは、常にIPアドレスをネットワーク名に変換できるわけではありませんが、可能な限り変換するコマンドです。
IPアドレスやネットワーク名に興味がない場合は、-R(ホスト名なし)オプションを使用して、このフィールドを表示しないようにしてください。
このオプションを使用すると、出力がきれいになり、見苦しい折り返しがなくなるので、以下のすべての例で使用されています。このフィールドは、異常または疑わしい活動を識別しようとするために last が使用される場合、抑制されない。
s (since) オプションを使用すると、特定の日付以降に発生したログインイベントのみを表示するように出力を制限することができます。
2019年5月26日以降に発生したログインイベントのみを表示したい場合は、以下のコマンドを使用します。
last -R -s 2019-05-26指定した日付の00:00から、ログファイルに記録された最新のイベントレコードが出力されます。
終了日は、-t (until) で指定できます。これにより、対象となる2つの日付の間に発生したログインのグループを選択することができます。
このコマンドは、26日00:00(明け方)から27日00:00(明け方)までのログイン記録を取得し表示するよう、lastに依頼します。これにより、26日に行われたログインセッションのみにリストが絞られます。
s、-tオプションで時刻と日付が使用できます。
日付と時刻を使用する最後のオプションと組み合わせて使用できるさまざまな時間形式は、次のとおりです(疑惑)。
なぜ「疑惑」なのか?
リストの2番目と3番目のフォーマットは、この記事のための調査中に機能しませんでした。これらのコマンドは、Ubuntu、Fedora、Manjaroの各ディストリビューションでテストしました。それぞれDebian、RedHat、Archのディストリビューションの派生版です。Linuxディストリビューションの主要なファミリーをすべてカバーしています。
last -R -s 2019-05-26 11:00 -t 2019-05-27 13:00見ての通り、このコマンドはレコードを全く返しません。
リストの中で、前のコマンドと同じ日付と時刻を持つ最初の日付と時刻のフォーマットを使用すると、レコードが返されます。
last -R -s 20190526110000 -t 20190527130000ここでは、2日前から1日前までの記録が欲しいので、現在の日時を基準にして、分単位または日単位で期間を指定することもできます。
last -R -s -2days -t -1daysyesterdayとtomorrowは、昨日の日付と今日の日付の略語として使うことができます。
last -R -s yesterday -t today今日からの記録が一切含まれていないわけではありません。これが期待される動作です。注文には、開始日から終了日までの記録が必要です。終了日以内のレコードは含まれない。
Now」は「Today at current time」の省略形です。00:00(夜明け)からコマンドを発行するまでに発生したログインイベントを表示するには、次のコマンドを使用します。
last -R -s today -t nowこれにより、現在ログイン中のイベントも含めてすべて表示されます。
p(現在)オプションは、ある時点でどのユーザーがログインしているかを調べることができます。
ログイン、ログアウトのタイミングは関係なく、指定した時刻にコンピューターにログインしていれば、リストに含まれることになります。
日付なしで時刻を指定した場合、"今日 "を意味するものとみなされる
last -R -p 09:30まだログインしているユーザーには(当然)ログアウト時間はなく、まだログインしていると表現される。指定した時間が経過してもコンピュータが再起動しない場合は、まだ実行中として表示されます。
nowの省略形と-p(present)オプションを組み合わせると、コマンドを発行したときにどのユーザーがログインしているかを知ることができます。
last -R -p nowWHOコマンドで実現できることを、やや長くなりますが、ご紹介します。
関連:Linuxで現在のユーザーアカウントを確認する方法
特筆すべきは、lastbコマンドです。btmpという名前のログからデータを読み込む。このログ名については、もっとコンセンサスが得られています。b」はbadの略ですが、「tmp」の部分はまだ議論の余地があります。
lastb は、不正な(失敗した)ログイン試行をリストアップします。前回と同じオプションを受け付けます。これらはログインに失敗したため、ログイン時刻はすべて00:00となっています。
sudoとlastbを使用する必要があります。
sudo lastb -Rいつ、誰が、どこから、自分のLinuxコンピュータにログオンしたかを知ることは、有用な情報である。ログイン失敗の詳細と組み合わせることで、不審な行動を調査する第一歩として役立ちます。