Ubuntu GeoIP를 사용하여 외국트래픽차단하기
이 글에서는 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 파일을 만드셔서 웹페이지에서 보시면
다음 두가지 변수를 추가제공합니다.
위의 변수는 $_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 그룹에 있는 요청은 허용
--
즉 한국인만 접속가능한 사이트가 되며 보안에 상당한 도움이 됩니다.
안녕하세요. 아래 한국 코드외에 구글이나 빙등의 검색사이트 ip를 추가하려면 어떻게 해야 하나요?
Options FollowSymLinks MultiViews
AllowOverride FileInfo
Order deny,allow
SetEnvIf GEOIP_COUNTRY_CODE KR AllowCountry
Deny from all
Allow from env=AllowCountry
http://www.robotsgenerator.com/ 를 통해 사이트의 robots.txt 를 작성한 후 검색엔진을 차단해보세요.
IP 차단은 어렵습니다.