2009.08.10
LinuxTIPS – ApacheにGeoIP(mod_geoip)導入メモ
IPアドレスから、
どの国、どの都市かまたどのISPかを判別する仕組みの1つにGeoIPというのがある。
ぱっと見てみた感じ、
国レベルでは、ライト版ライセンス(無償)で使用可能
都市、ISPだと提供元のmaxmindに申し込む(有料?)必要がありそうだ。
(企業で使用する場合は、企業ライセンスが必要?)
とりあえず簡単に導入してみる。
1. GeoIPとmod_geoipをインストール
# yum install mod_geoip.i386
- datファイル
/usr/share/GeoIP/GeoIP.dat
このファイルに情報がはいってる?
ちなみに、下記のGeoLiteCountryサイトからだと無償でdatファイルを取得できる。
http://www.maxmind.com/app/geolitecountry
2. 設定ファイル
/etc/GeoIP.conf
都市レベルで特定したい場合は、maxmindに申し込む必要がある。
そのライセンスキーとかを、うえの設定ファイルに書き込む。
国レベルは、設定ファイルはこのままでOK。
geoipupdateコマンドで
datファイルを更新するのにも申し込む必要がある。
3. geoiplookupコマンドで検索してみる
# geoiplookup yahoo.com
GeoIP Country Edition: US, United States
→ yahoo.comはUS。
# geoiplookup mixi.jp
GeoIP Country Edition: JP, Japan
→ mixi.jpをJP
# geoiplookup 66.249.71.177
GeoIP Country Edition: US, United States
→ 逆引きも検索可能。上はGoogle.com。
4. Apache設定
4-1. datファイルをメモリキャッシュさせる
# vi /etc/httpd/conf.d/mod_geoip.conf
GeoIPDBFile /usr/share/GeoIP/GeoIP.dat
↓
GeoIPDBFile /usr/share/GeoIP/GeoIP.dat MemoryCache
MemoryCacheのほかに
MMapCache
IndexCache
CheckCache
がある。
4-2. 中国、ロシアからのアクセスを拒否する
# vi /etc/httpd/conf.d/mod_geoip.conf
例えば、
Order allow,deny
SetEnvIf GEOIP_COUNTRY_CODE CN BlockCountry
SetEnvIf GEOIP_COUNTRY_CODE RU BlockCountry
Deny from env=BlockCountry
Allow from all
4-3. 確認する
1. COUNTORY_CODEをJPにしてみる
2. BlockCountryに設定した国のOpenProxyを探してブラウザーで設定してアクセスしてみる。
っということで、
BLOGなどのコメントスパムなどで海外からのをブロックしたいけど、
IPアドレスで設定するのは面倒臭い!ってときにGeoIPは便利です。
Apacheの設定だけじゃなくて、もっと幅広くしようできます。
Postfixと連携されてSPAMをブロックしたり。
詳しいことは、
/usr/share/doc/mod_geoip-1.2.5/README
参照で!
参考URL: サイトアクセス者の位置情報を取得するGeoIP – SourceForge.JP Magazine
Apache辞典 (DESKTOP REFERENCE)