4/5。
ここ最近でいちばん驚かされたトラブルシューティングの話。
ほとんどのWordPressユーザには関係ないと思いますが、備忘録として記しておきます。
何があったかというと、保守で関わっているWordPressサイトのひとつで、あるとき「403 Forbidden」でほとんどのページが見られない!という謎のトラブルが発生。以前はそんな事なかったので、どうやら1-2週間以内に発生した問題のようです。
当初の手がかりはこのくらい:
・WordPressサイトがXサーバ上に構築されている。
・セキュリティ系プラグインはSiteGuardのみ。
・管理者はFTPや.htaccessの存在を知らず、触ったこともない。
・しかし最近、必要に迫られてXサーバの海外アクセス制限をOFFにした。
・サイト側は、初回アクセスで表示されるものの、ページ遷移するとほぼ403エラー。
・一応WP管理画面には入れる。しかし時々ログイン画面が403になって入れないことも。
Xサーバの海外アクセス制限
。。。といった断片的な手がかりしかなかったのですが、症状が出たと思われる時期も併せて考えてみると、どうも「Xサーバの海外アクセス制限をOFFにした」タイミングが怪しいんじゃないの?などと思ってました。
ちなみにこの機能は正式には「国外IPアクセス制限設定」と呼ばれており、Xサーバのデフォルト設定になっています。だから通常は、Xサーバ上のWordPress管理画面に海外から入ることはできません(詳細)。
今回のサイトは海外メンバーが編集する必要があり、そのためにわざわざ設定(ダッシュボードアクセス制限)をOFFにして国外からのWordPress利用を許可したわけです。
だけど、海外からのアクセスを許可したら国内で403エラーが出るというのは理屈に合わない。。。他に原因があるはずだけど、なんだろう?
WordPressで403エラーが出る原因は?
いちおう、正攻法でWordPressの403エラーの対処法について調べてみました。たくさん見つかったんですけど、一般的に言われている原因はおおむね「WPのプラグインが悪さをしている」「.htaccessの記述に誤りがある」「パミッション設定がおかしい」の3点でした。しかし、このサイトはアクセスに影響するプラグインはSiteGuard以外使ってないし、.htaccessとパミッション問題に至っては、その存在すら知らない管理者にいじれるわけがありません。
となると、外部から侵入をうけてサイトにイタズラされた可能性?しかし、いちおう対策はしてあるので海外からの攻撃に対して全く無防備というわけではない…。それに、今回403エラーの出方にはムラがあって、初回アクセス時は正常に表示されることが多く、別ページに行こうとした時に403エラーの嵐、という不安定な挙動を示しています。一瞬ページ表示された後403エラーになることもあり、症状に一貫性がなくて訳がわかりません。(そもそも外部から荒らされたなら100%ダメになるほうが筋は通る)
。。。ということは、やっぱり今回の403エラーは純粋にサーバ側の設定の問題っぽいなぁ。
XサーバのWAFとGoogleタグマネージャの相性
さらに403エラーについて調べていくと、時々「WAF」というキーワードが出て来ることに気づきました。どうも、WAFの設定が悪さをするときも403エラーが出るらしい。そんな洒落たもん絶対使ってないと思うけど、一応調べとくか。。。
WAF(Web Application Firewall)というのはWebアプリケーションを外部攻撃から守るセキュリティ対策で、もとは非常に高額なサービスです。それが近年、レンタルサーバでも手軽に利用できるようになってきたのですが、無料で使えるWAFは細かい設定がほぼできなくて「ONかOFFか」くらいの選択肢しかない。そんな中、XサーバのWAF設定はまだ選択の余地があって、「XSS対策、SQL対策、ファイル対策…」などなど、6種類くらいのスイッチがついています(詳細)。さすがXサーバです。
そこで好奇心から「XサーバのWAFで403エラーが出た事例」がないか調べてみたところ、偶然この記事を見つけました:
エックスサーバーのWAFで403エラー 原因はGoogleタグマネージャ
目が釘付けになったのはこちらの記述↓
「403エラーになるタイミングですが、最初にアクセスしたページは表示され、別のページに移動すると403エラーとなり以降ページが表示されなくなります。」
「…403エラーになったのはGoogleタグマネージャーに「Google アナリティクス: ユニバーサル アナリティクス」のタグを設置した場合だけで…(以下略)」
エックスサーバーのWAFで403エラー 原因はGoogleタグマネージャ
「…エックスサーバーのサポートに問い合わせてみたら、Googleタグマネージャーを使うならWAFの「SQL対策」をOFFにするしかないという回答で…(以下略)」
ふおおおおーーー!なんじゃこりゃーーー!症状が瓜二つやないけーーー!Σ(゚Д゚lll)
なにその「WAF+タグマネージャ+Analytics」で403エラー出るって話。初めて聞いた!
しかも、WAFの「SQL対策」だけスイッチOFFにすれば治るって、どういうこと!?
そう、まさかそんな事が403エラーの原因になるとは思わないから全く考慮してなかったんですけど、当該サイトにはバリバリGoogleタグマネージャ使われてるし、Analyticsも入れてあるんですよ。。。
とはいえ、さすがにWAFを導入したという話は聞いたことがないので、まだまだ断定はできません。
WAFの「SQL対策」をOFFにして1時間待ってみた
①まさかのWAFがONだった
そこで念のため、管理者にWAFの設定を見せてもらったところ、見事に6つのスイッチが全部ONになってました!しかし本人はWAFなど設定した記憶がないらしく、非常に驚いていたという。(いつからONになってたかは分からないけど、前任者が設定したままになってたとかはよくある話…)
②Googleタグマネージャ
あともうひとつの新事実、管理者がGoogleタグマネージャを追加したのはつい最近のことだと判明。これは403エラーが出始めた時期とも一致しています。
てことは、これがビンゴの可能性高いな!
上記の対処法にあったとおり、WAFの6つのスイッチのうち「SQL対策」のスイッチをOFFにすれば、403エラーは解消されるというので早速試してみました。しかし、すぐに結果出るわけではありません。XサーバのWAFのスイッチは、反映されるまでに1時間程度かかるからです。(「SQL対策」のスイッチを切ると、「反映待ち」という表示に変わります)
そのまま1時間待機→「反映待ち」が消えたタイミングを見計らって、サイトにアクセス。
すると。。。
。。。正常に表示されたああああ〜〜〜〜ー!!!(TДT)
403エラーの嵐が嘘のように消え去りました!よかったあああああ!
まさかそんな事が原因とは思わない
というわけで、なんとか無事に解決しました。
今回はさすがにXサーバに問合せないとダメだろうなと諦めていたので本当に助かりました。。。
そもそも403エラーはアクセス権がないというエラーなので、だったら「海外アクセス制限」を解除した事が何らかの引き金になってるんじゃないの?と短絡的に考えていたけど、そんな単純な問題ではなかった!という結末におののいております。
百歩譲ってWAFを疑うまではできたとしても、Googleタグマネージャ、しかもAnalyticsみたいな有名ツールがWAFに干渉するなんて思うでしょうか?まして6つあるスイッチのうちの「SQL対策」が原因だなんて?しかもON/OFFの結果は1時間待たないと分からないから気軽に試せるわけではないし。。。
そう考えると、一般ユーザにはけっこうハードルの高いトラブルシューティングであると感じました。
原因を突き止めて対処法を公開してくださった皆様には本当に感謝です。
まとめ
今回の403エラーは、以下の条件がすべて揃わない限り発生しません。
・Xサーバ上に構築されたWordPressサイト
・Googleタグマネージャを使っている
・かつ、GoogleタグマネージャにAnalyticsタグが仕込まれている
・WAF設定がONになっている
・かつ、WAFの「SQL対策」がONになっている
つまり、そこそこマニアックな不具合です。
だけど、運悪くこの条件を満たしてしまうサイトもあるだろうと思います。
謎の403エラーでお困りの方の一助になれば幸いです。
にほんブログ村「Webサイト構築」ランキング参加中です。ポチッと応援お願いします♪
その節はありがとうございました。
自分一人で解決することは絶対に不可能でした。
大変助かりました。
なおチカさんにお願いして良かったです。
また問題起きたら、相談させてください。
引き続きよろしくお願いします。
柏さん、ありがとうございます。
私もネット情報なければ一人では絶対解決できなかったと思います。😅
日頃からサイトの設定情報をシェアしていただいていたことも大きいです。感謝!
今後ともご贔屓のほど、何卒よろしくお願い申し上げます〜