はじめに

こんにちは!今回はlastコマンドについて解説します。

lastはシステムのログイン・ログアウト履歴を表示するコマンドです。誰がいつどのマシンからログインしたか、セッションがいつまで続いたかを確認できます。

セキュリティ監査やトラブルシューティングで超便利。不正ログインの調査にも使われます。


lastコマンドとは

lastは、/var/log/wtmpファイルを読み込んで、ユーザーのログイン・ログアウト履歴を表示する外部コマンドです。

システムにアクセスしたユーザー、ログイン時刻、接続元、セッション時間などを確認できます。セキュリティ管理では必須のコマンドですね。


基本構文

1
last [オプション] [ユーザー名]

引数なしで実行すると、すべてのログイン履歴を表示します。


主なオプション

オプション 説明
-n NUM 最後のNレコードのみを表示
-f FILE 指定ファイルからログインデータを読む
-w IPアドレスを完全に表示
-i IPアドレスだけを表示
-d ホスト名をIPアドレスに変換
-F 日時をフルフォーマットで表示
-x システムの起動・停止情報も表示

使用例

例1: すべてのログイン履歴を表示

1
last

実行結果:

1
2
3
user1    pts/1    192.168.1.100 Fri Jan 3 14:23:45 2025 - 14:45:20 (00:21)
user2    pts/0    192.168.1.200 Fri Jan 3 13:00:00 2025 - 13:30:15 (00:30)
root     tty1                    Fri Jan 3 10:00:00 2025 still logged in

最新から順にログイン履歴を表示。

例2: 特定のユーザーのログイン履歴

1
last user1

実行結果:

1
2
user1    pts/1    192.168.1.100 Fri Jan 3 14:23:45 2025 - 14:45:20 (00:21)
user1    pts/0    192.168.1.150 Fri Jan 3 09:00:00 2025 - 09:30:15 (00:30)

指定ユーザーのみのログイン履歴を表示。

例3: 最後の10件だけを表示

1
last -n 10

実行結果:

1
(最新の10件が表示される)

ボリュームが多い時は件数制限が便利。

例4: フルタイムスタンプ形式で表示

1
last -F

実行結果:

1
user1    pts/1    192.168.1.100 Fri Jan  3 14:23:45 2025 - Fri Jan  3 14:45:20 2025 (00:21)

より詳細な日時情報を表示。

例5: システム起動・停止情報も表示

1
last -x

実行結果:

1
2
3
reboot   ~                       Fri Jan 3 12:00:00 2025
user1    pts/1    192.168.1.100 Fri Jan 3 14:23:45 2025 - 14:45:20 (00:21)
shutdown ~                       Fri Jan 3 23:00:00 2025

マシンの再起動やシャットダウンも表示。

例6: root のみのログイン履歴

1
last root

実行結果:

1
2
root     tty1                    Fri Jan 3 10:00:00 2025 still logged in
root     tty1                    Thu Jan 2 15:30:00 2025 - 16:00:00 (00:30)

root ユーザーのセキュリティ監査に。

例7: IPアドレスを完全表示

1
last -w

実行結果:

1
user1    pts/1    192.168.1.100 Fri Jan 3 14:23:45 2025 - 14:45:20 (00:21)

接続元IPをすべての桁で表示。

例8: ローカルログインのみ表示

1
last | grep -v "pts"

実行結果:

1
root     tty1                    Fri Jan 3 10:00:00 2025 still logged in

ttyからのローカルログインだけを表示。

例9: 特定の日付以降のログイン履歴

1
last -F | grep "Jan  3"

実行結果:

1
(1月3日のログイン情報のみ表示される)

特定日付のログインを抽出。

例10: ログイン時間が長いユーザーを確認

1
last | grep -oE "[0-9]+\:[0-9]+" | head -10

実行結果:

1
(セッション時間だけを表示)

長時間ログインしているユーザーを確認。


Tips・注意点

root権限で詳細表示

一部の情報はroot権限で実行すると詳しく表示されます。

1
sudo last

ログファイルの場所

ログは/var/log/wtmpに保存されます。定期的にローテーションされます。

1
ls -la /var/log/wtmp*

lastb でログイン失敗履歴

1
lastb  # ログイン失敗の履歴を表示

セキュリティ監査では失敗ログも重要です。

タイムゾーンの注意

出力タイムゾーンはシステムの設定に依存します。


実践的な使い方

不正ログインの調査

1
last | grep -E "(ssh|pts)" | tail -20

リモートログインの最新20件を確認。

特定期間のアクティビティ確認

1
last -F root | head -50

rootの最新50件のログイン履歴を詳細表示。

セッション時間の統計

1
last | grep user1 | awk '{print $NF}' | head -10

特定ユーザーのセッション時間を一覧表示。

システム再起動の履歴確認

1
last -x | grep reboot

システムの再起動回数と時刻を確認。


まとめ

lastコマンドのポイント:

  • ログイン・ログアウト履歴表示 - /var/log/wtmpから履歴を読み込む
  • -n NUM: 最後のN件のみ表示
  • -F: フルタイムスタンプ形式で表示
  • -x: 起動・停止情報も表示
  • -w: IPアドレスを完全表示
  • セキュリティ監査に必須
  • よく使う組み合わせ: last, last -n 20, last -F

セキュリティ管理やトラブルシューティングで欠かせないコマンド。定期的に確認する習慣をつけると、不正アクセスを早期に発見できますよ!