리눅스 관련팁 게시판입니다.
  • 웹미니 한줄 전광판 영역 입니다.
글 수 49

0

조회 수 : 3587 신고 : 0

작성자 : 어드민플레이
포인트 : 575 | 레벨 : 2
아파치 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
소중한 댓글 부탁드립니다.
추천수 10단위당 메달이 1개씩 노출되고, 추천수에 따라 배경색이 변하며, 일정수의 추천수를 받을시 BEST 아이콘이 붙게됩니다.
추천수에 따른 배경색 보기 본문으로 바로가기
  • 추천수 50개이상
  • 추천수 30개이상
  • 추천수 20개이상
  • 추천수 10개이상
  • 추천수 3개이상
닫기

첫번째 댓글을 남겨주세요!

List of Articles
번호 제목 글쓴이 날짜 추천 수 조회 수
29 squid 로 웹서버 가속하기..---== 강추 ==--- 어드민플레이 2010-04-18 1 5877
28 사용자 인증 어드민플레이 2010-04-18   3754
27 /etc/passwd 구조 어드민플레이 2010-04-17 1 7490
26 DNS TCP53, UDP53 용도 어드민플레이 2010-04-17   4633
25 CentOS5,Fedora7 네임서버 설정법 어드민플레이 2010-04-17   5088
24 DNS 개념을 위한 상식용어 어드민플레이 2010-04-17   4445
23 서브도메인 유출 방지방법 어드민플레이 2010-04-17   3763
22 DNS 포워더 설정 어드민플레이 2010-04-17   5465
21 RedHat 8에 bind-9.3.2 소스설치 어드민플레이 2010-04-17   4610
20 각 ISP 업체별 DNS 서버목록 입니다. 어드민플레이 2010-04-17   3982
19 아파치 GeoIP를 이용한 국가별 제한 어드민플레이 2010-04-15   3587
18 apache + oracle (오라클 DB 한글깨짐) 어드민플레이 2010-04-15   5159
17 Linux APM 설치 (Compile) 1부 - MySQL 설치 wecell 2010-03-14   3321
16 APM설치 (3탄 php편) 암캐 2010-02-23   3268
15 APM설치 (2탄 apache편) 암캐 2010-02-23   2795
14 APM설치 (1탄 mysql편) [1] 암캐 2010-02-23 1 2590
13 CentOS 5.3에 TTF 폰트 설치 하기 레드후디 2010-01-16 1 6403
12 PHP - mysql 관련 함수 암캐 2010-01-16   3918
11 리눅스 설치시 유용한 10가지 팁 [1] 디자인비 2009-10-22   3508
10 Linux APM 설치 (Compile) 4부 - phpmyadmin 설치 hhkwoong 2009-10-07   6651