ログで異変に気づく(last・lastb・journalctl)
不正アクセスは、多くの場合ログに痕跡を残します。ログイン履歴を見るlast、ログイン失敗を見るlastb、いま誰が使っているか分かるwやwho、認証ログを読むjournalctlを使いこなせば、異変の兆候に早く気づけます。この記事では、これらのコマンドの読み方と、深夜の大量失敗や見慣れないIPといった危険サインの見分け方を解説します。
不正アクセスは、成功したものも失敗したものも、たいていログにその痕跡を残す。ログを読む習慣があるかどうかで、異変への気づきの早さがまったく変わってくる。
📜 認証ログの場所
ログイン試行などの認証に関わる記録は、ディストリビューションによって置き場所が異なる。Debian/Ubuntu系では /var/log/auth.log にテキストとして残ることが多く、systemdを採用した環境全般では journalctl コマンドでシステムログをまとめて確認できる。
🕰️ lastでログイン履歴、lastbで失敗履歴
ログインが成功した記録を時系列で見せてくれるのがlastコマンドだ。誰が、いつ、どこから(IPアドレスや端末)ログインしたかが一覧で分かる。
一方、ログインに失敗した記録を見せてくれるのがlastbだ。名前の通りlastの「bad」版で、パスワードを間違えた・存在しないユーザー名を試みたといった失敗の試行が並ぶ。これは総当たり攻撃の痕跡を見つけるのに特に役立つ。
👀 今誰がいるか、wとwho
過去の履歴ではなく「今この瞬間」誰がログインしているかを知りたいときは、wやwhoコマンドを使う。whoはログイン中のユーザー名・端末・接続元をシンプルに一覧表示し、wはそれに加えて、各ユーザーが今何のコマンドを実行しているか、CPU負荷の状況まで表示してくれる。
🔍 sshdの失敗ログの読み方
SSH経由の攻撃はログに独特のパターンを残す。よく見る文言に Invalid user と Failed password の2つがある。
Invalid userは、そもそもサーバー上に存在しないユーザー名でログインを試みた記録だ。admin・test・rootなど、よくある名前を機械的に総当たりしている痕跡であることが多い。一方Failed passwordは、実在するユーザー名に対してパスワードが違った記録で、こちらは対象を絞った攻撃の可能性がある分、より注意が要る。
🚨 異常の兆候
1件2件のログイン失敗は、誰でも打ち間違いで起こしうる。だが、深夜帯に同じIPから大量の失敗が並ぶ、普段アクセスのない国のIPからの試行が続く、といったパターンは明確な異常のサインだ。
こうした兆候を見つけたら、既存トピックのfail2banのような仕組みで自動的に一定回数の失敗でIPを締め出す対策や、SSH鍵認証への一本化が有効な打ち手になる。
🗂️ auditdの存在(紹介レベル)
last・lastb・journalctlは「誰がログインしたか」を追うのに向いているが、「どのファイルが読まれた・書き換えられたか」まで細かく追いたい場合は、auditdという監査専用の仕組みがある。特定のファイルやシステムコールを監視対象に指定し、アクセスがあるたびに詳細な記録を残せる。
まずはlast・lastb・journalctlの3つだけでも定期的に眺める習慣をつけ、物足りなくなったらauditdの導入を検討する、という段階的な進め方で十分だ。
ログを読む習慣は、地味だが最も裏切らない防御だ。lastとlastbで人の出入りを、journalctlで詳細を、wとwhoで今この瞬間を、それぞれ確認できるようにしておこう。