리눅스 아파치 GeoIP를 이용한 국가별 제한


아파치 GeoIP를 이용한 국가별 제한


웹페이지 요청시 요청한 클라이언트의 아이피를 분석하여 해당 국가를 판별하고 

국가별로 접근 제한을 하는 방법에 대해 알아보도록 하겠다.


1. 준비사항 

GeoIP데이터를 apache에서 사요하기위해서는 mod_geoip를 설치하기에 앞서 
GeoIP C API를 먼저 설치하여야 한다 .

다운로드 : http://www.maxmind.com/app/c

설치 방법 : # ./configure --prefix=/usr/local/GeoIP
        # make
        # make install


2. 아파치 모듈 컴파일하기 

먼저 아파치가 DSO모듈을 지원하도록 컴파일 되어있어야한다 

그리고 컴파일시  라이브러리 경로 와 인클루드 경로를 추가해두어야한다 

    라이브러리 경로 : -L /usr/local/GeoIP/lib
    인클루드 경로    : -I  /usr/local/GeoIP/include

다운로드  : http://www.maxmind.com/app/mod_geoip

설치 방법  : apxs -ci  -L /usr/local/GeoIP/lib -I  /usr/local/GeoIP/include -l GeoIP -c mod_geoip.c


설치 후  만약 php가 설치되어 있다면 phpinfo를 통해 간단하게 확인이가능하다 .

Apache Environment 부분에서 

GEOIP_CONTINENT_CODE, GEOIP_COUNTRY_CODE, GEOIP_COUNTRY_NAME환경 변수를 볼 수 있다.

그리고 해당 모듈과 라이브러러리의설치 완료 되었으면 

GeoIP 데이터를 다운받아야 한다 

다운로드 : http://www.maxmind.com/app/products

저장위치 : /usr/local/GeoIP/share/GeoIP/GeoIP.dat

3.  아파치에서 국가별 접근제어하기 

특정국가별로 접근을 제한하기위해서는 아래와같이 설정을 추가하면된다 

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

        <Location /image>
           SetEnvIf GEOIP_COUNTRY_CODE CN go_out
           SetEnvIf GEOIP_COUNTRY_CODE RU go_out
           SetEnvIf GEOIP_COUNTRY_CODE TH go_out

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

    </Location>

</IfModule>

위와 반대로 특정국가먄 허용할경우 아래와 같이 하면 된다 .

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

        <Location /image>
           SetEnvIf GEOIP_COUNTRY_CODE KR go_in

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

    </Location>

</IfModule>


4. 참고 (GeoIP를 이용한 로그)

아파치 로그에서  GeoIP를 이용하여 국가별 코드를 남기게 되면 문제 발생시 whois를 이용하여 조회하지 않더라도 

바로 파악이 가능하며 그에따른 적절한 조치가 가능하다 

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

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %{Host}i %{GEOIP_COUNTRY_CODE}e"  geoiplog

CustomLog logs/access_log geoiplog

 

#출처 어드민플레이

이 글이 마음에 드셨나요?
지인과 공유해보세요.



Profile

Mr.키아

삶이란 꿈과 희망을 가지고 살아가야한다는 것이다.
대한민국 20대 청년으로 열심히 살아가고있으며
키큰아이, 키큰아이닷컴 등 현재 몇몇 서비스를 운영하고 있습니다.



댓글 0

"아파치 GeoIP를 이용한 국가별 제한"의 첫댓글을 달아주세요!

댓글 달기

댓글을 쓸 수 있는 권한이 없습니다.

팁공유

간단한 일상 팁부터 지식이 필요한 테크니컬 자료를 수집 하는 공간입니다.


커뮤니티



제휴


당신의 인터넷은 감청당하고 있습니다.

광고



kikni
서버에 요청 중입니다. 잠시만 기다려 주십시오...