【Linux入門】ログイン履歴を確認する方法まとめ|不正アクセス・ユーザー管理にも役立つ!

Linux

「このサーバー、いつ誰がログインしたの?」
「不正アクセスがないか確認したい」

そんな時に活用できるのが、Linuxのログイン履歴を確認する方法です。

Linuxはマルチユーザーシステムなので、誰がいつログイン・ログアウトしたかの記録(ログ)を自動で保存しています。

この記事では、初心者でも簡単に使えるログイン履歴の確認方法を、代表的なコマンドを中心に解説します。

スポンサーリンク

方法①:last コマンドでログイン履歴を確認する

last は、Linuxで最もよく使われるログイン履歴の確認コマンドです。

基本コマンド:

last

出力例:

user01   pts/0        192.168.1.10     Fri May 17 10:15   still logged in
user02   pts/1        192.168.1.20     Thu May 16 09:45 - 10:05  (00:20)
reboot   system boot  5.15.0-1054      Wed May 15 08:00   still running

このコマンドでは、以下の情報が確認できます:

  • ログインしたユーザー名
  • 端末名(pts/0など)
  • アクセス元IPアドレス(またはホスト名)
  • ログインした時間とログアウト時間
  • セッションの長さ
  • システムの再起動(reboot)

表示件数の制限

直近の10件だけを表示したい場合:

last -n 10

または短縮形で:

last -10

特定の日付範囲を指定

# 特定の日付以降のログインを表示
last -s "2025-05-01 00:00"

# 特定の期間内のログインを表示
last -s "2025-05-01 00:00" -t "2025-05-15 23:59"

方法②:特定ユーザーのログイン履歴を調べる

last ユーザー名

例えば:

last user01

このように指定すれば、特定のユーザーの履歴だけを抽出できます。

複数ユーザーを同時に調べる

last user01 user02

他の便利なオプション

# IPアドレスを解決せず数値のまま表示(表示が速い)
last -i

# 再起動の記録も表示
last reboot

# フルタイムスタンプ形式で表示
last -F

方法③:現在ログインしているユーザーを確認(who)

ログイン履歴ではなく、「今」誰がログインしているかを確認したい場合は who コマンドを使います。

who

出力例:

user01   pts/0  2025-05-18 10:23 (192.168.1.10)

現在ログインしているユーザーと、アクセス元、ログイン時間が表示されます。

より詳細な情報を表示する

# すべての情報を表示
who -a

# ヘッダー付きで見やすく表示
who -H

関連コマンド

# 自分自身の情報を表示
whoami

# 現在のログインセッション情報
w

w コマンドでは、ログインしているユーザーの情報に加えて、何をしているか(実行中のコマンド)も表示されます。

方法④:ログファイルから直接確認する(上級者向け)

last コマンドは /var/log/wtmp というバイナリ形式のログファイルを参照しています。内容を確認したい場合:

last -f /var/log/wtmp

また、ログインに失敗した記録(不正ログインの確認など)は /var/log/btmp に記録されています。

sudo lastb

lastb コマンドは btmp のログを読み取ります。
セキュリティ監査にも有効です。

ログイン失敗の分析

ログイン失敗の記録は、不正アクセスの試みを検出するのに非常に役立ちます:

# 失敗回数が多いIPアドレスを確認
sudo lastb | awk '{print $3}' | sort | uniq -c | sort -nr | head -10

# 特定のユーザー名での失敗を確認
sudo lastb root

方法⑤:詳細なログを確認(syslog、secure)

より詳細なログイン情報(SSHログインなど)は、システムログファイルにも記録されています:

Debian/Ubuntuの場合:

grep "session opened" /var/log/auth.log

CentOS/RHEL/Fedoraの場合:

grep "session opened" /var/log/secure

これらのログには、認証方式やアクセス元IPなどの詳細情報も含まれています。

補足:ログローテーションに注意

多くのLinuxディストリビューションでは、ログファイルが定期的に圧縮・ローテーションされる設定になっています。

古いログイン履歴を確認したい場合は、次のような圧縮ファイルを解凍して読み込む必要があります。

last -f /var/log/wtmp.1

または .gz ファイルを zcatzless で確認:

zcat /var/log/wtmp.1.gz | last -f -

ログの保存期間

ログの保存期間はディストリビューションやシステム設定によって異なります。

通常は /etc/logrotate.conf/etc/logrotate.d/ 内のファイルで設定されています。

セキュリティ監査のためには、ログの保存期間をより長くするように設定することも検討してください。

セキュリティ対策としての活用法

定期的なログ確認の自動化

# 毎日の不審なログインをチェックするスクリプト例
last -s "yesterday" | grep -v "127.0.0.1" | grep -v "$(hostname)"

# 不正ログイン試行を検出するスクリプト例
sudo lastb | awk '{print $3}' | sort | uniq -c | sort -nr | head -5

これらをcronジョブとして設定すれば、定期的に自動チェックできます。

不審なアクセスが見つかった場合

不審なアクセスを見つけた場合の対処手順:

  1. アカウントのパスワードを即時変更
  2. システム全体のセキュリティチェック
  3. ファイアウォール設定の見直し
  4. SSH設定の強化(鍵認証の導入など)

まとめ|ログイン履歴の確認でセキュリティ意識を高めよう

Linuxのログイン履歴を確認することで、不正アクセスの早期発見やユーザー行動の把握が可能になります。

本記事のポイント

  • last:最も基本的なログイン履歴確認コマンド
  • who:現在ログイン中のユーザーを確認
  • lastb:ログイン失敗の履歴をチェック
  • システムログファイルも併せてチェック
  • ログローテーション後のファイルにも注意

日常的なセキュリティ管理のために

  • 週に1回はログイン履歴を確認する習慣をつける
  • 不明なログインや失敗が多いIPアドレスを監視
  • 長期間使っていないアカウントを見つけて無効化
  • SSHキー認証を導入してパスワードログインを無効化

セキュリティ対策としても、日常的にログイン履歴をチェックする習慣をつけておきましょう!

システム管理者だけでなく、自分のLinuxマシンを使う一般ユーザーにとっても、セキュリティ向上のための基本スキルとなります。

コメント

タイトルとURLをコピーしました