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>

번호 제목 글쓴이 날짜 조회 수
83 server-status를 이용한 아파치 모니터링 방법 file 호스트웨이 2016.04.05 23394
82 Apache / PHP 최신버전 설치하기 호스트웨이 2015.09.25 24858
81 Indexes 값 제거 호스트웨이 2015.09.18 12915
80 cronlog 설정 호스트웨이 2015.09.18 12993
79 apache - mod_url 설치 호스트웨이 2015.09.18 15460
78 Alternative PHP Cache 설치 & 설정 호스트웨이 2015.09.18 11647
77 웹부하 테스트 - httperf 호스트웨이 2015.09.18 13927
76 Apache Log 관리 방법 (Logrotate) 호스트웨이 2015.09.17 17055
75 Linux LVS 사용하기 호스트웨이 2015.09.16 15460
74 Apache 동시접속자 수 알아내기 호스트웨이 2015.09.13 14110
73 httpd.pid 파일 오류 메시지 (20014) 호스트웨이 2015.09.12 17451
72 외부 링크 도용을 막기 위한 아파치 설정 호스트웨이 2015.09.11 13452
71 WEB에 특정 IP접근 차단 호스트웨이 2015.09.10 15200
70 Apache 설치 후 WEB 403 Forbidden 에러 호스트웨이 2015.09.08 25907
69 Apache-Tomcat Multi Instance 설정 file 호스트웨이 2015.05.28 16195
68 mod_evasive를 이용한 웹 DDoS 방어 호스트웨이 2014.08.19 18445
67 Apache event MPM, Prefork MPM, Worker MPM 방식의 차이점 및 설치 시 설정 방법 호스트웨이 2014.07.19 32491
66 apache 가상호스트(virtualhost) 사용하기 호스트웨이 2013.06.03 30565
65 apache 쓸모없는 로그 남기지 않는 방법. 호스트웨이 2012.12.28 11849
64 64bit 에서 php 컴파일시 에러 메세지 발생 시 대처방법-3 호스트웨이 2012.12.28 13477