目次
1. auth.log(secure)とは何か
Linuxサーバーでは、SSHログインの成功・失敗、sudoの実行、ユーザーの作成・削除といった認証関連の操作がすべて記録されています。Debian/Ubuntu系では/var/log/auth.log、CentOS/RHEL系では/var/log/secureというファイルがそれにあたります。
ここには、海外の見知らぬIPアドレスから毎分のようにログインを試みる「ブルートフォース攻撃」の痕跡が、多くの公開サーバーで日常的に記録されています。放置していても即座に被害が出るとは限りませんが、パスワードが弱いアカウントがあれば突破されるリスクは確実に存在します。
2. ログの場所と基本的な見方
まずは自分の目でざっと確認する習慣を持つことが大切です。以下は失敗したSSHログイン試行だけを抜き出すコマンドです。
grep "Failed password" /var/log/auth.log | tail -50 試行元のIPアドレスごとに件数を集計すると、攻撃の規模感がつかめます。
grep "Failed password" /var/log/auth.log | awk '{print $(NF-3)}' | sort | uniq -c | sort -rn | head -20 とはいえ、量が多い上に手作業での傾向分析には限界があります。ここでAIの出番です。
3. AIにログを読ませる手順
ChatGPTやClaudeにログを直接ペーストして分析させるのが最も手軽な方法です。手順はシンプルです。
- 直近のログを一定件数だけ抽出する(全量は貼り付けられないため)
- 個人情報・社内固有のホスト名などが含まれていないか軽く確認する
- AIに「異常なパターンがあれば指摘して」と依頼する
tail -n 300 /var/log/auth.log > /tmp/auth_sample.log Claude Codeのようなターミナル常駐型のAIツールを使っている場合は、ファイルを直接読み込ませて質問するだけで済みます。人間が「怪しい」と気づくには経験が必要なパターン(同一IPからの規則的な間隔での試行、辞書攻撃特有のユーザー名リストなど)も、AIは統計的に見つけ出すのが得意です。
4. 実際に使えるプロンプト例
漠然と「見て」と頼むより、目的を絞ったプロンプトの方が精度の高い回答が返ってきます。
「このauth.logの抜粋から、①同一IPからの連続失敗が多い攻撃元 ②総当たり攻撃で使われているユーザー名の傾向 ③通常業務とは考えにくい時間帯のログイン成功、の3点を抽出して表にまとめてください」
このように出力形式まで指定すると、後で見返しやすいレポートとして整理してもらえます。定期的にこのプロンプトを実行するようスクリプト化すれば、簡易的な監視の仕組みにもなります。
5. AIに丸投げしてはいけない注意点
⚠️ 気をつけたいポイント
- ログをクラウドAPI経由のAIに渡す場合、社外秘の情報(内部IPの命名規則・実在ユーザー名等)が含まれていないか確認する
- AIの「異常なし」という回答を鵜呑みにせず、最終判断は人間が行う
- ログそのものを消去・改変する提案をAIがしてきても、証跡保全のため安易に実行しない
AIはあくまで「大量のログから怪しい部分を絞り込む一次スクリーニング」に使うのが安全です。最終的な遮断判断や法的対応が必要なケースでは、人間の確認を挟んでください。
6. 異常が見つかった後の対応
- fail2banを導入する — 一定回数ログインに失敗したIPを自動でブロックする定番ツール
- パスワード認証を無効化し鍵認証のみにする — ブルートフォース攻撃そのものを無意味にできる
- SSHのポート番号を変更する — 機械的なスキャンの多くを避けられる(根本対策ではないが効果はある)
- 該当IPをファイアウォールで遮断する — 明らかに悪質な攻撃元は個別にブロック
まとめ
- auth.log(secure)にはSSH不正アクセスの試行がすべて記録されている
- AIに読ませることで、人間では追いきれない量のログから異常パターンを効率よく抽出できる
- ただし最終判断とログの取り扱いは人間が責任を持つ
- 異常を見つけたらfail2ban・鍵認証・ファイアウォールで具体的に対策する