2026年6月19日
2026年6月19日
WordPressのセキュリティ監査ログを設定する方法|WP Activity Logの初期設定と見方
監査ログは、サイトで「誰が・いつ・どこから・何をしたか」を記録したものです。不正ログインや改ざんが疑われるときに、いつ何が変わったかをさかのぼって確かめる手がかりになります。WordPress 本体には監査ログの機能が無いため、プラグインで記録します。
この記事では、監査ログのプラグインとして広く使われている WP Activity Log(旧名 WP Security Audit Log、公式ディレクトリのスラッグは wp-security-audit-log)の設定方法を説明します。プラグインの情報は 2026年11月時点のものです。画面の表記は英語のものを示しています。
WP Activity Log で記録できること
無料版でも、有料版と同じ範囲のイベントが記録されます。公式の説明では、主に次のようなものが対象です。
- ログイン・ログアウト・ログイン失敗、セッションの終了
- 投稿・固定ページ・カスタム投稿タイプ、カテゴリー・タグ、ウィジェット・メニューの変更
- ユーザーの作成・削除、プロフィール(パスワード・メールアドレス・権限グループ)の変更
- WordPress 本体の更新、設定の変更
- プラグイン・テーマのインストール・有効化・更新・削除
- プラグインによるデータベースのテーブルの変更、ファイルの追加・変更・削除
有料版で加わるのは、メールなどでの通知、レポートと書き出し、外部データベースへの保存、外部サービスへのログ転送、ログイン中のユーザーとセッションの管理、詳細な検索の絞り込みなどです。記録する範囲ではなく、通知や分析の機能が有料になっています。
ほかの選択肢として、変更履歴を読みやすく表示する Simple History もあります。違いと使い方は WordPressでユーザーのアクティビティログを記録する方法 で説明しています。
手順1: プラグインを入れる
管理画面の「プラグイン」→「新規プラグインを追加」で「WP Activity Log」を検索し、インストールして有効化します。WP-CLI が使える場合は次のコマンドでも同じです。
wp plugin install wp-security-audit-log --activate
2026年11月時点の WP Activity Log(5.7系)は、WordPress 5.5 以上・PHP 7.4 以上が必要です。記録は有効化した後の操作から始まります。
手順2: 初期設定ウィザードを進める
有効化すると、初期設定のウィザードが表示されます(診断データの送信を許可するかどうかも聞かれます。不要なら送信しない方を選びます)。ウィザードでは次の項目を選びます。
| 項目 | 内容 |
|---|---|
| ログの詳しさ(log detail level) | 「Comprehensive」(詳しく記録)か「Basic」(主要なものだけ)。迷ったら Comprehensive を選び、後で不要なイベントを外す |
| ログインページ | wp-admin のログイン画面以外のログインページ(プラグインが作ったログイン画面など)も監視するか |
| ユーザー登録 | 訪問者がユーザー登録できるサイトの場合、登録を記録するか |
| 保存期間(data retention) | ログを残す期間。初期設定は3か月で、より長い期間や無期限も選べる |
ウィザードで選んだ内容は、後から設定画面(Settings)で変えられます。
手順3: ログを見る
左メニューに「WP Activity Log」が追加されます。「WP Activity Log」→「Log viewer」を開くと、記録されたイベントが新しい順に一覧で表示されます。各行には、日時、ユーザー、IP アドレス、イベント ID、内容が表示されます。
イベント ID は、記録の種類を表す番号です。調査のときによく見るものを挙げます(プラグインのソースコードで確認した ID と名称)。
| イベント ID | 内容 |
|---|---|
| 1000 | ログインした |
| 1001 | ログアウトした |
| 1002 | ログインに失敗した(パスワードの誤り) |
| 1003 | 存在しないユーザー名でログインに失敗した |
| 2001 | 投稿を公開した |
| 2002 | 投稿を変更した |
| 2012 | 投稿をゴミ箱に移動した |
| 4000 | 新しいユーザーが作成された |
| 4002 | 他のユーザーによって権限グループが変更された |
| 5000 | プラグインをインストールした |
| 5001 | プラグインを有効化した |
| 5002 | プラグインを無効化した |
| 6004 | WordPress 本体が更新された |
不正アクセスを疑うときは、次の順に確認すると状況をつかみやすくなります。
- 知らない IP アドレスからの 1000(ログイン成功)が無いか
- 同じ IP アドレスから 1002・1003(ログイン失敗)が大量に続いていないか
- 4000(ユーザー作成)や 4002(権限グループの変更)で、身に覚えのない管理者が作られていないか
- 5000・5001(プラグインのインストール・有効化)で、知らないプラグインが入っていないか
手順4: 記録するイベントを選ぶ
「WP Activity Log」→「Enable/Disable Events」に、記録できるイベントの一覧があります。カテゴリーごとに分かれていて、チェックを外して保存すると、そのイベントは記録されなくなります。Log viewer でイベント ID にマウスを重ねたときに出るボタンからも、そのイベントを止められます。
記録を減らすとデータベースの増え方は抑えられますが、ログインやユーザー、プラグインに関するイベントは、調査に必要になるので残しておきます。
手順5: データベースから直接調べる
ログは、WordPress と同じデータベースの wp_wsal_occurrences(イベント本体)と wp_wsal_metadata(イベントごとの詳細)に保存されます(接頭辞が wp_ の場合)。管理画面に入れないときや、まとめて集計したいときは、WP-CLI や phpMyAdmin で直接読めます。日時の列 created_on は UNIX 時刻(秒)で入っています。
# ログイン失敗(1002・1003)の新しい20件
wp db query "SELECT id, alert_id, FROM_UNIXTIME(created_on) AS created, username, client_ip FROM wp_wsal_occurrences WHERE alert_id IN (1002, 1003) ORDER BY created_on DESC LIMIT 20;"
# 直近1日でログイン失敗が多い IP アドレス
wp db query "SELECT client_ip, COUNT(*) AS cnt FROM wp_wsal_occurrences WHERE alert_id IN (1002, 1003) AND created_on > UNIX_TIMESTAMP() - 86400 GROUP BY client_ip ORDER BY cnt DESC LIMIT 10;"
FROM_UNIXTIME() はデータベースのタイムゾーン設定に従って日時を表示します。読むだけの SELECT にとどめ、ログのテーブルを直接書き換えないでください。
運用での注意
- 保存期間を決める。 長く残すほど調査に使える範囲は広がりますが、データベースは大きくなります。サイトの規模とバックアップの容量を見て決めます。
- ログは同じデータベースにある。 管理者権限を奪われると、ログも消されたり書き換えられたりするおそれがあります。重要なサイトでは、Web サーバーのアクセスログを別の場所に保管するか、外部への保存・転送(有料版の機能)を検討します。
- 個人情報の扱い。 ログには IP アドレスやユーザー名が含まれます。記録の目的と保存期間を決め、プライバシーポリシーに記載します。
- ログを見る習慣をつける。 記録していても、見なければ異常に気づけません。週に一度など、Log viewer でログイン失敗やユーザー・プラグインの変更を確認する日を決めておきます。
- ログインの守りも固める。 ログイン失敗が多い場合は、試行回数の制限や二段階認証を入れます。方法は ブルートフォース攻撃への対策 を参考にしてください。
まとめ
- WP Activity Log は、無料版でもログイン・投稿・ユーザー・プラグイン・設定などの変更を記録できます。通知・レポート・外部保存は有料版の機能です。
- 有効化後のウィザードで、ログの詳しさと保存期間(初期設定は3か月)を選びます。
- ログは「Log viewer」で確認し、イベント ID(1000 ログイン、1002・1003 ログイン失敗、4000 ユーザー作成など)を手がかりに調べます。
- 記録するイベントは「Enable/Disable Events」で選べます。
- ログは
wp_wsal_occurrencesテーブルにあり、WP-CLI のwp db queryで集計できます。