Wordfenceで[Background Request Blocked]警告が多発。その対策

Wordfenceで[Background Request Blocked]警告が何度も表示される WordPress

WordPressで記事を執筆中にいきなり投稿画面が暗転して「Background Request Blocked」というWordfence Securityの警告が何度も繰り返し表示される。

Wordfenceの「Background Request Blocked」警告

ホワイトリストに登録するか聞いてくるが、とりあえずよくわからないので[Dismiss](ホワイトリストに登録しない)というボタンをクリックしてみるが、しばらくすると再度画面が暗転してまた警告画面が表示され、今度は「下書きとして保存」のボタンが無効化されて執筆中の記事の保存すら出来なくなっている。

「下書きとして保存」のボタンが無効化

この状況はマズイので調査して対策する。

警告内容の調査

警告文の内容

表示される警告の内容は以下の通りです。

Background Request Blocked
Wordfence Firewall blocked a background request to WordPress for the URL /wp-admin/admin-ajax.php. If this occurred as a result of an intentional action, you may consider whitelisting the request to allow it in the future.
[Whitelist this action] [Dismiss]
【※日本語訳】
バックグラウンド要求がブロックされました。
Wordfence FirewallはURL /wp-admin/admin-ajax.phpに対するWordPressへのバックグラウンド要求をブロックしました。意図的な行動の結果としてこれが発生した場合、あなたは将来それを許可する要求をホワイトリストに入れることを検討するかもしれません。
[ホワイトリストに登録する] [登録するしない]

この警告文をもとに、WordfenceのヘルプやQ&A等を見て調査してみました。

仕様と対策方法がわかったので解説します。

この警告の仕様

この警告表示とブロックは、admin-ajax.phpスクリプトへのバックグラウンドリクエストを悪用した特定の種類の攻撃を防ぐために発生します。

しかし一部のプラグインやテーマは、正当なバックグラウンド処理を実行する際にadmin-ajax.phpスクリプトにアクセスする場合があり、その際も警告表示が発生してブロックされる可能性があるそうです。

【※備考】admin-ajax.phpとは?
JavaScriptやjQueryなどからのAjaxのリクエストを受け取るためにWordPressに標準装備されているphpスクリプトです。
admin-ajax.phpによりAjaxがWordPressに登録されている関数を簡単に実行することが出来るようになり、プラグインやテーマなどで利用されていますが、不正な攻撃に利用されることもあります。

対策方法

Wordfenceのファイヤーウォールが正当なアクセスを攻撃だと誤検知してしまうこのような現象を防止するために、Wordfenceには正当なアクセスか攻撃かを学習する「Learning Mode(学習モード)」という機能があり、この学習機能を有効化することにより誤検知を防ぐことができます。

というわけでLearning Mode(学習モード)を有効化して対策しましょう。

Learning Mode(学習モード)の有効化手順

はじめに、既に「下書きとして保存」のボタンが無効化されて執筆中の記事の保存が出来なくなっている場合は、とりあえず投稿画面を「テキスト」タブに変更し、全ての内容をコピーしてテキストファイルなどに張り付けて保存しておきましょう。

執筆中の記事を「テキスト」タブでコピーする

では対策を始めていきます。

WordPressのメニューから「Wordfence」→「Firewall」をクリックします。

「Wordfence」から「Firewall」をクリック

Firewallタブの「Manage Firewall」をクリックします。

「Manage Firewall」をクリック

Firewall Options画面が開きますので、「Web Application Firewall Status」を「Learning Mode」に変更します。

「Web Application Firewall Status」を「Learning Mode」に変更

「Automatically enable on」にチェックを入れます。すると一週間後の日付が自動的に入力されます。
※これはLearning Modeで7日間だけ学習を行い、その後は通常のファイヤーウォールが有効になるという設定です。

「Automatically enable on」にチェックを入れる

最後に右上の「Save changes」をクリックして設定を保存します。

「Save changes」をクリックして設定を保存

これで「Learning Mode(学習モード)」の有効化が完了しました。

これより7日間の学習を行い、その後は学習した内容をもとにファイヤーウォール機能のブロックが発動します。

投稿画面に戻って先ほどコピーした投稿内容を「テキスト」タブ内にペーストして記事を復元して投稿執筆作業を再開しましょう。

今後新しいプラグインをインストールしたりテーマを変更した後に、また攻撃の誤検知が再発する場合は再度「Learning Mode(学習モード)」を実行してください。

以上で解決です。

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