=== sHub-Log ===
Contributors: syntaxcloud
Tags: security, protection, ip blocking, attack log
Requires at least: 5.0
Tested up to: 7.0
Stable tag: 1.2.0
Requires PHP: 7.2
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

WordPressの不正ログイン試行、不審な404、不正リクエストを記録し、一定回数でIPをブロックするセキュリティプラグイン。

== Description ==

sHub-Logは、WordPressサイトのセキュリティを強化するためのプラグインです。
主な機能：

* ログイン試行の記録
* 設定ファイル探索、裏口探索、プラグイン脆弱性スキャン、管理画面ハッキング、スパムなどのカテゴリ別検知
* 不正なクエリパラメータ、大量リクエスト、REST API悪用試行のオプション検知
* 直近7日間のアタック統計サマリーと詳細ログ表示
* 直近24時間のアタック推移グラフ（1時間 / 2時間 / 3時間間隔）
* CSVエクスポートとAJAXカテゴリフィルタリング
* アタックログ保存期間（30日 / 90日 / 無期限）の選択
* WP-Cronによる古いアタックログの自動削除
* アタック統計・一覧の表示期間（7日 / 30日 / 全期間）の選択
* アタック急上昇時のメールアラートと通知クールダウン
* syn-c.jp 上のアラート定義・メールテンプレート取得に対応（取得失敗時は内蔵デフォルトで動作）
* 指定回数以上の失敗でIPアドレスをブロック
* ブロック時間の設定
* カスタムリダイレクトURLの設定
* 管理画面でのログ確認とIP管理
* 大量リクエストのしきい値・計測窓のカスタマイズ
* 攻撃特徴を伴うリクエストのみを計測する誤検知低減モード
* ログイン済みユーザー・正規クローラー（FCrDNS検証）のレート計測除外
* 不審な404多発（巡回スキャン）の検知
* IPホワイトリスト（検知・ブロック対象外）
* 信頼するプロキシ経由時の X-Forwarded-For / CF-Connecting-IP からの実IP取得
* URLの多重デコード・パス正規化による難読化リクエストの検知精度向上
* IPごとにリスクスコアを時間窓で累積し、記録・ブロックを判定するスコアリング（既定OFF）
* 配点・しきい値は管理画面で調整可能。syn-c.jp 上の署名付き配点定義の取得にも対応

== Installation ==

1. プラグインをアップロードまたはインストール
2. プラグインを有効化
3. 管理画面のsHub-Logメニューから設定を行う

== Frequently Asked Questions ==

= ブロックされたIPアドレスを解除するには？ =

管理画面のsHub-Logメニューから、ブロックされているIPアドレスを確認し、解除することができます。

= 外部通信は行われますか？ =

アタック急上昇メールアラートが有効な場合、本プラグインはアラート定義およびメールテンプレートを更新するため、syn-c.jp 上の設定ファイルを取得する場合があります。また、リスクスコアリングで「外部の配点定義を使用」を有効にした場合は、配点定義（score-config.json）を syn-c.jp から取得する場合があります。いずれも外部ファイルを取得できない場合、または署名検証に失敗した場合は、プラグイン内蔵のデフォルトまたは管理画面の設定値で動作します。これらの機能により、アタックログ、IPアドレス、ユーザー情報、サイト内容が syn-c.jp に送信されることはありません。

== Changelog ==

= 1.2.0 =
* Added per-IP risk scoring (disabled by default): weak signals accumulate a score within a time window, recording a "Risk Score Exceeded" log and blocking the IP when thresholds are crossed.
* Signal weights, accumulation window, and record/block thresholds are configurable from the admin screen.
* Added optional retrieval of a signed scoring definition (score-config.json) from syn-c.jp, with priority remote > admin settings > built-in defaults.
* IPごとのリスクスコアリングを追加（初期OFF）。弱い兆候を時間窓で累積し、しきい値超過で「スコアリング検知」を記録・IPブロック
* 配点・累積窓・記録/ブロックしきい値を管理画面で調整可能に
* syn-c.jp 上の署名付き配点定義（score-config.json）の取得に対応（優先順位：外部 > 管理画面 > 内蔵デフォルト）

= 1.1.9 =
* Added URL normalization (multi-decoding, path normalization, control-char stripping) before pattern matching to catch obfuscated requests.
* Added detection for suspicious 404 floods (scanner crawling) with configurable threshold and window.
* Made the high-volume request threshold and time window configurable, with a more robust fixed-window counter.
* Added an option to count only requests with attack signals toward rate limiting.
* Added exclusion of logged-in users and verified good bots (FCrDNS) from rate counting.
* Added an IP whitelist that is never detected or blocked.
* Added trusted-proxy support to read the real client IP from X-Forwarded-For / CF-Connecting-IP.
* URL正規化（多重デコード・パス正規化・制御文字除去）を照合前に追加し、難読化リクエストの検知精度を向上
* 不審な404多発（巡回スキャン）の検知をしきい値・計測窓つきで追加
* 大量リクエストのしきい値と計測窓を設定可能にし、固定ウィンドウ方式の堅牢なカウンタに変更
* 攻撃特徴を伴うリクエストのみをレート計測対象にするオプションを追加
* ログイン済みユーザーと正規クローラー（FCrDNS検証）をレート計測から除外
* 検知・ブロック対象外とするIPホワイトリストを追加
* 信頼するプロキシ経由時に X-Forwarded-For / CF-Connecting-IP から実IPを取得する機能を追加
* 大量リクエスト/404多発の初期値を緩和（90回/30回）。旧初期値(30/20)のサイトは一度だけ自動移行
* Relaxed default thresholds (90 for high-volume requests, 30 for 404 floods); sites still on the old defaults (30/20) are migrated once automatically.

= 1.1.8 =
* When the previous attack count window is zero, attack spike alert emails now show N/A and an explanatory note instead of a misleading multiplier.
* 前回集計が0件のとき、アタック急上昇メールアラートの増加倍率を N/A と注記で表示するよう修正

= 1.1.7 =
* Refined the attack spike alert email wording for more accurate IP protection messaging.
* アタック急上昇メールアラートの対象IPプロテクト表現をより正確な文言に調整

= 1.1.6 =
* Updated the built-in fallback email template for attack spike alerts.
* アタック急上昇メールアラートの内蔵フォールバック文面を更新

= 1.1.5 =
* WordPress 7.0 compatibility display update
* 管理画面のAttack LogとProtected IP Addressesの表示順を調整
* 管理画面の説明文、ボタン表記、初期設定、サマリー補足文を更新

= 1.1.4 =
* 直近24時間のアタック推移グラフを追加
* グラフの集計間隔（1時間 / 2時間 / 3時間）選択を追加
* アタック急上昇メールアラートと通知クールダウンを追加
* syn-c.jp 上のアラート定義・メールテンプレート取得とフォールバック処理を追加
* 外部通信に関する説明を管理画面とreadmeに追加

= 1.1.2 =
* 管理画面の期間ラベルで発生する可能性があるPHP 8系のフォーマットエラーを修正

= 1.1.1 =
* プラグイン名称をsHub-Logに変更
* 管理画面を英語/日本語併記に更新
* アタックログのCSVエクスポートを追加
* AJAXによるカテゴリ別アタックログフィルタリングを追加
* アタックログテーブルのdate/categoryインデックスを維持し、アップデート時にdbDeltaで反映

= 1.1.0 =
* プラグイン名称をsHub-SecureLogに変更
* カテゴリ別アタックログテーブルを追加
* 不審な404、不正クエリ、大量リクエスト、REST API悪用試行の検知を追加
* 直近7日間のアタック統計サマリーとアタックログ一覧を追加
* アタック検知とIPブロックの連動設定を追加
* アタックログ保存期間と表示期間の選択設定を追加
* WP-Cronによる古いアタックログの自動削除を追加

= 1.0.3 =
* セキュリティ強化：nonceの追加
* wp_enqueue_scriptの適切な使用
* データのサニタイズとエスケープの改善
* SQLクエリの安全性向上

= 1.0.2 =
* バグ修正：ログ削除機能の改善
* UI/UXの改善

= 1.0.1 =
* 初期バグ修正
* 管理画面の改善

= 1.0.0 =
* 初回リリース

== Upgrade Notice ==

= 1.2.0 =
IPごとのリスクスコアリング（既定OFF）を追加しました。配点・しきい値は管理画面で調整でき、syn-c.jp 上の署名付き配点定義の取得にも対応します。

= 1.1.9 =
レートリミットのしきい値・計測窓の設定化、不審な404多発検知、IPホワイトリスト、信頼プロキシ（X-Forwarded-For / CF-Connecting-IP）対応、URL正規化による検知精度向上を追加しました。

= 1.1.8 =
前回集計が0件のときに誤った増加倍率が表示されないよう、アタック急上昇メールアラートの表示を修正しました。

= 1.1.7 =
アタック急上昇メールアラートの対象IPプロテクト表現をより正確な文言に調整しました。

= 1.1.6 =
アタック急上昇メールアラートの内蔵フォールバック文面を更新しました。

= 1.1.5 =
WordPress 7.0対応表記と管理画面の表示・説明文を更新しました。

= 1.1.4 =
直近24時間のアタック推移グラフ、アタック急上昇メールアラート、外部アラート定義・メールテンプレート取得に対応しました。

= 1.1.2 =
管理画面の期間ラベル表示に関する互換性修正を含みます。

= 1.1.1 =
管理画面の名称変更、CSVエクスポート、AJAXカテゴリフィルタリング、DBインデックス反映を追加しました。

= 1.1.0 =
不審な404や不正リクエストのカテゴリ別検知、統計表示、保存期間設定、自動IPブロック連動を追加しました。

= 1.0.3 =
セキュリティアップデート：すべてのユーザーにアップデートを推奨します。