WordPress (Xサーバー)海外アクセス403を直す

管理画面でWAFやWordpressセキュリティをOFF化しても403なら、.htaccessに次の記述があるかもしれない。

海外からのアクセスだと403エラー、直してほしい、というご依頼

原因を推測しよう

動く前に、原因を推測しよう。

当たり前に表示されるのがWEBサイトです。
そんな仕組みが「海外からだと見えない」という状態になっているという事は、わざわざ

「海外から見ることを禁じている」

そう、設定で禁止しているのではないか?と推測します。
エラーを解決するにはその、禁止設定をOFF、あるいは解除すれば解決できるのではないでしょうか?

レンタルサーバーで、禁止系の設定ができるのは、

  • 管理画面のコントールパネル(セキュリティ関連)
  • .htaccessファイルによる、パーミッションの管理
  • サーバーのディレクトリやファイルのパーミッションの管理

であります。この辺りは経験から承知していたり、検索しても情報入手できると思います。

これらを1個づつ確認してゆき、「海外から」を「禁止」している個所を見つけ、それをOFF化。
OFF化後、期待通りに解決するか確認。

を行うことにします。

ホスティングはXサーバー。
管理画面にてセキュリティ・WAF設定を確認すると、もとよりOFFでした。

というわけで、管理画面はクリア。
次はサーバー本体に施されている.htaccessを調べます。

.htaccess を確認、一部抜粋です。

###X SUPPORT--------------------------###
<IfModule mod_geoip.c>
GeoIPEnable On
Order deny,allow
deny from all
SetEnvIf GEOIP_COUNTRY_CODE JP SupportCountry
SetEnvIf User-Agent ".*Google(bot)?(-Mobile)?" AllowSearchBot
SetEnvIf User-Agent "Y!J.*(crawler)?" AllowSearchBot
SetEnvIf User-Agent "(bing|msn)bot" AllowSearchBot
SetEnvIf User-Agent "facebookexternalhit" AllowSearchBot
SetEnvIf User-Agent "Twitterbot" AllowSearchBot
SetEnvIf User-Agent "Hatena" AllowSearchBot
SetEnvIf User-Agent "MicroAd"  AllowSearchBot
Allow from env=SupportCountry
Allow from env=AllowSearchBot
</IfModule>
###---------------------------------------###

このルールセットについて

mod_geoip モジュールを有効化、訪問者の国コードを取得可能に。
すべてのアクセスを最初に拒否しています。(Order deny,allow)
日本(JP)からのアクセスの場合、SupportCountry 環境変数をセットしています。
各種検索エンジンのクローラーからのアクセスの場合、AllowSearchBot 環境変数をセットしています。

SupportCountry または AllowSearchBot 変数がセットされている場合のみ、アクセスを許可しています。

つまり、日本からのアクセスと検索エンジンのクローラーからのアクセスのみを許可、それ以外の国からのアクセスはすべて拒否、という設定になっています。

これにより、日本ユーザーと検索エンジン向けのコンテンツを表示できるように制御していると考えられます。

対応方法

手っ取り早く

上記のブロックを消す

安心に

#deny from all

とコメントアウトする

確認は海外リージョンのサーバーから

最近は、簡単にプロキシなどの情報がない、海外からのアクセスを実現するのに、AWSやGCPの海外リージョンのインスタンスを使った。

海外リージョンのサーバーへSSH、対象のサイトへwget。
ちゃんと、403が確認できた、そして.httaccess修正後には正しくファイルを取得できることを確認できた。

まとめ

「海外から」を「禁止」しているのでは?という、最初の推測が大切です。

推測できれば、そのレンタルサーバーで「海外から」を「禁止」する方法を検索するなりAIに聞くなりして具体的な行動の精度を上げられます。

私は、同じような問題を何回も解決しているので「海外から」・「403」を確認した点で推測というか、過去のどのパターンだったかを思い出すような感じで思考しています。

経験があるので、推測が早く正確で、お客さんの問題を素早く解決できることにつながります。

初心者の方は、エラーと出会ったら、まず推測してみるのが良いと思います。