리눅스 관련팁 게시판입니다.
  • 웹미니 한줄 전광판 영역 입니다.
글 수 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
번호 제목 글쓴이 날짜 추천 수 조회 수sort
49 letsencrypt 인증서 갱신 title: [ani]깜빡이는 표정빽짱구 2018-09-16   192
48 letsencrypt 인증서 크론탭 등록 title: [ani]깜빡이는 표정빽짱구 2018-09-16   208
47 Let's Encrypt 무료 인증서 저장된 도메인 갯수 확인 title: [ani]깜빡이는 표정빽짱구 2018-09-06   223
46 vi 에서 문자열 검색 title: [ani]깜빡이는 표정빽짱구 2018-10-31   262
45 [Cenos6 ] SQLyog를 통해 mysql로 접속 title: [ani]깜빡이는 표정빽짱구 2016-06-30   321
44 cent os 버전 확인하는 명령어 title: [ani]깜빡이는 표정빽짱구 2019-01-01 1 399
43 crontab -e 편집내용이 사라졌을때 title: [ani]깜빡이는 표정빽짱구 2018-12-26   452
42 리눅스 사용자 계정 삭제 title: [ani]깜빡이는 표정빽짱구 2016-07-18   454
41 크론(스케줄러) 백업 스크립트 설정 title: [ani]깜빡이는 표정빽짱구 2016-02-16   462
40 APM설치 (1탄 mysql편) [1] 암캐 2010-02-23 1 2590
39 APM설치 (2탄 apache편) 암캐 2010-02-23   2795
38 아파치(Apache) mod_rewrite를 이용한 주소 이동 .htaccess 수정 title: [ani]깜빡이는 표정빽짱구 2012-06-23 1 3065
37 APM설치 (3탄 php편) 암캐 2010-02-23   3268
36 Linux APM 설치 (Compile) 1부 - MySQL 설치 wecell 2010-03-14   3321
35 리눅스 설치시 유용한 10가지 팁 [1] 디자인비 2009-10-22   3508
34 아파치 GeoIP를 이용한 국가별 제한 어드민플레이 2010-04-15   3587
33 사용자 인증 어드민플레이 2010-04-18   3754
32 서브도메인 유출 방지방법 어드민플레이 2010-04-17   3763
31 PHP - mysql 관련 함수 암캐 2010-01-16   3918
30 telnet 기능과 ftp 기능이 한꺼번에 file 주영아빠 2010-10-26   3927