WordPressカスタマイズ“何かうまくいかなかったようです”はWAF・ファイアウォールを疑え

最新の更新日
Feb 17, 2022 10:13 PM
Target Keywords
vol.

WordPress管理画面 > カスタマイズで設定を保存し公開しようとしたところ、下記のエラーメッセージが表示され設定を保存することができませんでした。

何かうまくいかなかったようです。時間を置いてもう一度お試しください。

追加CSSを追加しスタイルを当てたかったのですが、WordPressカスタマイズ画面からのカスタマイズ内容の保存先はCSSファイル等ではなく、データベースにそのまま保存される形になります。

そのため、なんとかしてカスタマイズ画面から保存、公開させる必要がありました。

以前にはこのようなエラーはなく、問題なくカスタマイズを保存公開できていたので、ファイルやフォルダのパーミッション権限等ではなさそう。

調べてみると、基本的には下記3つが原因であることが多いようです。

  1. サーバーのWAF設定
  2. ファイアウォールプラグイン
  3. プラグイン不具合による干渉

上記3つの原因可能性のうち、「3. プラグイン不具合による干渉」は、プラグイン同士のバージョンが噛み合っていなかったり、ワードプレス本体とプラグインとのあいだで不具合が生じるために発生する現象のよう。

このプラグイン不具合による干渉を解決するためには、「どのプラグインが干渉の原因となっているか」と言うことを突き止める必要があります。 最近にアップデートをしたり、プラグイン自体をカスタマイズした場合にはそのプラグインが原因となっている可能性があります。

もしどのプラグインが干渉の原因になっているか心当たりがない場合には、一つ一つプラグインを停止するか、プラグインファイル名をリネームして原因のプラグインを突き止めていく必要が生じます。

この工程は非常に煩雑かつ時間がかかるため、もしプラグインに心当たりがない場合、その他のWAF・ファイアウォールプラグイン等に関して調査を済ませてから最後にプラグインについて検討するのが良いでしょう。

今回はそれ以外のWAF, ファイアウォール設定・ファイアウォールプラグインについて、解決した手段と併せて共有します。

image

エックスサーバーのWAF設定を一時的にOFFにして調査

WordPressカスタマイズ画面で「何かうまくいかなかったようです。時間を置いてもう一度お試しください。」と表示される原因は、多くの場合はサーバー上のWAFが変更をブロックしていることが原因のようです。

サーバーによっては自分のIPをホワイトリスト登録できると思いますが、エックスサーバーの場合にはWAF設定は画一的に適用となるため、一旦、障害となっているWAF設定自体をOFFにする必要があります。

念のため、エラーログを確認しておく

本当にWAFで弾かれているのか?その他のエラーが出力されていないか?という点を確認するため、エックスサーバーのエラーログを確認しておきましょう。

エックスサーバーのエラーログは当日分のみを確認することができます。毎日AM3:00に消去されてしまうようです。

エックスサーバー > サーバーパネル > エラーログ からエラーログファイルをDLできます。

image

ダウンロードしたファイルをtail, lessコマンドで中身を確認してみましょう。(エディタでも確認可)

安易にWAFを全てOFFにしてしまって良いのか?Webセキュリティリスク

記事を調べていると、皆さん割と気軽に「WAFを全てOFFにしましょう!」と言っていますが、一定のアクセス数があったり、WordPress本体およびプラグインが全て最新ではない状態等、万全の状態でない場合にWAFをすべてOFFにしてしまうのは怖いなと感じます。

短時間で一時的にWAFをOFFにする分には(おそらく)問題はないとは思いますが、それでもその間にバックドアを仕掛けられないとも限りません。リスクは最小限にとどめるのがセキュリティの原則と思います。

WAFでOFFにする項目は限定的にする。全てをOFFとしない

このようにWAFをOFFにする行為にはリスクがあります。簡単なリスク低減策としてOFFにするWAF機能項目をエラーに関連しそうなものにだけに絞り込む、ということがオススメです。

エックスサーバーでエラー解消のため一時的にOFFにするWAF項目

エックスサーバーのWAF設定は下記画面の箇所から設定可能。

セキュリティ > WAF設定 > ドメイン名を選択 > WAF設定項目

image

下画像のように、6項目の中から設定項目につきオンオフを設定できます。

image

今回のWordPressカスタマイズ画面 “何かうまくいかなかったようです。時間を置いてもう一度お試しください。”のエラーメッセージにおいては、エックスサーバーのWAF設定では下記をOFFとすると良さそうです。

  • XSS対策
  • SQL対策
  • PHP対策

上記3つの項目をOFFに。それ以外はONにしたままでも今回のエラー動作に影響はないでしょう。

なお、WAFは設定変更を行ってから反映されるまでに時間がかかります。10分から30分程度ということが多いようです。

サーバーパネル上WAF設定「反映待ち」の表示が消えるまでには3.4時間ほどかかりました。しかし実際には「反映待ち」の表示が消えずとも設定が反映されています。

私の場合でも30分ほど経過した頃から、WordPressカスタマイズ画面において「何かうまくいかなかったようです。時間を置いてもう一度お試しください。」のエラーがなくなり、無事に変更を保存・公開させることができるようになりました。

エラーを解消できたら、WAF設定をONに戻すことを忘れないように。

CDNを利用している場合にはCDNファイアウォール設定でホワイトリスト登録を

image

CDNを利用している場合には、CDNのファイアウォール設定も同時に見直しましょう。

CloudFlareでのファイアウォール設定ホワイトリスト登録の方法

CloudFlareは、レンタルサーバーWAFの画一的なブロックとは異なり、WAFにもホワイトリストを登録することができます。

ファイアウォール設定自体をOn/OFFしたりチューニングするのではなく、特定のIPアドレス等の条件によってファイヤーウォール通貨を許可する、というホワイトリスト設定が可能。

このホワイトリスト登録については、特定のクローラを許可する等の使い方でも活躍します。

そこで、今回は自分のグローバルIPをホワイトリストに登録し、WordPressカスタマイズ設定の公開時に自分の操作によってCloudFlareでブロックされないように設定します。

CloudFlareにログインし、対象のドメインを選択。続く画面で「ファイアウォール」を選択。

image

ファイアウォール > ファイアウォールルール > ファイアウォールルールを作成

image

次画面において、「受信リクエストが一致する場合…」の設定内容は下記にて設定。

フィールド: 送信元のIPアドレス

オペレーター: 等しい

「以下を実行…」のアクション選択においては「許可」を選択。

完了したら「デプロイ」で展開します。

image

これで自身の操作においてCloudFlareのファイヤーウォールにブロックされる事はなくなりました。

なお、CloudFlareではファイアウォールのホワイトリストにIPアドレスを一括登録させることができます。

キャッシュを一時的にバイパスする「開発モード」をONにする

WordPressカスタマイズを加える際、Cloudflareのキャッシュに保存されたデータが開発の妨げになることがあるので、キャッシュを一時的にバイパスさせる「開発モード」をONにさせておきましょう。

該当ドメイン > 概要の画面右側「開発モード」にチェックを入れます。

image

チェックを入れると、「開発モードがアクティブです」というメッセージが表示されます。開発モードは3時間後に自動的にOFFになるようです。

ファイアウォール機能のあるWordPressセキュリティプラグインによる可能性

さて、ここまでオリジンサーバーでのWAF設定、CDNでのファイアウォール設定をみてきました。

上記はどちらもサーバー側でのファイアウォールですが、WordPressプラグインにおいても同様にファイアウォール設定をもつセキュリティプラグインが存在します。

たとえば下記。

これらにおいても、その提供するファイアウォール設定において自身のIPアドレスをホワイトリスト登録しておくと良いでしょう。

上記のうち、私が利用しているWordfenceとBBQ Proについては

の記事でホワイトリスト登録する方法を記載しています。