리눅스 분류
아파치 GeoIP를 이용한 국가별 제한
작성자 정보
- 웹관리자 작성
- 작성일
컨텐츠 정보
- 15,167 조회
- 0 추천
- 목록
본문
아파치 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
웹페이지 요청시 요청한 클라이언트의 아이피를 분석하여 해당 국가를 판별하고
국가별로 접근 제한을 하는 방법에 대해 알아보도록 하겠다.
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
"무단배포금지: 클라우드포털(www.linux.co.kr)의 모든 강좌는 저작권에 의해 보호되는 콘텐츠입니다. 무단으로 복제하여 배포하는 행위는 금지되어 있습니다."
관련자료
-
이전
-
다음
댓글 0
등록된 댓글이 없습니다.