iptables-connlimit & geoip 설치설정

by ADMINPLAY posted May 28, 2009
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

Kernel 2.6.22 geoip, connlimit적용
SMILESERV
Jump to: navigation, 찾기
1. patch-o-matic-ng, iptables, 커널 소스, geoip-match-patch 다운로드

  patch-o-match-ng  --> ftp.netfilter.org/pub/patch-o-matic-ng/snapshot/
  IPTABLES  --> ftp.netfilter.org/pub/iptables
  KERNEL  --> ftp.kernel.org/pub/linux/kernel
  geoip-match.patch -->http://bjerkeset.com/patches/geoip-match-2.6.22.patch.gz
  * 되도록 /usr/src로 해당 파일들을 위치시키는 것이 오류가 나지 않음
     커널 make시에 용량이 커지므로 /usr 파티션 용량이 모자랄경우 다른 파티션에 커널 이미지를 풀고
     ln -s 커널이미지경로 /usr/src/linux로 심볼릭 링크를 걸어준다.

 

2. geoip, connlimit 커널에 패치

tar xfz patch-o-matic-ng-XXXXXX.tar.gz

cd patch-o-matic-ng

IPTABLES_DIR=/usr/src/iptables KERNEL_DIR=/usr/src/linux ./runme --download --> patch-o-matic에서 geoip 및 기타 다른 패키지를 자동으로 다운로드 하여 설치

IPTABLES_DIR=/usr/src/iptables KERNEL_DIR=/usr/src/linux ./runme geoip --> 커널에 geoip 패치

IPTABLES_DIR=/usr/src/iptables KERNEL_DIR=/usr/src/linux ./runme connlimit --> 커널에 connlimit 패치

cd /usr/src/linux/net/ipv4/netfilter/

cp /usr/src/geoip-match-2.6.22.patch /usr/src/linux/net/ipv4/netfilter/

patch -p1 < geoip-match.patch --> 위 명령 실행시 패치 할 원본 파일을 묻게되며 원본 파일은 ipt_geoip.c를 입력해야 하며 커널 2.6.22는 ipt_geoip.c를 패치해 주어야 make에서 오류가 발생하지 않음

 


3. 커널 컴파일 --> 커널 컴파일 관련 모든 명령은 커널소스 디렉토리 내에서 실행해야함

3-1 make memuconfig 아래 항목에서 geoip 및 connlimit선택, connlimit의 경우 해당 Netfilter Configuration 하위 메뉴에 있는 모든 메뉴를 선택해 주어야 make상에서 오류가 발생하지 않음 -> Device Drivers -> Networking support -> Networking support -> Networking options -> Network packet filtering (replaces ipchains) -> IP: Netfilter Configuration -> [*] geoip match support

3-2 make --> 커널 버전 변동없이 geoip만 추가 할 경우는 아래의 순서로 컴파일을 진행함

     make oldconfig
     make modules
     make modules_install
3-3 make modules

3-4 make modules_install

3-5 make install

 


4. 국가 DB 최신 정보로 업데이트

geoip 모듈은 /var/geoip 경로의 DB파일 참조함
- CSV 파일 변환 wget http://people.netfilter.org/peejix/geoip/tools/csv2bin-20041103.tar.gz tar zxfp csv2bin-20041103.tar.gz cd csv2bin make


- 국가별 DB 다운로드 wget http://www.maxmind.com/download/geoip/database/GeoIPCountryCSV.zip unzip GeoIPCountryCSV.zip ./csv2bin ../GeoIPCountryWhois.csv mkdir /var/geoip cp geoipdb.bin /var/geoip/ cp geoipdb.idx /var/geoip/

cp /usr/src/iptables/iptables /sbin -> iptables 소스파일의 iptables를 /sbin으로 복사


5. IPTABLES geoip 룰 적용

  예제)
  - 일본과 미국에서의 웹 접속을 차단하고 다른 곳에서의 접속은 허용할 때
  iptables -A INPUT -p tcp --dport 80 -m geoip --src-cc JP,US -j DROP
  iptables -A INPUT -p tcp --dport 80 -j ACCEPT
 
 
  - 한국에서의 ftp만 허용하고 나머지 국가에서의 접속은 차단하고자 할 때
  iptables -A INPUT -p tcp --dport 21 -m geoip --src-cc KR -j ACCEPT
  iptables -A INPUT -p tcp --dport 21 -j DROP
  또는 iptables -A INPUT -p tcp --dport 21 -m geoip ! --src-cc KR -j DROP