블로그 이미지
BJcomm
bjcomm

공지사항

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함

calendar

1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
11-23 03:01

아파치에 GeoIP 모듈 설치하는 방법

2014. 11. 25. 17:26 | Posted by bjcomm

아파치에 GeoIP 모듈 설치하는 방법

GeoIP 란 MaxMind 에서 제공하는 국가별로 IP를 확인할 수 있는 오픈소스 라이브러리로 이를 이용하여 서버에 접근 하는 아이피를 국가별로 관리할 수 있습니다.

http://www.maxmind.com

(1) GeoIP C API 설치하기

1.

- GeoIP C API를 다운 받아 설치 합니다.

http://geolite.maxmind.com/download/geoip/api/c/

#wget http://geolite.maxmind.com/download/geoip/api/c/GeoIP-1.4.6.tar.gz

2

- 압축을 해제 합니다.

#tar zxvf GeoIP-1.4.6.tar.gz

3.
- 해제된 디렉토리로 이동 후 설치 디렉토리를 지정하여 ./configure 합니다.

#cd cd GeoIP-1.4.6
#./configure --prefix=/usr/local/GeoIP

4.
- 컴파일 및 설치를 진행 합니다.

#make && make install

5.
GeoIP의 ip 목록을 최신정보로 갱신하기 위하여 GeoIP.dat 를 다운받아 설치된 위치에 복사 합니다.

- 국가 정보 다운로드

#wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz

- 도시 정보 다운로드

#wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz

- 압축 해제

#gzip -d GeoIP.dat.gz
#gzip -d GeoLiteCity.dat.gz

- 해제된 파일을 GeoIP가 설치된 위치에 덮어쓰기

#cp -a GeoIP.dat /usr/local/GeoIP/share/GeoIP/
#cp -a GeoLiteCity.dat /usr/local/GeoIP/share/GeoIP/

(2)
geoip모듈을 아파치에 설치하기.

1.mod_geoip를 다운 받습니다.

아파치 1.x 용

http://geolite.maxmind.com/download/geoip/api/mod_geoip/

아파치 2.x 용

http://geolite.maxmind.com/download/geoip/api/mod_geoip2/

ex)아파치 2.x용 다운로드

#wget http://geolite.maxmind.com/download/geoip/api/mod_geoip2/mod_geoip2_1.2.5.tar.gz

2.
압축을 해제 합니다.

#tar zxvf mod_geoip2_1.2.5.tar.gz

3.
해제된 위치로 이동 후 c파일을 apxs를 이용하여 설치 합니다.

#cd mod_geoip2_1.2.5

#[아파치 apxs경로] -i -a -L[geoip설치디렉토리의lib경로] -I[geoip설치디렉토리의include경로] -lGeoIP -c [mod_geoip.c 경로] ## 옵션의 대소문자 주의 -lGeoIP = 소문자 l로 시작

#/usr/local/apache/bin/apxs -i -a -L/usr/local/GeoIP/lib -I/usr/local/GeoIP/include -lGeoIP -c /root/mod_geoip2_1.2.5/mod_geoip.c

4.
모듈이 정상적으로 설치,로드 되었는지 확인합니다.

#ls -al /usr/local/apache/modules/mod_geoip.so
-rwxr-xr-x 1 root root 38179  3월 26 13:16 /usr/local/apache/modules/mod_geoip.so

- httpd.conf 파일의 LoadModule 위치에 추가 되었는지 확인

LoadModule geoip_module       modules/mod_geoip.so

- phpinfo 페이지의 Apache Environment 정보에 GEOIP_CONTINENT_CODE, GEOIP_COUNTRY_CODE, GEOIP_COUNTRY_NAME 항목 확인

5.
httpd.conf에 mod_geoip 모듈의 적용 내용을 설정합니다.

특정 국가의 접근 차단

<IfModule mod_geoip.c>
    GeoIPEnable On
    GeoIPDBFile /usr/local/GeoIP/share/GeoIP/GeoIP.dat
    <Location /home>
           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 mod_geoip.c>
    GeoIPEnable On
    GeoIPDBFile /usr/local/GeoIP/share/GeoIP/GeoIP.dat
    <Location /home>
          SetEnvIf GEOIP_COUNTRY_CODE KR go_in
           <Limit GET POST>
             Order Deny,Allow
             Deny from all
             Allow  from env=go_in
           </Limit>
    </Location>
</IfModule>

[참고]
Cannot load /usr/local/apache/libexec/mod_geoip.so into server: libGeoIP.so.1: cannot open shared object file: No such file or directory
에러 발생시
/etc/ld.so.conf 파일에
/usr/local/GeoIP/lib 라인 추가 후
ldconfig 적용

 

'리눅스 문서' 카테고리의 다른 글

리눅스용 백신 - f-prot 설치 및 사용법  (4) 2014.11.25
NFS 서버 구축  (4) 2014.11.25
php 함수제한  (4) 2014.11.25
이미지 외부링크 차단  (4) 2014.11.25
mysql 명령어 정리  (4) 2014.11.25