Ubuntu GeoIP를 사용하여 외국트래픽차단하기

HYEONG HWAN, MUN/ 10월 21, 2014/ 미분류/ 2 comments

https://blog.lael.be/post/346

u1이 글에서는 Apache GeoIP 모듈을 설치하고, 외국 트래픽을 차단하는 방법에 대해 설명합니다.

웹서비스를 운영하다보면 “지역단체“, “정치인“, “중소형 음식점” 등과 같이 외국 트래픽이 전혀 필요 없을 때가 있다.

이 때 외국트래픽을 차단해 주면 보안이 매우 향상된다.

*GeoIP : IP 주소만으로 해당국가를 알 수 있는 모듈. IP 주소가 무작위로 할당되는 것이 아니라, 대륙별, 지역별로 계층 할당되기 때문에 IP 만으로도 대략적인 정보를 추측할 수 있다.

 

예를 들어, 서울대학교 메인 서버의 주소 및 위치 정보는 다음과 같다.

http://ipconfig.tools/ko/whois?host=147.46.10.58

 

1. Install GeoIP

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

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

#whoami

root

#cd ~
#pwd

/root

3. GeoIP 모듈 다운로드

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

4. GeoIP 버전체크

라엘이의 경우는 1.4.6 이었다.

# ls -l | grep GeoIP-

drwxr-xr-x 8  501 root    4096 2009-02-25 10:44 GeoIP-1.4.6

5. 설치

# cd GeoIP-1.4.6/
# ./configure
# make
# make install

6. 설치파일 제거

# cd ~
# rm -rf GeoIP-1.4.6/

7. GeoIP 모듈설정

#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 Apache GeoIP 아파치 모듈설치

#apt-get install libapache2-mod-geoip

 

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

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

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

 

7-2. Apache GeoIP 모듈 활성화

#a2enmod geoip

8. Apache2 재시작

/etc/init.d/apache2 restart

이 상태에서 서버는 GeoIP 를 지원합니다.
phpinfo 파일을 만드셔서  웹페이지에서 보시면

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

위의 변수는 $_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 그룹에 있는 요청은 허용
--

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

2 Comments

  1. 안녕하세요. 아래 한국 코드외에 구글이나 빙등의 검색사이트 ip를 추가하려면 어떻게 해야 하나요?

    Options FollowSymLinks MultiViews
    AllowOverride FileInfo
    Order deny,allow
    SetEnvIf GEOIP_COUNTRY_CODE KR AllowCountry
    Deny from all
    Allow from env=AllowCountry

    1. http://www.robotsgenerator.com/ 를 통해 사이트의 robots.txt 를 작성한 후 검색엔진을 차단해보세요.
      IP 차단은 어렵습니다.

Leave a Comment

작성하신 댓글은 관리자의 수동 승인 후 게시됩니다.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>
*
*