Results for tag "geoip"

apache GeoIP

Mint™

아파치에 GeoIP 모듈 설치하는 방법

GeoIP 란 MaxMind 에서 제공하는 국가별로 IP를 확인할 수 있는 오픈소스 라이브러리로 이를 이용하여 서버에 접근 하는 아이피를 국가별로 관리할 수 있습니다.

http://www.maxmind.com

(1) GeoIP C API 설치하기

  1. GeoIP C API를 다운 받아 설치 합니다.
http://geolite.maxmind.com/download/geoip/api/c/
wget http://geolite.maxmind.com/download/geoip/api/c/GeoIP-1.4.6.tar.gz
  1. 압축을 해제 합니다.
tar zxvf GeoIP-1.4.6.tar.gz
  1. 해제된 디렉토리로 이동 후 설치 디렉토리를 지정하여 ./configure 합니다.
cd cd GeoIP-1.4.6
./configure --prefix=/usr/local/GeoIP
  1. 컴파일 및 설치를 진행 합니다.
make && make install
  1. GeoIP의 ip 목록을 최신정보로 갱신하기 위하여 GeoIP.dat 를 다운받아 설치된 위치에 복사 합니다.
  • 국가 정보 다운로드
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
  • 도시 정보 다운로드
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
  • 압축 해제
gzip -d GeoIP.dat.gz
gzip -d GeoLiteCity.dat.gz
  • 해제된 파일을 GeoIP가 설치된 위치에 덮어쓰기
cp -a GeoIP.dat /usr/local/GeoIP/share/GeoIP/
cp -a GeoLiteCity.dat /usr/local/GeoIP/share/GeoIP/

(2) geoip모듈을 아파치에 설치하기.

  1. mod_geoip를 다운 받습니다.

아파치 1.x 용

http://geolite.maxmind.com/download/geoip/api/mod_geoip/

아파치 2.x 용

https://github.com/maxmind/geoip-api-mod_geoip2/archive/1.2.9.tar.gz

ex)아파치 2.x용 다운로드

wget https://github.com/maxmind/geoip-api-mod_geoip2/archive/1.2.9.tar.gz
  1. 압축을 해제 합니다.
tar zxvf 1.2.9.tar.gz
  1. 해제된 위치로 이동 후 c파일을 apxs를 이용하여 설치 합니다.
cd?geoip-api-mod_geoip2-1.2.9

[아파치 apxs경로] -i -a -L[geoip설치디렉토리의lib경로] -I[geoip설치디렉토리의include경로] -lGeoIP -c [mod_geoip.c 경로] ## 옵션의 대소문자 주의 -lGeoIP = 소문자 l로 시작

/usr/local/apache/bin/apxs -i -a -L/usr/local/GeoIP/lib -I/usr/local/GeoIP/include -lGeoIP -c /root/geoip-api-mod_geoip2-1.2.9/mod_geoip.c
  1. 모듈이 정상적으로 설치,로드 되었는지 확인합니다.
ls -al /usr/local/apache/modules/mod_geoip.so
-rwxr-xr-x 1 root root 38179? 3월 26 13:16 /usr/local/apache/modules/mod_geoip.so

-httpd.conf 파일의 LoadModule 위치에 추가 되었는지 확인

LoadModule geoip_module modules/mod_geoip.so
  • phpinfo 페이지의 Apache Environment 정보에 GEOIP_CONTINENT_CODE, GEOIP_COUNTRY_CODE, GEOIP_COUNTRY_NAME 항목 확인
  1. httpd.conf에 mod_geoip 모듈의 적용 내용을 설정합니다.

특정 국가의 접근 차단


GeoIPEnable On
GeoIPDBFile /usr/local/GeoIP/share/GeoIP/GeoIP.dat

SetEnvIf GEOIP_COUNTRY_CODE CN go_out
SetEnvIf GEOIP_COUNTRY_CODE RU go_out
SetEnvIf GEOIP_COUNTRY_CODE TH go_out

Order allow,deny
Allow from all
Deny from env=go_out



특정 국가에만 접근 허용


GeoIPEnable On
GeoIPDBFile /usr/local/GeoIP/share/GeoIP/GeoIP.dat

SetEnvIf GEOIP_COUNTRY_CODE KR go_in

Order Deny,Allow
Deny from all
Allow from env=go_in



[참고]
Cannot load /usr/local/apache/libexec/mod_geoip.so into server: libGeoIP.so.1: cannot open shared object file: No such file or directory
에러 발생시
/etc/ld.so.conf 파일에
/usr/local/GeoIP/lib 라인 추가 후
ldconfig 적용