[IT 알아보기]/IT 소식

GeoIP, iptables 로 국가별 접속 제한하기

이호스트ICT 2013. 11. 6. 00:50

GeoIP에는 국가별 IP대역에 대한 database가 담겨 있습니다. 이를 각 패키지 모듈에 적재하여 여러 방법으로 접속제한 및 속도향상, 등 여러가지 재미있는 구성을 해 볼 수 있습니다. 이번 포스팅에는 iptables에 모듈 적재하여 국가별로 접속을 제한하는 방법에 대해 설명 해 보고자 합니다.

 

GeoIP의 경우 공식적인 모듈 업데이트가 몇년 전에 중단 된 것으로 알고 있어 구 버전 OS를 사용하는 경우가 있으나

이를 위해 최신 OS 커널에 작업을 해보겠습니다.

 

##설치환경

- CentOS 6.4 Final 64bit.

- kernel 2.6.32

 


#컴파일러 설치, 커널컴파일, 필요 패키지 설치, iptable 패치
yum install gcc gcc-g++ make automake unzip zip xz kernel-devel-'uname -r' iptables-devel

 

#rpm 모듈 설치
rpm -i http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.i686.rpm

 

#파일 라이브러리 설치
yum install perl-Text-CSV_XS


#iptables 에드온 설치

cd /usr/src

wget http://downloads.sourceforge.net/project/xtables-addons/Xtables-addons/1.37/xtables-addons-1.37.tar.xz

tar xvf xtables-addons-1.37.tar.xz

cd xtables-addons-1.37

./configure && make && make install


#geoip DB 다운 및 모듈적재

cd geoip

./xt_geoip_dl

./xt_geoip_build GeoIPCountryWhois.csv

mkdir -p /usr/share/xt_geoip/

cp -r {BE,LE} /usr/share/xt_geoip/

cd /lib64/xtables/

cp libxt_geoip.so libipt_geoip.so

 

#iptables 정책 적용

(국내 IP만 22번 포트 허용)
iptables -A INPUT -p tcp --dport 22 -m geoip --src-cc KR -j ACCECP

service iptables save

service iptables restart

 

 

ehostidc by KMY