lastコマンドでログイン履歴を確認する方法|lastb・lastlogやセキュリティ調査もコマンド


図解60p「Linuxサーバー構築入門マニュアル」無料
登録10秒/自動返信でDL/合わなければ解除3秒
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxコマンド, LinuxコマンドK-O, システム管理コマンド > lastコマンドでログイン履歴を確認する方法|lastb・lastlogやセキュリティ調査もコマンド
「誰かが不正にログインしていないか確認したい」
「サーバーの再起動履歴を調べたいけど、どのコマンドを使えばいいか分からない」
Linuxサーバーを管理していると、ログイン履歴の確認はセキュリティ監査やトラブル調査で避けて通れない作業です。

この記事では、Linuxの last コマンドの基本的な使い方から、lastb による不正ログイン試行の調査、lastlog でのユーザー別最終ログイン確認、期間を指定した絞り込み、さらにセキュリティ監査の実務手順までを解説します。

lastコマンドとは?ログイン履歴を表示する基本コマンド

last コマンドは、システムへのログイン・ログアウトの履歴を時系列で表示するコマンドです。

ログイン履歴は /var/log/wtmp というバイナリファイルに記録されており、last コマンドはこのファイルを読み取って人間が読める形式で出力します。テキストファイルではないため、catless で直接開くことはできません。

# 基本書式 # last [オプション] [ユーザー名] # ログイン履歴を表示する $ last pakira pts/4 192.168.2.100 Sat Jan 22 12:54 still logged in pakira pts/3 Sat Jan 22 12:30 still logged in root pts/1 :1.0 Sat Jan 22 12:29 still logged in reboot system boot 5.14.0-362.el9 Sat Jan 22 12:28 (00:38)

各列の意味は次の通りです。

1列目(ユーザー名):ログインしたユーザー名。reboot はシステム再起動を表す
2列目(端末):ログインに使用した端末(pts/0はSSH接続、tty1はコンソールなど)
3列目(接続元):リモートログインの場合はIPアドレスまたはホスト名
4列目(日時):ログイン日時
5列目(状態):still logged in(ログイン中)、ログアウト時刻、または down(シャットダウン)

lastコマンドの基本的な使い方

1. 表示件数を制限する(-n)

何もオプションを付けずに last を実行すると、/var/log/wtmp に記録されている全ての履歴が表示されます。長期間稼働しているサーバーでは大量の出力になるため、-n オプションで表示件数を制限するのが実用的です。

# 最新の10件だけ表示する $ last -n 10 # -n を省略して数字だけでも指定できる $ last -10

2. 特定ユーザーのログイン履歴を確認する

ユーザー名を引数に指定すると、そのユーザーのログイン履歴だけが表示されます。

# ユーザー「pakira」のログイン履歴を表示する $ last pakira pakira pts/4 192.168.2.100 Sat Jan 22 12:54 still logged in pakira pts/3 Sat Jan 22 12:30 still logged in pakira pts/4 192.168.2.100 Fri Jan 21 01:10 - down (00:41)

特定のユーザーアカウントが不正利用されていないか確認する場合に、まずこの方法で履歴を洗い出します。

3. システムの再起動履歴を確認する(reboot)

last reboot と指定すると、システムの再起動履歴だけが表示されます。「このサーバー、いつ再起動したんだっけ?」という確認に使います。

# システムの再起動履歴を表示する $ last reboot reboot system boot 5.14.0-362.el9 Sat Jan 22 12:28 still running reboot system boot 5.14.0-362.el9 Fri Jan 14 00:30 - 01:51 (01:21) reboot system boot 5.14.0-362.el9 Wed Jan 12 23:50 - 01:05 (01:15)

4. シャットダウン・ランレベル変更の履歴を確認する(-x)

-x オプションを付けると、システムのシャットダウンやランレベル(動作モード)の変更履歴も表示されます。

# シャットダウン・ランレベル変更を含めて表示する $ last -x runlevel (to lvl 3) 5.14.0-362.el9 Sat Jan 22 12:28 still running reboot system boot 5.14.0-362.el9 Sat Jan 22 12:28 still running shutdown system down 5.14.0-362.el9 Fri Jan 21 01:51 - 12:28 (10:37)

shutdown の行で「いつシャットダウンされたか」、runlevel の行で「どの動作モードで起動したか」が分かります。予期しない再起動の原因調査で重宝します。

5. 期間を指定して絞り込む(-s / -t)

-s(since)と -t(until)オプションで、指定した期間内のログイン履歴だけを表示できます。

# 2026年3月1日以降のログイン履歴を表示する $ last -s 2026-03-01 # 2026年3月1日から3月15日までのログイン履歴を表示する $ last -s 2026-03-01 -t 2026-03-15 # 昨日以降のログイン履歴を表示する $ last -s yesterday # 3日前以降のログイン履歴を表示する $ last -s -3days

セキュリティインシデントが発生した際に「この期間に誰がログインしていたか」を調べる場面で必須のオプションです。

6. IPアドレスをホスト名に変換して表示する(-d)

リモートログインのIPアドレスをDNS逆引きしてホスト名で表示したい場合は -d オプションを使います。

# IPアドレスをホスト名に変換して表示する $ last -d

lastbコマンドでログイン失敗履歴を調査する

lastb コマンドは、ログインに失敗した履歴を表示するコマンドです。記録は /var/log/btmp に保存されています。

lastb の実行にはroot権限が必要です。

# ログイン失敗の履歴を表示する(root権限が必要) $ sudo lastb admin ssh:notty 203.0.113.50 Mon Mar 17 03:22 - 03:22 (00:00) root ssh:notty 198.51.100.25 Mon Mar 17 03:21 - 03:21 (00:00) test ssh:notty 203.0.113.50 Mon Mar 17 03:20 - 03:20 (00:00) root ssh:notty 198.51.100.25 Mon Mar 17 03:19 - 03:19 (00:00)

短時間に同一IPアドレスから大量のログイン失敗が記録されている場合、ブルートフォース攻撃(総当たり攻撃)を受けている可能性が高いです。

【重要】lastbで不正アクセスの兆候を調査する手順

実務でのセキュリティ調査では、以下の手順で lastb の出力を分析します。

まず、ログイン失敗の多いIPアドレスを集計します。

# ログイン失敗の多いIPアドレスをランキング表示する $ sudo lastb | awk '{print $3}' | sort | uniq -c | sort -rn | head -10 1523 203.0.113.50 892 198.51.100.25 341 192.0.2.100

次に、攻撃元のIPアドレスが特定できたら、そのIPからの接続をファイアウォールでブロックします。

# firewalld で特定IPをブロックする $ sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="203.0.113.50" reject' $ sudo firewall-cmd --reload

さらに、fail2ban を導入しておくと、一定回数ログインに失敗したIPアドレスを自動でブロックしてくれます。手動での対応には限界があるため、本番サーバーでは fail2ban の導入を強く推奨します。

lastlogコマンドでユーザー別の最終ログインを確認する

lastlog コマンドは、全ユーザーの最終ログイン日時を一覧表示するコマンドです。

# 全ユーザーの最終ログイン日時を表示する $ lastlog Username Port From Latest root pts/0 192.168.1.10 Thu Mar 13 09:15:32 +0900 2026 pakira pts/1 192.168.2.100 Wed Mar 12 14:30:11 +0900 2026 nginx **Never logged in** mysql **Never logged in**

**Never logged in** と表示されるのは、一度もログインしたことがないアカウントです。nginxmysql のようなサービス用アカウントは正常ですが、人が使うはずのアカウントで Never logged in になっている場合は、不要なアカウントが放置されている可能性があります。

特定ユーザーだけを確認したい場合は -u オプションを使います。

# 特定ユーザーの最終ログインを確認する $ lastlog -u pakira

一定期間ログインしていないアカウントを洗い出すには -b オプションが使えます。

# 90日以上ログインしていないアカウントを表示する $ lastlog -b 90

セキュリティ監査で「使われていないアカウントの棚卸し」を行う際に非常に便利です。

who / w コマンドとの使い分け

last は過去のログイン履歴を表示するコマンドですが、「今この瞬間にログインしているユーザー」を確認するには who または w コマンドを使います。

# 現在ログイン中のユーザーを表示する $ who pakira pts/0 2026-03-19 09:15 (192.168.2.100) root pts/1 2026-03-19 10:30 (192.168.1.10) # より詳細な情報(CPU負荷、実行中コマンド)を表示する $ w 10:45:23 up 5 days, 3:12, 2 users, load average: 0.15, 0.10, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT pakira pts/0 192.168.2.100 09:15 1:30m 0.05s 0.01s vim config.txt root pts/1 192.168.1.10 10:30 0.00s 0.12s 0.02s w

使い分けをまとめると次の通りです。

last:過去のログイン・ログアウト履歴を確認する(/var/log/wtmp
lastb:過去のログイン失敗履歴を確認する(/var/log/btmp
lastlog:各ユーザーの最終ログイン日時を確認する
who:現在ログイン中のユーザーを確認する
w:現在ログイン中のユーザーと実行中のコマンドを確認する

journalctl との組み合わせ

systemd環境では、journalctl でもログイン関連の情報を確認できます。lastjournalctl を組み合わせることで、より詳細な調査が可能です。

# SSHのログイン記録を確認する $ journalctl -u sshd --since "2026-03-01" # 認証関連のログを確認する $ journalctl _COMM=sshd --since "today" # 特定ユーザーのsudo実行履歴を確認する $ journalctl _COMM=sudo --since "today" | grep "pakira"

last コマンドでログイン履歴の概要を掴み、怪しい時間帯が見つかったら journalctl --since で詳細なログを深掘りする、という流れがセキュリティ調査の定番です。

セキュリティ監査でのログイン履歴チェックの重要性

サーバーのセキュリティ監査では、ログイン履歴の確認は最も基本的なチェック項目の1つです。以下のポイントを定期的に確認してください。

深夜・休日のログイン:last で通常業務時間外のログインがないか確認する
見覚えのないIPアドレス:社内ネットワーク以外からのログインがないか確認する
大量のログイン失敗:lastb で短時間に大量の失敗がないか確認する
使われていないアカウント:lastlog -b 90 で90日以上ログインのないアカウントを棚卸しする
rootの直接ログイン:last root でrootが直接SSHログインしていないか確認する(セキュリティ上、rootの直接ログインは禁止が原則)

「Permission denied」が出た時の対処法

lastb を一般ユーザーで実行すると、以下のエラーが表示されます。

$ lastb lastb: /var/log/btmp: Permission denied

/var/log/btmp はrootのみ読み取り可能なファイルです。sudo lastb で実行してください。

wtmpファイルが肥大化した場合

/var/log/wtmp は時間の経過とともに大きくなります。通常は logrotate で自動的にローテーションされますが、手動でクリアする必要がある場合は以下のようにします。

# wtmpのサイズを確認する $ ls -lh /var/log/wtmp # 必要に応じてクリアする(過去の履歴は全て消える) $ sudo cp /dev/null /var/log/wtmp

wtmp をクリアすると過去のログイン履歴が全て失われます。監査要件がある場合は、クリア前にバックアップを取ってください。

本記事のまとめ

やりたいこと コマンド
ログイン履歴を表示する last
表示件数を制限する last -n 10
特定ユーザーの履歴を表示する last ユーザー名
再起動履歴を表示する last reboot
シャットダウン・ランレベル変更を含めて表示する last -x
期間を指定して表示する last -s 2026-03-01 -t 2026-03-15
ログイン失敗履歴を表示する sudo lastb
ログイン失敗の多いIPを集計する sudo lastb | awk '{print $3}' | sort | uniq -c | sort -rn | head -10
全ユーザーの最終ログインを表示する lastlog
90日以上ログインのないアカウントを表示する lastlog -b 90
現在ログイン中のユーザーを確認する who

サーバーのセキュリティ管理を体系的に学びたいと思いませんか?

ログイン履歴の確認はセキュリティ管理の第一歩ですが、安全なサーバー運用にはもっと多くの知識が必要です。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。



無料プレゼント
図解60p「Linuxサーバー構築入門マニュアル」
独学で詰まる前に、“型(手順書)”で最初の環境構築をサクッと終わらせましょう。
登録10秒/自動返信でDL/合わなければ解除3秒
無料で受け取る ※メールアドレスだけでもOK(必須項目は最小限)

宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

<<関連記事>>
・pstree
・chsh
・finger
・duコマンドでディスク使用量を確認する方法|ディレクトリごとの容量や容量順ソートも
・LinuxのOSバージョンを確認するコマンド|uname・os-release・hostnamectlの使い方

図解60pのLinux無料マニュアル
登録10秒/自動返信でDL
無料で受け取る