こんにちは。コーダーのchaです。
最近ほとんど更新していませんでしたが、先日、自社運営のサイトに、海外からアクセスしようとするとdenyされるということを言われて、原因を探ることになりました。
海外からアクセスできないと言われたそのサイトは、minibird(ミニバード)というサーバーを使っていました。
このミニバードは、その昔、ネットオウル社が格安でMySQLが5つも使えるのに超格安でサーバーが使えるというの打ち出していた時に、契約してずっと残っていたのですが、既にサービスが一新して、スターサーバー https://www.star.ne.jp/ というものになっているため、ミニバードはもう新規での受付はやっていないんですね。
なので、ググっても情報がほとんど出てこない。
出てくるのは、海外からだとワードプレス(WordPress)の管理画面にアクセスできないという情報です。
これは私もよく知っていて、海外からのクラッカーたちが管理画面にアクセスしてきて、大量にランダムでユーザー名とパスワードを試行して突破するみたいな手法がよくあるため、ワードプレス(WordPress)のログイン画面には海外からアクセスできないように設定しておくのは日本のサーバーではほぼデフォルトとなっています。
しかし、今回は、管理画面云々ではなく、海外からだとワードプレスで作っているホームページを見ることすらできないというような現象なのです。
おかしいなぁ、今までこんなことはなかったのですが、原因を冷静になって考えました。
以前は海外からアクセスできていたのは確実で(少なくとも2018年の5月くらいまでは)そのあと突然海外からはサイトを見られなくなった。ということは契約しているサーバーの設定の問題か?ということで、ミニバードの設定画面を見てみるも、アクセス拒否などのIPに入れられているわけでもなく、どこを見ても該当しそうな箇所はやっぱり何もない。
WordPressセキュリティの項目も、海外からの管理画面へのアクセスは拒否できるものの、海外からの閲覧そのものを拒否はしていない。
くまなく見ましたが、ミニバードの設定画面では特に何もないんですよね。
となると、何か最近入れたプラグインが原因でこうなっているのかなと思い、サイトの管理画面に入って、プラグインなどをいちいち見るも該当するものはない。
あ、そういえばJetpackにセキュリティの項目があったけど、その設定で海外からのアクセスをはじいている?と疑うものの特に原因は見当たらず。
おかしいなぁ。
それで、同じサーバーに置いているその他のサイトに海外からアクセスできるか実験。
→普通にできる。
やっぱりこのサイトだけの問題かよ。
となると原因はそのサイトのプラグインか、あるいは、あ! .htaccess ファイルに何か書き足されているのかも?
正解でした。
.htaccess に下記の内容が追加されていました。
###【MINIBIRD SUPPORT】————————–###
GeoIPEnable On
Order deny,allow
deny from all
SetEnvIf GEOIP_COUNTRY_CODE JP AllowCountry2
SetEnvIf User-Agent “Googlebot” AllowSearchBot
SetEnvIf User-Agent “Mediapartners-Google” AllowSearchBot
SetEnvIf User-Agent “Slurp” AllowSearchBot
SetEnvIf User-Agent “Y!J” AllowSearchBot
SetEnvIf User-Agent “bingbot” AllowSearchBot
SetEnvIf User-Agent “msnbot” AllowSearchBot
SetEnvIf User-Agent “facebookexternalhit” AllowSearchBot
SetEnvIf User-Agent “Twitterbot” AllowSearchBot
SetEnvIf User-Agent “Hatena” AllowSearchBot
SetEnvIf User-Agent “MicroAd” AllowSearchBot
Allow from env=AllowCountry2
Allow from env=AllowSearchBot
###———————————————###
CentOSに mod_geoip.cがインストールされていて、GeoIPEnableがOnになっているではないですか!
そして GEOIP_COUNTRY_CODE JP AllowCountry2 と書かれているので、日本だけのアクセスを可能にしているということで、これじゃぁ海外からアクセスできません。
それで、プログラマーさんに .htaccess のファイルを直接書き換えても大丈夫か尋ねてみたら、大丈夫だとは思うけど、何かの設定で海外からのアクセスを拒否しているなら、直接書き換えずに、設定そのものを変えたほうがいいはずだけど。と言われました。
まぁそうですよね。
で、もう一度サーバー側の設定をくまなく見ました。
やはりないんですよね。
それで、仕方ないということで、 GeoIPEnable On を GeoIPEnable Off にしました。
そして、VPNでシンガポールからの接続を作って、そのサイトにアクセスを試みた結果。
・・・・
アクセスdeny!!
まだ閲覧できません。
仕方ないので .htaccess ファイルから下記の文言をすべてカットしてみました。
###【MINIBIRD SUPPORT】————————–###
GeoIPEnable On
Order deny,allow
deny from all
SetEnvIf GEOIP_COUNTRY_CODE JP AllowCountry2
SetEnvIf User-Agent “Googlebot” AllowSearchBot
SetEnvIf User-Agent “Mediapartners-Google” AllowSearchBot
SetEnvIf User-Agent “Slurp” AllowSearchBot
SetEnvIf User-Agent “Y!J” AllowSearchBot
SetEnvIf User-Agent “bingbot” AllowSearchBot
SetEnvIf User-Agent “msnbot” AllowSearchBot
SetEnvIf User-Agent “facebookexternalhit” AllowSearchBot
SetEnvIf User-Agent “Twitterbot” AllowSearchBot
SetEnvIf User-Agent “Hatena” AllowSearchBot
SetEnvIf User-Agent “MicroAd” AllowSearchBot
Allow from env=AllowCountry2
Allow from env=AllowSearchBot
###———————————————###
シンガポールからサイトにアクセス。。。
ドキドキ
見れました~!!
ということは、ワードプレスでサイト作ったかどうかは関係ないはずですね。htmlでも.htaccessファイルに書き込めば海外からのアクセスを拒否できるので。
結論
ミニバードで海外からワードプレスサイトにアクセスできなくなった時の解決法として.htaccess ファイルを疑ってみようという話でした。
それではまた。