2012.05.04 18:48
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 | 웹접속 속도가 느려 졌을때 점검 해보기 | sylee | 2008.05.20 | 60774 |
82 | mod_rewrite 모듈 설치 및 기본 사용법 | sylee | 2009.07.02 | 38431 |
81 | ModSecurity 설치 해보기 | sylee | 2008.09.11 | 37908 |
80 | register_globals 옵션에 따른 변수 전달 | jook | 2009.02.19 | 34738 |
79 | apache + resin 연동하여 설치하기 | 호스트웨이 | 2008.05.19 | 32941 |
78 | 웹브라우저에서 디렉토리 리스트가 보일때 | hostway | 2008.05.14 | 31122 |
77 | 아파치 에러 코드 | sylee | 2008.05.15 | 30924 |
76 | 홈페이지 포워딩 하기 | jook | 2008.05.21 | 30779 |
75 | ab 사용방법 | sylee | 2008.05.15 | 28903 |
74 | 보안 서버 구축 - TOMCAT | 호스트웨이 | 2008.07.08 | 27541 |
73 | php.ini 옵션 중 short_open_tag | jook | 2009.02.12 | 27350 |
72 | 웹 계정 추가 스크립트 | jook | 2008.07.01 | 27229 |
71 | Apache event MPM, Prefork MPM, Worker MPM 방식의 차이점 및 설치 시 설정 방법 | 호스트웨이 | 2014.07.20 | 26734 |
70 | 보안을 위한 php.ini 설정 | HOSTWAY | 2008.07.31 | 26384 |
69 | 아파치 가상 호스트 설정 해보기 | sylee | 2008.05.20 | 25831 |
68 | 아파치와 tomcat 연동 | 호스트웨이 | 2008.07.01 | 25718 |
67 | apache 가상호스트(virtualhost) 사용하기 | 호스트웨이 | 2013.06.03 | 25684 |
66 | PHP에서 MS-SQL 서버를 연동하기 위한 방법 | 호스트웨이 | 2012.04.13 | 25314 |
65 | 아파치2 에서 mod_cband 사용법 | sylee | 2009.06.05 | 24559 |
64 | 업로드 디렉토리의 .php파일을 text처럼 인식하기 | sylee | 2008.05.15 | 24148 |