서버 운영 관리 [ Tip ]

iptables 국가아이피 차단하기

 

iptables는 리눅스 방화벽 도구이며 시스템에 들어오고 나가는 패킷을 필터링 하는 기능을 한다.

원래 기능은 IP 와 PORT 를 기반으로 하여 패킷을 필터링 하는거였지만 최근에는 다양한 모듈과 연동하여 확장된 기능 또한 제공하고 있다.

그 중 하나가 GEOIP 인데 iptables 와 연동하여 국가별 아이피를 필터링 할 수 있다.

GEOIP 는 MAXMIND 에서 제공하는 설치 모듈과 국가별 아이피 데이터베이스 형태로 배포된다.

 

 

MAXMIND 공식 홈페이지

https://www.maxmind.com/en/home

 

본 문서에서는 iptables 에 geoip 모듈을 연동하여 국가 아이피를 차단하는 셋팅과 설정을 간단히 알아본다.

 

물론 IWINV 에서 제공하는 방화벽 에서도 국가 아이피 차단이 가능하지만 제어 할 수 있는 국가별 아이피가 한정되어 있다.

좀 더 세부적이고 많은 국가를 필터링 하고 싶다면 서버에 geoip 를 설치하여 운영하는것이 효율적이다.

 

iptables에 대한 간략한 설명은 '여기' 를 클릭하여 IWINV 문서를 참고 할 수 있다.

 

Centos 5 에서는 iptables에 geoip 를 연동 절차가 복잡했었는데  Centos 6 이후 버젼은 비교적 간단하게 연동이 가능하다.

 

 

테스트 환경

HW : 리얼서버, 가상서버 환경

OS : CentOS6 - 64bit

Kernel : 2.6.32 기반

참고사항 : kernel 버젼에 따라 geoip 설치 다운로드 버젼이 달라진다.

 

 

 

iptables + geoip 연동하기


 

 

1. Text-CSV_XS 설치

$ rpm -i http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.i686.rpm

$ yum install perl-Text-CSV_XS

: GEOIP 데이터베이스 CSV 파일을  리눅스에서 사용할 수 있도록 컨버팅 할때 사용되는 도구

 

 

2. xtables-addons 1.4.2 설치

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

$ tar xvf xtables-addons-1.42.tar.xz

$ cd xtables-addons-1.42

 

 

3. mconfig 파일 수정

build_geoip=m

  

 

4. 컴파일 및 설치

$ ./configure && make && make install

 

 

5. GEOIP 데이터베이스 파일 설치

$  cd geoip/
$ ./xt_geoip_dl
$ ./xt_geoip_build GeoIPCountryWhois.csv
$ mkdir -p /usr/share/xt_geoip/
$ cp -r {BE,LE} /usr/share/xt_geoip/

∗ GeoIPCountryWhois.csv 파일은 수시로 업데이트 되며 위 과정을 주기적으로 실행하는것이 좋다.

∗ 위 과정 후에는 반드시 iptables 재시작해야지만 변경된 국가별 데이터베이스가 적용 된다.

 

 

6. geoip + iptables 연동 테스트

# 중국차단

$ iptables -A INPUT -m geoip --src-cc CN -j DROP

 

# 중국차단 정책 삭제

$ iptables -D INPUT -m geoip --src-cc CN -j DROP

∗ 실행시 아무런 메세지가 나오지 않는다면 정상적으로 입력된것이다. 

 

 

사용 방법은 아래와 같이 iptables 에 모듈 형태로 사용이 가능하며 국가코드만 바꿔서 사용이 가능하다.

# 출발지 중국 아이피 (중국에서 내 서버로 오는 패킷을 처리하기 위함) 

-m geoip --src-cc CN

 

# 도착지 중국 아이피 (내 서버에서 중국으로 가는 패킷을 처리하기 위함)

-m geoip --dst-cc CN

∗ geoip 를 사용하기 위해서는 iptables 에 대한 개념과 사용 방법을 알고 있는것이 유리하다

 

 

예전에는 특정 국가 아이피를 차단하려면 해당 국가 아이피를 모두 수집한다음 network 주소로 변환하여 처리하였다.

이런 경우 iptables 정책 라인이 너무 많아져 몇천줄 이상 필요한 경우가 있었다.

 

하지만 GEOIP를 사용하면 단 두개 라인처리로 국가별 차단이 가능하니 iptables 방화벽 성능과 관리에 아주 유용하다.

국가별 차단 기능이 꼭 필요한 사용자라면 반드시 설치하여 운영할 것을 권고한다.

 

  

 

관련링크


 

• geoip 국가코드 (http://idchowto.com/?p=17077)