ロリポップで403エラーが出たとき、原因になり得る機能は2つあります。「海外アタックガード」と「WAF」です。名前が似ていないため混同されにくい一方で、どちらを疑うべきかの切り分けが知られていません。見ているものがまったく違います。
2つの機能は、見ている場所が違う
| 海外アタックガード | WAF | |
|---|---|---|
| 見るもの | どこから来たか(IPアドレスの国)とどこへ行くか(URLのパス) | 何を送ったか(リクエストの中身) |
| 対象 | 決められた特定のパスだけ | サイト全体 |
| 誤検知の起きかた | 海外から自分の管理画面に入れない | 記事やプラグイン設定が保存できない |
| 設定場所 | ユーザー専用ページ「海外アタックガード」 | ユーザー専用ページ「WAF設定」 |
順に見ていきます。
海外アタックガードは「特定のパス」だけを見る
この機能は、海外のIPアドレスからの不審なアクセスを制限するものです。ここで重要なのは、サイト全体を制限しているわけではないという点です。公式マニュアルでは、対象が特定パスに限られると明記されています。
| 種別 | 対象パス |
|---|---|
| WordPress関連 | /wp-admin/、/wp-login.php、/xmlrpc.php、/wp-comments-post.php |
| MovableType関連 | /mt.cgi、/mt-comments.cgi、/mt-xmlrpc.cgi |
| その他 | /admin.cgi、/bbs.cgi、/googlemap2 |
裏を返すと、これ以外は対象外です。トップページも、個別記事も、自分で置いたPHPファイルも、REST APIのエンドポイントも、海外からのアクセスで弾かれることはありません。
また、Googleをはじめとする主要な検索エンジンのクローラーは対象外とされています。この機能が有効でも、海外から巡回する検索エンジンのインデックスには影響しません。
設定場所と切り替え
ユーザー専用ページにログインし、「海外アタックガード」のメニューを開きます。「有効にする」「無効にする」のボタンで切り替えます。ドメインごとに個別に設定できます。
ロリポップは有効のままの運用を推奨しています。無効にする前に、次で述べる切り分けを済ませることです。
海外から管理画面に入れないとき
海外滞在中や、海外のIPアドレスを経由する接続(一部のVPN、モバイル回線、クラウド上のブラウザなど)から /wp-admin/ を開くと403になります。これはこの機能が想定どおりに働いた結果です。
対処は、一時的に無効にするか、日本のIPアドレスを経由して接続するかのどちらかです。作業が終わったら有効に戻します。
WAFは「送った中身」を見る
WAFは、リクエストの中身を検査して、攻撃と判断したパターンを遮断する機能です。ロリポップでは標準で備わっています。
問題は、攻撃ではないものが攻撃と判定される場合があることです。次のような場面で起こります。
- 記事本文にHTMLタグやプログラムのコードを書いて保存した
- プラグインやテーマの設定画面で保存した
- 問い合わせフォームから送信した
- ファイルマネージャーでPHPやCGIを編集した
症状は「保存を押すと403になる」「更新したはずが反映されない」といった形で出ます。書いた内容そのものが引っかかっているため、同じ操作を繰り返しても結果は変わりません。
ログを見れば、誤検知かどうかが分かる
WAF設定の画面には「ログ参照」のボタンがあります。検知された記録が表示されるため、自分の操作が弾かれたのかどうかを、推測ではなく記録で確かめられます。
ただしハイスピードプランとエンタープライズプランでは、ログ参照は利用できません。この2つのプランでは、無効化して再現するかどうかで切り分けることになります。
無効化するときの注意
WAF設定の画面で「無効にする」を選べば止められます。ただし、この状態はサイトの防御を外した状態です。
止めるのは、その操作をしている間だけにします。保存したい記事を保存する、設定を1つ変える、といった作業を終えたら、その場で有効に戻します。無効のまま忘れると、防御が外れたまま運用が続きます。
どちらが原因かの切り分け
次の順で見ていくと、機能の無効化を最小限にできます。
- 403になったURLを確認する。
/wp-admin/や/wp-login.phpなら、海外アタックガードの対象パスです。そうでなければ対象外なので、この機能は原因から外れます - 接続元が海外かどうかを確認する。 対象パスであっても、日本国内からの接続なら、この機能によるものではありません
- 操作の内容を確認する。 保存・送信・編集など「何かを送った」ときだけ403になるなら、WAFの誤検知が疑われます。ページを開いただけで403になる場合は、WAFとは考えにくくなります
- WAFのログを見る。 該当時刻の記録があれば確定します
誤診しやすい点
401と403は別のものです。認証情報の誤りは401で返ります。403は「認証は関係なく、この要求を通さない」という意味です。403を見てユーザー名やパスワードを疑い始めると、原因から遠ざかります。
この誤診は、外部からWordPressのREST APIを使うときにも起こります。サーバーの設定で /wp-json/ の形式が403になることがあり、これをアプリケーションパスワードの誤りと取り違えると、正しい認証情報を何度も発行し直すことになります。この件はFTPが使えない環境からサイトを更新する2つの方法で扱っています。
もう1つ。機能の名前から挙動を推測しないことです。「海外アタックガード」という名前からは、海外からのアクセスを全面的に遮断する機能のように読めます。実際の対象は上に挙げた特定パスだけです。公式マニュアルで対象範囲を確認してから、無効化を判断します。
確認していないこと
- WAFの設定変更が反映されるまでの時間は、公式マニュアルに記載を見つけられませんでした
- 海外アタックガードの対象パスは、公式マニュアル記載のものです。今後追加される可能性があります
- ハイスピードプラン・エンタープライズプランで、ログ参照の代わりになる確認手段があるかどうかは調べていません
