「サーバーの再起動履歴を調べたいけど、どのコマンドを使えばいいか分からない」
Linuxサーバーを管理していると、ログイン履歴の確認はセキュリティ監査やトラブル調査で避けて通れない作業です。
この記事では、Linuxの
last コマンドの基本的な使い方から、lastb による不正ログイン試行の調査、lastlog でのユーザー別最終ログイン確認、期間を指定した絞り込み、さらにセキュリティ監査の実務手順までを解説します。lastコマンドとは?ログイン履歴を表示する基本コマンド
last コマンドは、システムへのログイン・ログアウトの履歴を時系列で表示するコマンドです。ログイン履歴は
/var/log/wtmp というバイナリファイルに記録されており、last コマンドはこのファイルを読み取って人間が読める形式で出力します。テキストファイルではないため、cat や less で直接開くことはできません。# 基本書式 # 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)
【重要】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
# 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** と表示されるのは、一度もログインしたことがないアカウントです。nginx や mysql のようなサービス用アカウントは正常ですが、人が使うはずのアカウントで 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 でもログイン関連の情報を確認できます。last と journalctl を組み合わせることで、より詳細な調査が可能です。# 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日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
登録10秒/自動返信でDL/合わなければ解除3秒
<<関連記事>>
・pstree
・chsh
・finger
・duコマンドでディスク使用量を確認する方法|ディレクトリごとの容量や容量順ソートも
・LinuxのOSバージョンを確認するコマンド|uname・os-release・hostnamectlの使い方
