본문 바로가기
Network

GeoIP

by 세계정보ㄱ 2013. 8. 5.
728x90
반응형

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>



728x90
반응형

'Network' 카테고리의 다른 글

Apache DOS 보호 모듈 mod_evasive  (0) 2022.04.04
끊김없이 네임서버 이전(교체)하기  (0) 2022.03.18
PHP Zend Guard Loader 설치  (0) 2013.08.05
Apache mod_cband 설치/설정  (0) 2013.08.05
홈페이지 포워딩 방법  (0) 2013.08.05