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>

번호 제목 글쓴이 날짜 조회 수
63 아파치 특정폴더에 암호걸기 호스트웨이 2012.12.28 8167
62 PHP 컴파일시 에러 메세지가 나오는 경우 조치방법-2 호스트웨이 2012.12.20 6128
61 PHP 컴파일시 에러 메세지가 나오는 경우 조치방법 호스트웨이 2012.12.14 10330
60 Ubuntu 아파치 웹서버에서 index.php 다운로드 창이 뜰 경우 호스트웨이 2012.12.13 8231
59 Symbolic link not allowed or link target not accessible 에러 발생 시 호스트웨이 2012.11.16 10562
58 CentOS6 64bit openssl 설치시 에러 조치사항 호스트웨이 2012.11.02 7609
57 [php] 세션 유지시간 설정하기 호스트웨이 2012.10.25 17799
56 Apache 재시작시 세션 끊어짐 현상 호스트웨이 2012.10.12 12760
55 apache 구동시 "파일 크기 제한을 초과함 $HTTPD -DSSL" 에러메시지 출력에 대한 해결방법 호스트웨이 2012.10.11 9404
54 failed to open stream: Too many open files in 에러메시지 출력 시 해결방법 호스트웨이 2012.10.03 7626
53 httpd-2.4 설치하기 호스트웨이 2012.09.27 14436
52 아파치 실행시 libphp5.so 에러 호스트웨이 2012.09.14 13523
51 apache internal dummy connection 로그 생성 방지하기 호스트웨이 2012.09.06 18695
50 SSL 패스워드 삭제 하기 호스트웨이 2012.09.05 20690
49 Apache Max Client 값 수정 호스트웨이 2012.08.31 19636
48 Nginx 설치 호스트웨이 2012.08.31 14898
47 nginx - redirect 설정 호스트웨이 2012.08.24 17883
46 CentOS 6.3 에 apache, php, mysql, phpmyadmin(LAMP) 설치하기 #2 호스트웨이 2012.08.07 14202
45 CentOS 6.3 에 apache, php, mysql, phpmyAdmin(LAMP) 설치하기 #1 호스트웨이 2012.08.07 17343
44 PHP 사용 시 특정함수 사용제한 하는 방법 호스트웨이 2012.08.03 11507