2013. 3. 21. 13:53

geoip 설정

//---------------------------------------

asp 버전

--------------------------------------------------------------------------------------------------------------------

사용법
1. GeoIPCOM.dll을 system32 폴더에 복사
2. regsvr32 GeoIPCOM.dll - 레지스트리에 DLL등록
3. ASP 프로그램에 적용

set geoip = Server.CreateObject("GeoIPCOM.GeoIP")

geoip.loadDataFile("C:\Program Files\GeoIP\GeoIP.dat")
country_code = geoip.country_code_by_name(hostname)
country_name = geoip.country_name_by_name(hostname)

--------------------------------------------------------------------------------------------------------------------


GeoIP.zip


GeoIP.dat.gz



우선 geoip는 접속 아이피의 위치를 확인해 주는 모듈이다.

apm등에 연동해서 아이피 관련 여러 프로그램들을 짤수도 있고, iptables연동해서 방화벽용으로도 사용하는듯 하다.

 

여기선 apm 연동하여 설치하는 방법을 기록하고자 한다.

 

apm 설치 관련해서는 여러 사이트나 이 블로그(에도 있나 모르겠다 올린듯 하기도 하고. ㅋ)를 참조 하시고

 

기본으로 apm은 설치되어 있다고 가정한다.

 

우선 몇가지를 다운 받아야 한다.

 

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

 

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

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

 

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

 

4)#wget http://pecl.php.net/get/geoip-1.0.7.tgz 

차례로 설명을 하자면 우선 1번 GeoIP-1.4.7.tar.gz는 설치파일이다.

 

2-1 GeoIP.dat.gz및 2-2 GeoLiteCity는 아이피및 위치의 정보를 담고 있는 파일이다. 이내용들은 수시로 변하므로 최신판으로 받아서 지정한 위치에 붙여 넣어 주면 된다.

 

3번 mod_geoip2_1.2.5.tar.gz파일은 아파치와 연동하기위해 설치하는 파일이라고 보면된다.

(단 아파치가 동적으로 설정되어 있어야 이후 설치가 가능하다. 동적이라함은 아파치 설치 방법중 하나로 모듈들을 초기에 모두 설치 하지 않고 이후에 추가로 설정해주는 방식으로 'apachectl -l' 을 쳤을시 'mod_so.c'가 보이면 동적 설치된것이다)

 

4번 geoip-1.0.7.tgz파일은 확장모듈로 php와 연동하기위해 필요한 파일이다.

 

 

 

이제 설치방법으로 넘어가 보자....

 

1번 받은 파일 압축을 풀고

#tar xvfpz GeoIP-1.4.7.tar.gz

압축푼 폴더로 이동하고

#cd GeoIP-1.4.7

설치 한다

#./configure --prefix=/usr/local/GeoIP && make && make install

 

2번대로 넘어가서 받은 최신 ip관련 정보파일을 압축을 풀고

#gzip -d GeoIP.dat.gz

#gzip -d GeoLiteCity.dat.gz

기존 정보파일 있는곳에 덮어 쓴다.

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

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

 

3번대로 넘어가서 아파치 연동용 파일의 압축을 푼다

#tar xvfpz mod_geoip2_1.2.5.tar.gz

압축푼 폴더로 이동한다

#cd mod_geoip2_1.2.5

아파치의 apx를 이용해 설치를 한다.

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

----옵션 대소문자에 유의해야해서 다시 한번 설명

#[아파치apxs경로] -i -a -L [geoip lib경로] -I [geoip include경로] -lGeoIP -c [mod_geoip.c 경로]    ---inclued경로앞의 -I는 대문자 i이고 -lGeoIP에서 맨앞은 소문자L이므로 주의 하고 각 옵션뒤의 경로는 뛰어써도 되고 붙여도 된다. 걍 뛰어 쓰자

설치 제대로 되었는지 확인한다

#ls -la /usr/local/apache/modules/mod_geoip.so

#grep geoip /usr/local/apache/conf/httpd.conf

httpd.conf에 모듈 적용내용을 적는다

<IfModule mod_geoip.c>

 GeoIPEnable On

 GeoIPDBFile /usr/local/GeoIP/share/GeoIP/GeoIP.dat

</IfModule>

phpinfo파일을 만들어 웹에서 확인해본다.

apache environment 정보에 GEOIP관련 항목들이 있는지 확인한다(handler 쪽의 mod_geoip가 아니다)

 

5번 파일의 압축을 푼다.

#tar xvfpz geoip-1.0.7.tgz

압축푼 폴더로 이동한다

#cd geoip-1.0.7

php의 phpize를 이용해 설치 파일을 만든다

/usr/local/php/bin/phpize

옵션을 주고 설치한다

#./configure --with-php-config=/usr/local/php/bin/php-config --with-geoip=/usr/local/GeoIP

#make && make install

php.ini에 geoip관련 구문 추가한다.

#vi /usr/local/lib/php.ini

[GeoIP]

extension_dir=/usr/local/php/lib/php/extensions/no-debug-zts-20050922/     ---맨뒤폴더이름 다르므로 위치가서 확인한후 적어 놓는다.(geoip.so파일이 있는위치이다)

extension=geoip.so

geoip.costom_directory=/usr/local/GeoIP

이후 아파치를 재시작하고 phpinfo로 확인 한다

geoip관련 새로운 파트가 생겼을것이다.


//---------------------------------------------------------------


웹서비스를 하다보면 
"지역단체", "정치인", "중소형 음식점" 홈페이지등을 구동할 때가 있다.

이 때 외국트래픽은 전혀 필요 없으며 차단해 주면 매우 좋다.

다음은 라엘이가 주로 쓰는 방법이다.
*GeoIP : IP 주소만으로 해당국가를 알 수 있는 모듈.   이미 정해져있으며 주기적인 업데이트 (6~12개월 마다 한번) 가 필요하다.

1. Install GeoIP
> 우선 웹브라우져에서 다음의 링크를 클릭하여  링크가 깨졌는지 체크한다.
> 깨졌으면 알아서 설치하고 
> 깨지지 않았으면 2번을 진행한다.
http://www.maxmind.com/download/geoip/api/c/GeoIP.tar.gz

2. 서버에 root 권한으로 로그인
#whoami
root

#cd ~

#pwd
/root

3. GeoIP 모듈 다운로드

1
2
#wget http://www.maxmind.com/download/geoip/api/c/GeoIP.tar.gz
#tar -xzvf GeoIP.tar.gz

4. GeoIP 버전체크
라엘이의 경우는 1.4.6 이었다.
1
2
#ls -l | grep GeoIP-
drwxr-xr-x 8  501 root    4096 2009-02-25 10:44 GeoIP-1.4.6

5. 설치
1
2
3
4
5
#cd GeoIP-1.4.6/
#./configure
#make
#make check
#make install

6. 설치파일 제거
#cd ~
#rm -rf GeoIP-1.4.6/

7. GeoIP 모듈설정
1
2
#ls -l /usr/share/GeoIP/GeoIP.dat
-rw-r--r-- 1 root root 1204947 2010-01-18 16:46 /usr/share/GeoIP/GeoIP.dat

7-1 GeoIP 아파치 모듈설치
1
#apt-get install libapache2-mod-geoip

1
#vi /etc/apache2/mods-available/geoip.conf


<IfModule mod_geoip.c>

  GeoIPEnable On
  GeoIPDBFile /usr/share/GeoIP/GeoIP.dat
</IfModule>

아마 빨간 부분이 주석처리되어있을 건데  주석 푸시고 경로를 잘 맞추어주세요.

7. GeoIP 모듈 활성화
1
#a2enmod geoip

8. Apache2 재시작
1
/etc/init.d/apache2 restart
이 상태에서 서버는 GeoIP 를 지원합니다.
phpinfo 파일을 만드셔서  웹페이지에서 보시면

사용자 삽입 이미지

다음 두가지 변수를 추가제공합니다.

위의 변수는 $_SERVER['GEOIP_COUNTRY_CODE'] 같은 PHP문법으로도 접근하실 수 있습니다.

이 상태에서 

9. 기존 VirtualHost 설정파일 편집
#vi /etc/apache2/sites-available/기존설정파일

에서
<Directory /home/lael.be/www/> 
Options FollowSymLinks MultiViews
AllowOverride FileInfo
Order deny,allow
SetEnvIf GEOIP_COUNTRY_CODE KR AllowCountry
Deny from all
Allow from env=AllowCountry
</Directory>
빨간 부분과 같이 추가해 준 후  

#/etc/init.d/apache2 reload

하시면 됩니다.

--
빨간 부분 해석
1) deny를 먼저적용하고 allow 를 적용함
2) GEOIP_COUNTRY_CODE 가 KR이면 AllowCountry 그룹에 넣음
>> 2번째 줄을 여러개 넣으셔도 됩니다.  KR 국가코드를 다른것으로 바꾸면 됩니다.
3) 모든 요청에 대해 거부
4) AllowCountry 그룹에 있는 요청은 허용
--

즉 한국인만 접속가능한 사이트가 되며 보안에 상당한 도움이 됩니다.