아파치에 GeoIP 모듈 설치하는 방법
GeoIP 란 MaxMind 에서 제공하는 국가별로 IP를 확인할 수 있는 오픈소스 라이브러리로 이를 이용하여 서버에 접근 하는 아이피를 국가별로 관리할 수 있습니다.
(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 |