ATOM鯖-15:国別の接続制限!GeoIPを入れてみるとしよう!

うざい国からのアクセスを全て遮断 2国目
http://pc11.2ch.net/test/read.cgi/mysv/1201798057/
なんてスレッドが立つくらい海外からのアタックは国内の比じゃありませんw
今まで個別に調べ上げたものをDenyに登録という地道な作業をしていたわけですが、刻々と変化する地域IP情報をまとめてくれるというありがたいサイト。
無料リスト更新は月一回で月始め。三日か四日くらい。
有料はもっと頻繁に更新があるらしい。
GeoIPの利用方法
http://flatray.com/geoip/
ぐーぐる先生で最初に出てきたところで設置までの情報がすべてある感じ。
利用するのは MaxMind 社が配布している GeoLite Country。
Apacheで利用するには MaxMind社から提供mod_geoipというのがあるらしい。
#yum install -y mod_geoipGeoIPとmod_geoipがインストールされる。
mod_geoip-1.2.2-1.fc8.i386.rpm
GeoIP-1.4.4-2.fc8.i386.rpm
/etc/httpd/conf.d/mod_geoip.confにmod_geoipの読み込み設定があるので一応確認。
情報ファイルは下記に格納されます。
/usr/share/GeoIP/GeoIP.dat
デフォルトだと2008/4月のファイルがインストールされました。
9月ということで上記サイトにあるスクリプトを利用させていただきます。
Fedora8でyumインストールした場合はそのまま使えます。
GeoIPupdate.shなど適当に名前をつけて保存。実行権を与えて実行。
2008/9/03のファイルに更新されました。
cronで月一実行。時差などを考えて5日以降に(^^)v
Update用シェル(“φ(・_.) メモッ!コピペ)#! /bin/sh
TMPDIR=/tmp
GEODIR=/usr/share/GeoIP
DAT=GeoIP.dat
cd $TMPDIR
/usr/bin/wget http://www.maxmind.com/download/geoip/database/$DAT.gz
if [ $? != 0 ] ; then
echo “wget failed”
exit 1
fi
/bin/gunzip $DAT.gz
if [ $? != 0 ] ; then
echo “gunzip failed”
exit 2
fi
cd $GEODIR
/bin/mv $DAT $DAT.`/bin/date “+%Y%m%d-%H%M%S”`
/bin/mv $TMPDIR/$DAT .

Apache:httpd.conf(allow,denyの設定があるところならどこでもOKっぽい)
サンプル転載# … place more countries here
SetEnvIf GEOIP_COUNTRY_CODE CN BlockCountry
SetEnvIf GEOIP_COUNTRY_CODE RU BlockCountry
Order allow,deny
allow from all
deny from env=BlockCountry
GeoIP Apache API
http://www.maxmind.com/app/mod_geoip
ISO 3166 Country Codes
http://www.maxmind.com/app/iso3166ISO 3166 Country Codes
A1,”Anonymous Proxy”
A2,”Satellite Provider”
AD,”Andorra”
AE,”United Arab Emirates”
AF,”Afghanistan”
AG,”Antigua and Barbuda”
AI,”Anguilla”
AL,”Albania”
AM,”Armenia”
AN,”Netherlands Antilles”
AO,”Angola”
AP,”Asia/Pacific Region”
AQ,”Antarctica”
AR,”Argentina”
AS,”American Samoa”
AT,”Austria”
AU,”Australia”
AW,”Aruba”
AX,”Aland Islands”
AZ,”Azerbaijan”
BA,”Bosnia and Herzegovina”
BB,”Barbados”
BD,”Bangladesh”
BE,”Belgium”
BF,”Burkina Faso”
BG,”Bulgaria”
BH,”Bahrain”
BI,”Burundi”
BJ,”Benin”
BM,”Bermuda”
BN,”Brunei Darussalam”
BO,”Bolivia”
BR,”Brazil”
BS,”Bahamas”
BT,”Bhutan”
BV,”Bouvet Island”
BW,”Botswana”
BY,”Belarus”
BZ,”Belize”
CA,”Canada”
CC,”Cocos (Keeling) Islands”
CD,”Congo, The Democratic Republic of the”
CF,”Central African Republic”
CG,”Congo”
CH,”Switzerland”
CI,”Cote d’Ivoire”
CK,”Cook Islands”
CL,”Chile”
CM,”Cameroon”
CN,”China”
CO,”Colombia”
CR,”Costa Rica”
CU,”Cuba”
CV,”Cape Verde”
CX,”Christmas Island”
CY,”Cyprus”
CZ,”Czech Republic”
DE,”Germany”
DJ,”Djibouti”
DK,”Denmark”
DM,”Dominica”
DO,”Dominican Republic”
DZ,”Algeria”
EC,”Ecuador”
EE,”Estonia”
EG,”Egypt”
EH,”Western Sahara”
ER,”Eritrea”
ES,”Spain”
ET,”Ethiopia”
EU,”Europe”
FI,”Finland”
FJ,”Fiji”
FK,”Falkland Islands (Malvinas)”
FM,”Micronesia, Federated States of”
FO,”Faroe Islands”
FR,”France”
GA,”Gabon”
GB,”United Kingdom”
GD,”Grenada”
GE,”Georgia”
GF,”French Guiana”
GG,”Guernsey”
GH,”Ghana”
GI,”Gibraltar”
GL,”Greenland”
GM,”Gambia”
GN,”Guinea”
GP,”Guadeloupe”
GQ,”Equatorial Guinea”
GR,”Greece”
GS,”South Georgia and the South Sandwich Islands”
GT,”Guatemala”
GU,”Guam”
GW,”Guinea-Bissau”
GY,”Guyana”
HK,”Hong Kong”
HM,”Heard Island and McDonald Islands”
HN,”Honduras”
HR,”Croatia”
HT,”Haiti”
HU,”Hungary”
ID,”Indonesia”
IE,”Ireland”
IL,”Israel”
IM,”Isle of Man”
IN,”India”
IO,”British Indian Ocean Territory”
IQ,”Iraq”
IR,”Iran, Islamic Republic of”
IS,”Iceland”
IT,”Italy”
JE,”Jersey”
JM,”Jamaica”
JO,”Jordan”
JP,”Japan”
KE,”Kenya”
KG,”Kyrgyzstan”
KH,”Cambodia”
KI,”Kiribati”
KM,”Comoros”
KN,”Saint Kitts and Nevis”
KP,”Korea, Democratic People’s Republic of”
KR,”Korea, Republic of”
KW,”Kuwait”
KY,”Cayman Islands”
KZ,”Kazakhstan”
LA,”Lao People’s Democratic Republic”
LB,”Lebanon”
LC,”Saint Lucia”
LI,”Liechtenstein”
LK,”Sri Lanka”
LR,”Liberia”
LS,”Lesotho”
LT,”Lithuania”
LU,”Luxembourg”
LV,”Latvia”
LY,”Libyan Arab Jamahiriya”
MA,”Morocco”
MC,”Monaco”
MD,”Moldova, Republic of”
ME,”Montenegro”
MG,”Madagascar”
MH,”Marshall Islands”
MK,”Macedonia”
ML,”Mali”
MM,”Myanmar”
MN,”Mongolia”
MO,”Macao”
MP,”Northern Mariana Islands”
MQ,”Martinique”
MR,”Mauritania”
MS,”Montserrat”
MT,”Malta”
MU,”Mauritius”
MV,”Maldives”
MW,”Malawi”
MX,”Mexico”
MY,”Malaysia”
MZ,”Mozambique”
NA,”Namibia”
NC,”New Caledonia”
NE,”Niger”
NF,”Norfolk Island”
NG,”Nigeria”
NI,”Nicaragua”
NL,”Netherlands”
NO,”Norway”
NP,”Nepal”
NR,”Nauru”
NU,”Niue”
NZ,”New Zealand”
OM,”Oman”
PA,”Panama”
PE,”Peru”
PF,”French Polynesia”
PG,”Papua New Guinea”
PH,”Philippines”
PK,”Pakistan”
PL,”Poland”
PM,”Saint Pierre and Miquelon”
PN,”Pitcairn”
PR,”Puerto Rico”
PS,”Palestinian Territory”
PT,”Portugal”
PW,”Palau”
PY,”Paraguay”
QA,”Qatar”
RE,”Reunion”
RO,”Romania”
RS,”Serbia”
RU,”Russian Federation”
RW,”Rwanda”
SA,”Saudi Arabia”
SB,”Solomon Islands”
SC,”Seychelles”
SD,”Sudan”
SE,”Sweden”
SG,”Singapore”
SH,”Saint Helena”
SI,”Slovenia”
SJ,”Svalbard and Jan Mayen”
SK,”Slovakia”
SL,”Sierra Leone”
SM,”San Marino”
SN,”Senegal”
SO,”Somalia”
SR,”Suriname”
ST,”Sao Tome and Principe”
SV,”El Salvador”
SY,”Syrian Arab Republic”
SZ,”Swaziland”
TC,”Turks and Caicos Islands”
TD,”Chad”
TF,”French Southern Territories”
TG,”Togo”
TH,”Thailand”
TJ,”Tajikistan”
TK,”Tokelau”
TL,”Timor-Leste”
TM,”Turkmenistan”
TN,”Tunisia”
TO,”Tonga”
TR,”Turkey”
TT,”Trinidad and Tobago”
TV,”Tuvalu”
TW,”Taiwan”
TZ,”Tanzania, United Republic of”
UA,”Ukraine”
UG,”Uganda”
UM,”United States Minor Outlying Islands”
US,”United States”
UY,”Uruguay”
UZ,”Uzbekistan”
VA,”Holy See (Vatican City State)”
VC,”Saint Vincent and the Grenadines”
VE,”Venezuela”
VG,”Virgin Islands, British”
VI,”Virgin Islands, U.S.”
VN,”Vietnam”
VU,”Vanuatu”
WF,”Wallis and Futuna”
WS,”Samoa”
YE,”Yemen”
YT,”Mayotte”
ZA,”South Africa”
ZM,”Zambia”
ZW,”Zimbabwe”


ダウンするアドレスが変わっています。
http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
シェル#! /bin/sh
TMPDIR=/tmp
GEODIR=/usr/share/GeoIP
DAT=GeoIP.dat
cd $TMPDIR
#/usr/bin/wget http://www.maxmind.com/download/geoip/database/$DAT.gz
/usr/bin/wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/$DAT.gz
if [ $? != 0 ] ; then
echo “wget failed”
exit 1
fi
/bin/gunzip $DAT.gz
if [ $? != 0 ] ; then
echo “gunzip failed”
exit 2
fi
cd $GEODIR
/bin/mv $DAT $DAT.`/bin/date “+%Y%m%d-%H%M%S”`
/bin/mv $TMPDIR/$DAT .