lastコマンドでLinuxのログイン履歴を確認する方法|lastbで失敗ログインとwtmpの見方も

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxtips > lastコマンドでLinuxのログイン履歴を確認する方法|lastbで失敗ログインとwtmpの見方も
「このサーバー、いつ誰がログインしたか分からなくて不安だ」「不正アクセスの痕跡を調べたいが、どのファイルを見ればいいか分からない」——サーバー管理をしていると、こういった場面が必ずあります。

Linuxのログイン履歴は、バイナリ形式のファイルに記録されているため、catやlessでは読めません。専用のlastコマンドを使う必要があります。

この記事では、lastコマンドでLinuxのログイン履歴を確認する方法を解説します。lastbによるログイン失敗履歴の確認、/var/log/wtmpファイルの仕組み、実務でのセキュリティ監査への活用まで、実行例付きでまとめます。

【この記事でわかること】

・last コマンドで /var/log/wtmp のログイン履歴を読める(バイナリなのでcatは不可)
・lastb コマンドで /var/log/btmp のログイン失敗履歴を確認できる
・-n オプションで表示件数、-F で完全な日時、-i でIPアドレスを確認できる
・不正アクセス調査では lastb と /var/log/secure の両方を確認するのが鉄則


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

ログイン履歴が保存されるファイルの仕組み

Linuxのログイン情報は複数のバイナリファイルに記録されています。
ファイル 内容 確認コマンド
/var/log/wtmp ログイン・ログアウト・リブートの履歴 last
/var/log/btmp ログイン失敗の履歴 lastb
/var/run/utmp 現在ログイン中のユーザー情報 who / w
/var/log/lastlog 各ユーザーの最終ログイン時刻 lastlog
これらはすべてバイナリ形式のため、catlessでは文字化けした内容しか表示されません。必ず専用コマンドで読みましょう。

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

1. lastの基本構文とオプション

# 書式 last [オプション] [ユーザー名] [端末名] # 主なオプション # -n N 最新N件のみ表示(例: -n 20) # -F 日時を完全な形式で表示(年・秒まで表示) # -i ホスト名の代わりにIPアドレスで表示 # -d IPアドレスをホスト名に逆引きして表示 # -f FILE 読み込むwtmpファイルを指定(デフォルトは/var/log/wtmp) # -R ホスト名フィールドを非表示にする # -x シャットダウン・ランレベル変更も表示する

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

[root@Tiger ~]# last pakira pts/0 192.168.0.162 Wed Oct 10 12:21 still logged in reboot system boot 2.6.32-279.el6.i Wed Oct 10 12:20 - 12:37 (00:17) root tty1 Fri Aug 24 13:45 - down (00:00) pakira ftpd1456 192.168.0.162 Fri Aug 24 13:43 - 13:44 (00:01) pakira ftpd1455 192.168.0.162 Fri Aug 24 13:43 - 13:44 (00:01) pakira ftpd1446 192.168.0.162 Fri Aug 24 13:42 - down (00:03) wtmp begins Wed Oct 10 12:20:41 2012

出力の見方:
・1列目:ユーザー名(rebootはシステム再起動)
・2列目:端末名(pts/0=SSH、tty1=コンソール、ftpdXXX=FTP)
・3列目:接続元IPアドレスまたはホスト名
・4列目以降:ログイン日時・ログアウト日時・滞在時間
・「still logged in」は現在もセッションが続いていることを意味します

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

# 特定ユーザー(pakira)の履歴だけを表示します [root@Tiger ~]# last pakira pakira pts/0 192.168.0.162 Wed Oct 10 12:21 still logged in pakira ftpd1456 192.168.0.162 Fri Aug 24 13:43 - 13:44 (00:01) pakira ftpd1455 192.168.0.162 Fri Aug 24 13:43 - 13:44 (00:01) pakira ftpd1446 192.168.0.162 Fri Aug 24 13:42 - down (00:03) pakira pts/0 192.168.0.162 Fri Aug 24 13:20 - down (00:15) pakira pts/0 192.168.0.162 Fri Aug 24 12:35 - 13:03 (00:28)

4. 最新件数を指定して表示する

# 最新20件のみ表示します # last -n 20 # または省略形 # last -20 [root@server1 ~]# last -20 pakira pts/1 10.0.1.52 Tue Apr 7 09:15 still logged in root pts/0 10.0.1.10 Tue Apr 7 08:00 - 08:45 (00:45) pakira pts/0 10.0.1.52 Mon Apr 6 14:30 - 17:00 (02:30)

5. IPアドレスと完全な日時で表示する

不正アクセスの調査では、接続元IPアドレスと正確な日時の両方が重要です。

# -F: 秒まで含む完全な日時、-i: IPアドレスで表示 [root@server1 ~]# last -Fi pakira pts/1 10.0.1.52 Tue Apr 7 09:15:32 2026 still logged in root pts/0 10.0.1.10 Tue Apr 7 08:00:11 2026 - Tue Apr 7 08:45:30 2026 (00:45) reboot system boot Mon Apr 6 23:30:01 2026 - Tue Apr 7 09:20:00 2026 (09:49)

6. リブート履歴を確認する

# rebootエントリだけを表示します [root@server1 ~]# last reboot reboot system boot 5.14.0-427.13.1. Mon Apr 6 23:30 still running reboot system boot 5.14.0-427.13.1. Sun Apr 5 02:15 - 23:30 (21:15) reboot system boot 5.14.0-427.13.1. Fri Apr 3 22:00 - 02:12 (04:12) wtmp begins Mon Mar 11 00:00:01 2026

予期しない時刻のリブートが記録されていたら、サーバーの異常終了(OOMキラー・電源断等)を疑いましょう。

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

lastbコマンドは、ログイン失敗(パスワード間違いや存在しないユーザーによるアクセス試行)の履歴を表示します。
参照ファイルは /var/log/btmp です。

1. lastbの基本的な使い方

# ログイン失敗履歴を表示します(root権限が必要) [root@server1 ~]# lastb admin ssh:notty 103.92.32.11 Tue Apr 7 09:10:55 2026 - Tue Apr 7 09:10:55 2026 (00:00) root ssh:notty 103.92.32.11 Tue Apr 7 09:10:52 2026 - Tue Apr 7 09:10:52 2026 (00:00) test ssh:notty 185.234.218.45 Tue Apr 7 08:55:30 2026 - Tue Apr 7 08:55:30 2026 (00:00) ubuntu ssh:notty 185.234.218.45 Tue Apr 7 08:55:28 2026 - Tue Apr 7 08:55:28 2026 (00:00) btmp begins Sun Apr 6 00:00:01 2026

複数の国外IPから短時間に大量のアクセス試行が記録されている場合、ブルートフォース攻撃の可能性があります。
注意: lastbは/var/log/btmpが存在しない場合は「lastb: /var/log/btmp: No such file or directory」とエラーが出ます。btmpファイルがないサーバーでは失敗ログが記録されていない状態です。

2. lastbで接続元IPをカウントする

攻撃元IPを特定して対策を講じる場合に使います。

# 接続元IPアドレスの試行回数を多い順に表示します [root@server1 ~]# lastb -i | awk '{print $3}' | sort | uniq -c | sort -rn | head -10 542 103.92.32.11 218 185.234.218.45 87 91.109.25.150 43 45.142.212.200

特定のIPからの試行が数百件に及ぶ場合、firewall-cmdやiptablesでそのIPをブロックすることを検討してください。

応用・セキュリティ監査での実務活用

1. 古いwtmpファイルを指定して確認する

wtmpファイルはローテーションされ、古いものは wtmp.1 や wtmp-20260101 などの名前で保存されます。

# ローテーション済みのwtmpを確認します [root@server1 ~]# ls /var/log/wtmp* /var/log/wtmp /var/log/wtmp-20260401 # 古いwtmpファイルを -f で指定して確認します [root@server1 ~]# last -f /var/log/wtmp-20260401 | head -10

2. lastlogコマンドで最終ログイン時刻を確認する

各ユーザーの最終ログイン時刻一覧を確認するには lastlog コマンドを使います。

# 全ユーザーの最終ログイン時刻を表示します [root@server1 ~]# lastlog Username Port From Latest root pts/0 10.0.1.10 Tue Apr 7 08:00:11 +0900 2026 bin **Never logged in** daemon **Never logged in** pakira pts/1 10.0.1.52 Tue Apr 7 09:15:32 +0900 2026 # 特定ユーザーだけ確認します [root@server1 ~]# lastlog -u pakira Username Port From Latest pakira pts/1 10.0.1.52 Tue Apr 7 09:15:32 +0900 2026

「Never logged in」のシステムアカウントが突然ログイン履歴を持っていたら、権限昇格攻撃の可能性があります。定期的に確認する習慣をつけてください。

3. /var/log/secureと組み合わせた不正アクセス調査

実務での不正アクセス調査では、lastbだけでなく/var/log/secureも同時に確認します(RHEL系)。

# SSHログイン失敗を /var/log/secure で確認します(RHEL系) [root@server1 ~]# grep "Failed password" /var/log/secure | tail -10 Apr 7 09:10:52 server1 sshd[12345]: Failed password for invalid user admin from 103.92.32.11 port 52341 ssh2 Apr 7 09:10:55 server1 sshd[12346]: Failed password for root from 103.92.32.11 port 52345 ssh2 # Ubuntu/Debian系は /var/log/auth.log を確認します $ grep "Failed password" /var/log/auth.log | tail -10 # 特定IPからの試行数をカウントします [root@server1 ~]# grep "Failed password" /var/log/secure | grep "103.92.32.11" | wc -l 542

トラブルシュート・よくあるエラー

「/var/log/wtmp: No such file or directory」が出た場合

wtmpファイルが存在しない、または消えてしまっています。

# wtmpファイルが存在するか確認します $ ls -la /var/log/wtmp ls: cannot access '/var/log/wtmp': No such file or directory # 空のwtmpファイルを作成します(これ以降のログが記録されます) $ sudo touch /var/log/wtmp $ sudo chmod 664 /var/log/wtmp $ sudo chown root:utmp /var/log/wtmp

wtmpは意図的に削除されている場合(不正アクセスで証拠隠滅)もあります。wtmpが突然なくなっていたら、セキュリティ侵害の兆候として調査してください。

「lastb: /var/log/btmp: No such file or directory」が出た場合

# btmpファイルを作成します $ sudo touch /var/log/btmp $ sudo chmod 600 /var/log/btmp $ sudo chown root:utmp /var/log/btmp

lastの出力が多すぎて確認しにくい場合

# 件数を絞り込んで確認します $ last -n 50 # grepで特定の接続元IPを絞り込みます $ last -i | grep "10.0.1" # 特定の日時以降のログインを確認します(-t オプションはGNU拡張) $ last --since 2026-04-01 # less でページング表示します $ last | less

本記事のまとめ

Linuxのログイン履歴はバイナリファイルに記録されているため、専用コマンドで確認します。
やりたいこと コマンド
ログイン履歴を確認する last
特定ユーザーの履歴を確認する last ユーザー名
最新N件のみ表示する last -n N
IPアドレスと完全な日時で表示する last -Fi
リブート履歴を確認する last reboot
ログイン失敗履歴を確認する lastb
各ユーザーの最終ログイン時刻を確認する lastlog
古いwtmpファイルを読む last -f /var/log/wtmp-20260401
セキュリティ監査では「lastでログイン履歴」「lastbで失敗履歴」「/var/log/secureで詳細ログ」の3点セットで調査するのが現場の鉄則です。

Linuxサーバーのセキュリティ管理を体系的に学びたい方へ

lastコマンドによるログイン履歴の確認は、サーバーセキュリティ管理の基本の一つです。
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、「Linuxサーバー構築入門マニュアル(図解60P)」を完全無料でプレゼントしています。

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

Linuxサーバーのセキュリティ管理を体系的に学びたい方へ

lastコマンドによるログイン履歴の確認は、サーバーセキュリティ管理の基本の一つです。
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

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

RHEL/CentOSでのログイン履歴確認の追加手順

RHEL/CentOS系(Red Hat Enterprise Linux系ディストリビューション)では、lastコマンドに加えてaulastコマンド(audit logベースのログイン履歴表示ツール)も活用してください。auditd(監査デーモン)が稼働している環境では、/var/log/audit/audit.logに認証イベントが詳細に記録されており、aulastで人間が読みやすい形式で確認できます。lastだけだとwtmpに記録されない一部のセッションが取りこぼされる場合があるので、両方を併用しましょう。

また、systemd-journaldが有効な環境ではjournalctlでsshdユニットのログを直接遡ることも有効です。次のコマンドで確認してください。

# auditログからログイン履歴を取得 aulast # sshd経由のログイン試行をjournaldから抽出 journalctl -u sshd --since "7 days ago" | grep -i "accepted\|failed"

RHEL8以降ではrsyslogよりjournaldが主役になっているため、/var/log/secureが空のケースもあります。その場合はjournalctlを優先して参照してください。

wtmp/btmp ローテーション後の過去履歴を遡る方法

lastコマンドは標準で/var/log/wtmp(ログイン成功記録)を読みますが、logrotateによって定期的にwtmp.1, wtmp.2.gzのようにローテーションされています。古い履歴を確認したい場合は、-fオプション(読み込むファイルを明示指定するオプション)でローテーション済みファイルを指定してください。gz圧縮されている場合は一時的に展開してから読み込みます。

失敗ログインを記録するbtmpも同様にローテーション対象なので、過去の不正アクセス痕跡を追う際は古いbtmpも忘れずに確認しましょう。

# 1世代前のwtmpを読み込む last -f /var/log/wtmp.1 # 圧縮済みwtmpを展開して参照 zcat /var/log/wtmp.2.gz > /tmp/wtmp.old last -f /tmp/wtmp.old # 過去の失敗ログインを遡る lastb -f /var/log/btmp.1

監査対応で数ヶ月前の履歴を求められた場合は、/etc/logrotate.conf のwtmp/btmpのrotate世数(保持世代数)を事前に長めに設定しておきましょう。デフォルトの1ヶ月では足りないケースが多いので、運用ポリシーに合わせて見直してください。

rootログインのみ抽出するワンライナー

セキュリティ点検で「rootアカウントで誰がいつログインしたか」を素早く把握したい場面は多いはずです。lastコマンドの第一引数にユーザー名を渡すことで該当ユーザーのみフィルタできるので、まずはこの基本形を使ってください。さらに踏み込んで、リモートIPごとの集計やpts(疑似端末)/tty(仮想端末)別の分類を行いたい場合はawkやsortと組み合わせます。

# rootのログイン履歴のみ抽出 last root # rootログインを接続元IPごとに集計 last root | awk '{print $3}' | sort | uniq -c | sort -rn # rootへのログイン失敗をまとめて確認 lastb root | head -20

不審なIPからのrootログインが見つかった場合は、/etc/ssh/sshd_configで PermitRootLogin no を設定し、rootへの直接ログインを禁止してください。代わりにsudo経由の運用に切り替えることで、誰がrootとして何を実行したかをauth.logやsudoログで追跡しやすくなります。日常運用ではcronなどで定期的に上記ワンライナーを回し、想定外のrootアクセスを早期検知する仕組みを整えておきましょう。

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

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

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

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。