こんなこと思ったことありませんか?
・特定の国からのWebアクセスを拒否したい ・特定の国からのWebアクセスは、違うページを見せたい ・アクセスログに国情報がでればいいな ・どこでもどあがほしい ってこれは違うなw
そんなお悩み解決します!
概要を説明すると、ServersMan@VPS上で起動しているApacheに対して、「mod_geoip」というモジュールを追加してあげます。プラグインやアドオン、拡張機能という言葉の方が聴きなれている方も多いかも知れませんが、Apacheの場合、これを「モジュール」と呼びます。
以下の手順、yumコマンドを用いてmod_geoipをインストールし設定します。
1. 「mod_geoip」モジュールをインストールできるようにyumレポジトリ「epel」を追加します。
[root@dti-vps-srv31 ~]# rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
Retrieving http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
warning: /var/tmp/rpm-xfer.B1Zdek: Header V3 DSA signature: NOKEY, key ID 217521f6
Preparing... ########################################### [100%]
1:epel-release ########################################### [100%]
[root@dti-vps-srv31 ~]#
2. 新しいレポジトリを追加したので、yum repolistで確認します。
[root@dti-vps-srv31 ~]# yum repolist Loaded plugins: fastestmirror Repository 'vz-base' is missing name in configuration, using id Repository 'vz-updates' is missing name in configuration, using id Loading mirror speeds from cached hostfile * addons: rsync.atworks.co.jp * base: rsync.atworks.co.jp * epel: ftp.iij.ad.jp * extras: rsync.atworks.co.jp * updates: rsync.atworks.co.jp repo id repo name status addons CentOS-5 - Addons enabled: 0 base CentOS-5 - Base enabled: 2,683 epel Extra Packages for Enterprise Linux 5 - i386 enabled: 5,299 extras CentOS-5 - Extras enabled: 327 updates CentOS-5 - Updates enabled: 551 vz-base vz-base enabled: 5 vz-updates vz-updates enabled: 3 repolist: 8,868 [root@dti-vps-srv31 ~]#
3. 「mod_geoip」をインストールします。
[root@dti-vps-srv31 ~]# yum -y install mod_geoip Loaded plugins: fastestmirror Repository 'vz-base' is missing name in configuration, using id Repository 'vz-updates' is missing name in configuration, using id Loading mirror speeds from cached hostfile * addons: rsync.atworks.co.jp * base: rsync.atworks.co.jp * epel: ftp.iij.ad.jp * extras: rsync.atworks.co.jp * updates: rsync.atworks.co.jp Setting up Install Process ~ 省略 ~ Total download size: 726 k Downloading Packages: (1/2): mod_geoip-1.2.5-2.el5.i386.rpm | 16 kB 00:00 (2/2): GeoIP-1.4.7-0.1.20090931cvs.el5.i386.rpm | 710 kB 00:00 ----------------------------------------------------------------------------------------------------------------------------- Total 1.3 MB/s | 726 kB 00:00 warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID 217521f6 epel/gpgkey | 1.7 kB 00:00 Importing GPG key 0x217521F6 "Fedora EPEL <epel@fedoraproject.org>" from /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL Running rpm_check_debug Running Transaction Test Finished Transaction Test Transaction Test Succeeded Running Transaction Installing : GeoIP 1/2 Installing : mod_geoip 2/2 Installed: mod_geoip.i386 0:1.2.5-2.el5 Dependency Installed: GeoIP.i386 0:1.4.7-0.1.20090931cvs.el5 Complete! [root@dti-vps-srv31 ~]#
4. インストールされたパッケージをrpm(あーるぴーえむ)コマンドで確認します。
[root@dti-vps-srv31 ~]# rpm -qa | grep -i geoip GeoIP-1.4.7-0.1.20090931cvs.el5 mod_geoip-1.2.5-2.el5 [root@dti-vps-srv31 ~]#
ついでに該当パッケージによって作成されたファイルも見ておきましょう
[root@dti-vps-srv31 ~]# rpm -ql GeoIP /etc/GeoIP.conf /etc/GeoIP.conf.default /usr/bin/geoiplookup /usr/bin/geoiplookup6 /usr/bin/geoipupdate /usr/lib/libGeoIP.so.1 /usr/lib/libGeoIP.so.1.4.6 /usr/lib/libGeoIPUpdate.so.0 /usr/lib/libGeoIPUpdate.so.0.0.0 /usr/share/GeoIP /usr/share/GeoIP/GeoIP.dat /usr/share/doc/GeoIP-1.4.7 /usr/share/doc/GeoIP-1.4.7/AUTHORS /usr/share/doc/GeoIP-1.4.7/COPYING /usr/share/doc/GeoIP-1.4.7/ChangeLog /usr/share/doc/GeoIP-1.4.7/INSTALL /usr/share/doc/GeoIP-1.4.7/LICENSE.txt /usr/share/doc/GeoIP-1.4.7/README /usr/share/doc/GeoIP-1.4.7/TODO /usr/share/doc/GeoIP-1.4.7/fetch-geoipdata-city.pl /usr/share/doc/GeoIP-1.4.7/fetch-geoipdata.pl /usr/share/man/man1/geoiplookup.1.gz /usr/share/man/man1/geoiplookup6.1.gz /usr/share/man/man1/geoipupdate.1.gz [root@dti-vps-srv31 ~]# [root@dti-vps-srv31 ~]# rpm -ql mod_geoip /etc/httpd/conf.d/mod_geoip.conf /usr/lib/httpd/modules/mod_geoip.so /usr/share/doc/mod_geoip-1.2.5 /usr/share/doc/mod_geoip-1.2.5/Changes /usr/share/doc/mod_geoip-1.2.5/INSTALL /usr/share/doc/mod_geoip-1.2.5/README /usr/share/doc/mod_geoip-1.2.5/README.php [root@dti-vps-srv31 ~]#
5. 「/etc/httpd/conf.d/mod_geoip.conf」を確認します。
[root@dti-vps-srv31 ~]# cat /etc/httpd/conf.d/mod_geoip.conf
LoadModule geoip_module modules/mod_geoip.so
<IfModule mod_geoip.c>
GeoIPEnable On
GeoIPDBFile /usr/share/GeoIP/GeoIP.dat
</IfModule>
[root@dti-vps-srv31 ~]#
6. 参照した情報をメモリに保存してすばやく処理できるように設定を一部変更します。
[root@dti-vps-srv31 ~]# sed -i.ORG 's/dat/dat MemoryCache/g' /etc/httpd/conf.d/mod_geoip.conf
7.上記コマンドで変更作成されたバックアップファイルがあることと、変更後のmod_geoip.confを確認します。
[root@dti-vps-srv31 ~]# ls -la /etc/httpd/conf.d/mod_geoip.conf* -rw-r--r-- 1 root root 152 Jun 24 19:54 /etc/httpd/conf.d/mod_geoip.conf -rw-r--r-- 1 root root 140 Mar 8 2009 /etc/httpd/conf.d/mod_geoip.conf.ORG [root@dti-vps-srv31 ~]# [root@dti-vps-srv31 ~]# cat/etc/httpd/conf.d/mod_geoip.conf LoadModule geoip_module modules/mod_geoip.so <IfModule mod_geoip.c> GeoIPEnable On GeoIPDBFile /usr/share/GeoIP/GeoIP.dat MemoryCache </IfModule> [root@dti-vps-srv31 ~]#
8. ついでといってはなんですが、差分も確認しておきましょう。
[root@dti-vps-srv31 ~]# diff /etc/httpd/conf.d/mod_geoip.conf /etc/httpd/conf.d/mod_geoip.conf.ORG 5c5 < GeoIPDBFile /usr/share/GeoIP/GeoIP.dat MemoryCache --- > GeoIPDBFile /usr/share/GeoIP/GeoIP.dat [root@dti-vps-srv31 ~]#
9. Apacheを再起動し、設定を反映させます。
[root@dti-vps-srv31 ~]# service httpd restart Stopping httpd: [ OK ] Starting httpd: [ OK ] [root@dti-vps-srv31 ~]#
以上でモジュールのインストールが完了しました。
次のページで以下設定方法を説明します。
・特定の国からのWebアクセスを拒否する方法
・特定の国からのWebアクセスをリダイレクトする方法
・Webアクセスログに接続元国情報を出す方法
コメント