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 17638
42 CentOS 6.3 에 apache, php, mysql, phpmyAdmin(LAMP) 설치하기 #1 호스트웨이 2012.08.07 18467
41 ZendOptimizer 3.3.9 설치 file 호스트웨이 2012.06.01 18593
40 Zend Guard Loader 설치 호스트웨이 2012.04.20 18882
39 nginx - redirect 설정 호스트웨이 2012.08.24 18948
38 [php] 세션 유지시간 설정하기 호스트웨이 2012.10.25 18966
37 server-status를 이용한 아파치 모니터링 방법 file 호스트웨이 2016.04.05 19330
36 apache internal dummy connection 로그 생성 방지하기 호스트웨이 2012.09.06 19805
35 Apache Max Client 값 수정 호스트웨이 2012.08.31 20805
34 Debian 에서 mod_rewrite 활성화 하기 jook 2008.12.12 20830
» mod_GeoIP를 이용한 국가 IP 확인 및 국가별 접속 제한 호스트웨이 2012.05.04 21075
32 apache1.3 + mod_ssl - 보안서버 구축하기 sylee 2008.05.15 21118
31 Debian에서 apm 설치할때의 패키지 목록 jook 2008.12.27 21190
30 설치된 서버 php에서 지원되는 함수 확인 하기 hostway 2008.05.14 21268
29 Apache 설치 후 WEB 403 Forbidden 에러 호스트웨이 2015.09.08 21469
28 apache에서 cgi를 사용하기 위한 설정 방법 호스트웨이 2012.04.27 21690
27 SSL 패스워드 삭제 하기 호스트웨이 2012.09.05 21728
26 httpd-2.x.x 에서의 SERVER_LIMIT 변경 hostway 2008.05.14 22035
25 아파치 환경설정 파일분석 1번째 sylee 2008.05.14 22444
24 apache2.x - 보안서버 구축하기 sylee 2008.05.15 24058