GeoIPモジュール
国外からのアクセス拒否について




海外からのアクセスをブロックしたい!!
掲示板SPAM野郎を抹殺したい!!

という希望はあっても実際に.htaccessでボットのIPアドレスだけ拒否したり、必要なIPアドレスやホスト名のみ穴をあけていくのは面倒なもの。

「中国からのアクセスは全部拒否したいのに」
「日本国内からのアクセスだけに限定したい」

といったご要望に簡単に対応できるGeoIPモジュールを追加いたしました。

GeoIPについて

GeoIPはIPアドレスから位置情報を取得できるモジュールです。
これは、IPアドレスを取得している企業やISPの所在地をデータベース化したもので、世界中のIPアドレスとその位置情報が収録されています。

パンドラで実装しているデータベースは国籍の割り出しだけの簡易的なものですが、本格的なGeoIPデータベースはIPアドレスから経度・緯度まで割り出せる優れものです。

これで今日から掲示板やメールフォームに投げられるうざいSPAMや、海外からのヘンなクローラーのアクセスとはおさらば。
効果は絶大ですので、掲示板・ブログSPAMや海外からの意味不明なボットの巡回に頭を抱えている方は一度下記のサンプルをコピペして使ってみてください。

GeoIPによるアクセス制限

GeoIPは .htaccess に記述することができます。
「.htaccess」のファイル名で下記のサンプルのコピペしたものをアップロードしてみてください。


※サンプル
・日本国内からのアクセスのみを許可
・海外からはgoogle、yahoo、msnのボットのみ許可
<IfModule mod_geoip.c>
GeoIPEnable On
    Order deny,allow
    deny from all
        SetEnvIf GEOIP_COUNTRY_CODE JP AllowCountry

        Allow from .googlebot.com
        Allow from .yahoo.net
        Allow from .msn.com

Allow from env=AllowCountry </IfModule>
それぞれの意味を↓で説明します。
# GeoIPモジュールの開始
<IfModule mod_geoip.c>
# GeoIPモジュール作動
GeoIPEnable On
    # アクセスをすべて拒否・許可の順で記述
    Order deny,allow
    # まずアクセスをすべて拒否
    deny from all
        # AllowCountryに日本のIPアドレスを渡す
        SetEnvIf GEOIP_COUNTRY_CODE JP AllowCountry
        # 海外からでもgoogleボットは許可
        Allow from .googlebot.com
        # 海外からでもyahooは許可
        Allow from .yahoo.net
        # 海外からでもMSNは許可
        Allow from .msn.com
        # AllowCountry(つまり日本国内)のみ接続を許可
        Allow from env=AllowCountry
# GeoIPモジュールの記述終わり
</IfModule>

※サンプル
・中国からのアクセスは問答無用で拒否
<IfModule mod_geoip.c>
GeoIPEnable On
	Order allow,deny
	Allow from all
	SetEnvIf GEOIP_COUNTRY_CODE CN DenyCountry
	Deny from env=DenyCountry
</IfModule>

※サンプル

・日本国内とアメリカからのアクセスのみを許可
※GoogleやMSNなど、主な検索サイトのクローラーはアメリカからのアクセスです。検索サイトの登録を維持したまま海外からのアクセスを拒否する場合は、US・JPのみの許可が有効な設定です。

<IfModule mod_geoip.c>
GeoIPEnable On
    Order deny,allow
    deny from all
        SetEnvIf GEOIP_COUNTRY_CODE JP AllowCountry
        SetEnvIf GEOIP_COUNTRY_CODE US AllowCountry
Allow from env=AllowCountry </IfModule>
  1. ニーズや要望があればPHPからGeoIPを利用できるモジュールも実装いたします。
  2. GeoIPのデータベースは日夜更新されていますが、位置情報を保証するものではありません。100%の精度ではないことを了承ください。