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 Apache / PHP 최신버전 설치하기 호스트웨이 2015.09.25 17505
42 CentOS 6.3 에 apache, php, mysql, phpmyAdmin(LAMP) 설치하기 #1 호스트웨이 2012.08.07 18348
41 ZendOptimizer 3.3.9 설치 file 호스트웨이 2012.06.01 18544
40 Zend Guard Loader 설치 호스트웨이 2012.04.20 18825
39 [php] 세션 유지시간 설정하기 호스트웨이 2012.10.25 18852
38 nginx - redirect 설정 호스트웨이 2012.08.24 18863
37 server-status를 이용한 아파치 모니터링 방법 file 호스트웨이 2016.04.05 19265
36 apache internal dummy connection 로그 생성 방지하기 호스트웨이 2012.09.06 19709
35 Apache Max Client 값 수정 호스트웨이 2012.08.31 20653
34 Debian 에서 mod_rewrite 활성화 하기 jook 2008.12.12 20790
» mod_GeoIP를 이용한 국가 IP 확인 및 국가별 접속 제한 호스트웨이 2012.05.04 20961
32 apache1.3 + mod_ssl - 보안서버 구축하기 sylee 2008.05.15 21073
31 apache에서 cgi를 사용하기 위한 설정 방법 호스트웨이 2012.04.27 21155
30 Debian에서 apm 설치할때의 패키지 목록 jook 2008.12.27 21163
29 설치된 서버 php에서 지원되는 함수 확인 하기 hostway 2008.05.14 21206
28 Apache 설치 후 WEB 403 Forbidden 에러 호스트웨이 2015.09.08 21364
27 SSL 패스워드 삭제 하기 호스트웨이 2012.09.05 21674
26 httpd-2.x.x 에서의 SERVER_LIMIT 변경 hostway 2008.05.14 21915
25 아파치 환경설정 파일분석 1번째 sylee 2008.05.14 22368
24 apache2.x - 보안서버 구축하기 sylee 2008.05.15 23976