Linux WEB

 Apache ? mod_GeoIP를 이용한 국가 IP 확인 및 국가별 접속 제한

 

GeoIP 란 MaxMind 에서 제공하는 웹에 접근하는 IP를 국가별로 확인할 수 있는 오픈소스

라이브러리로 이를 이용하여 서버에 접근 하는 IP를 국가별로 제한,허용 할 수 있습니다.


1. GeoIP C Library 설치

GeoIP C Library Source : http://geolite.maxmind.com/download/geoip/api/c/

# tar -xvfz GeoIP-1.4.8.tar.gz
# cd GeoIP-1.4.8
# ./configure --prefix=/usr/local/GeoIP
# make && make install


2. mod_geoip 설치
(apache가 DSO 모듈을 지원할 수 있다는 가정하에 설치)

mod_geoip (apache 1.x용) : http://geolite.maxmind.com/download/geoip/api/mod_geoip/
mod_geoip (apache 2.x용) :
http://geolite.maxmind.com/download/geoip/api/mod_geoip2/

# tar -xvfz mod_geoip2_1.2.7.tar.gz
# cd mod_geoip2_1.2.7
[apache 설치경로]/bin/apxs -ia -L/usr/local/GeoIP/lib -I/usr/local/GeoIP/include ?lGeoIP -c mod_geoip.c

* 참고사항
-L /usr/local/GeoIP/lib == library 디렉토리 지정
-I /usr/local/GeoIP/include == include 디렉토리 지정
-lGeoIP == 소문자 L


3. httpd.conf에 geoip 모듈이 추가되었는지 확인
LoadModule geoip_module       modules/mod_geoip.so


4. GeoIP 데이터베이스 추가 및 업데이트

# http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
#
http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz

다운로드 후 아래의 경로에 압축 해제
/usr/local/GeoIP/share/GeoIP/


5. apache 웹로그에 국가코드 남기기

httpd.conf 파일에 아래의 내용을 추가

LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i" %{Host}i %{GEOIP_COUNTRY_CODE}e" cnxlog
CustomLog logs/access_log cnxlog

 

6-1. 웹페이지에 특정 국가를 접근 제한하기 (중국에서의 접근 제한)

httpd.conf에 아래와 같이 추가

<IfModule geoip_module>
        GeoIPEnable On
        GeoIPDBFile /usr/local/GeoIP/share/GeoIP/GeoIP.dat

        <Location /image>
           SetEnvIf GEOIP_COUNTRY_CODE CN go_out  # CN -> 중국 국가 코드

           <Limit GET POST>
             Order Allow,Deny
             Allow from all
             Deny  from env=go_out
           </Limit>
       </Location>
</IfModule>


6-2. 특정 국가만 접근 허용 (한국에서만)

<IfModule geoip_module>
        GeoIPEnable On
        GeoIPDBFile /usr/local/GeoIP/share/GeoIP/GeoIP.dat

     <Location /image>
           SetEnvIf GEOIP_COUNTRY_CODE KR go_in  # KR -> 한국 국가 코드

           <Limit GET POST>
             Order Deny,Allow
             Deny from all
             Allow  from env=go_in
           </Limit>
     </Location>
</IfModule>

번호 제목 글쓴이 날짜 조회 수
43 PHP 컴파일시 /usr/bin/ld: cannot find -lltdl 오류 호스트웨이 2012.07.13 9603
42 [Apache] Image 관련 Log 남기지 않기 호스트웨이 2012.07.13 7657
41 PHP 업로드 파일 용량 제한 설정 호스트웨이 2012.07.06 8641
40 SSL config error 조치사항 호스트웨이 2012.06.29 8237
39 Apache2.4.x 버전 설치 호스트웨이 2012.06.22 19995
38 PHP-5.3 버전 이상에서 Deprecated 에러 발생시 처리 방법 호스트웨이 2012.06.22 11708
37 PHP 속도 향상을 위한 eAccelerator 설치 호스트웨이 2012.06.15 9692
36 ZendOptimizer 3.3.9 설치 file 호스트웨이 2012.06.01 13987
35 웹페이지에 사용자 인증 사용하기 호스트웨이 2012.05.18 7567
34 apache ssl 시작시 오류 메세지 호스트웨이 2012.05.11 8003
» mod_GeoIP를 이용한 국가 IP 확인 및 국가별 접속 제한 호스트웨이 2012.05.04 13347
32 apache에서 cgi를 사용하기 위한 설정 방법 호스트웨이 2012.04.27 12474
31 Zend Guard Loader 설치 호스트웨이 2012.04.20 14387
30 PHP에서 MS-SQL 서버를 연동하기 위한 방법 호스트웨이 2012.04.13 20772
29 Linux log 분할 방법 (logrotate) 호스트웨이 2012.04.06 10528
28 APM 및 OS 버전 확인 하는 방법 호스트웨이 2012.03.30 11952
27 phpize를 이용하여 모듈 추가 file 호스트웨이 2012.03.15 13432
26 mod_rewrite 모듈 설치 및 기본 사용법 sylee 2009.07.02 30263
25 아파치2 에서 mod_cband 사용법 sylee 2009.06.05 21810
24 register_globals 옵션에 따른 변수 전달 jook 2009.02.19 21254