해외에서 접근하는 IP 차단하기

by ADMINPLAY posted Nov 30, 2009
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

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

특정 국가나 해외에서 시스템에 악의적으로 접근하는 IP를 iptables 을 이용하여 국가별로 차단할 수 있습니다.

1. 참조 문서
   The geoip match HOWTO (http://people.netfilter.org/peejix/geoip/howto/geoip-HOWTO.html#toc1)

2. 준비사항

    1) patch-o-matic 최신버전 받기
        http://ftp.netfilter.org/pub/patch-o-matic-ng/snapshot/

    2) geoip update 스크립트
        http://people.netfilter.org/peejix/geoip/tools/geoip_update.sh  

3. kernel 과 iptables에 geoip 패치 및 모듈 생성하기

    1) patch-o-matic-ng-xxxxxxxx.tar.bz2 를 압축을 풀고,

    2) ./runme --download 를 실행하여 geoip 소스를 가져와서

    3) ./runme geoip 를 실행하면 kernel과 iptables에 geoip 모듈소스가 설치됩니다.

    4) 이제 linux 디렉토리로 이동후 make menuconfig 실행하여

    5) Networking options --> IP:Netfilter Configuration --> <M>   geoip match support 선택후

    6) make modules 실행하면 /usr/src/linux/net/ipv4/netfilter/ipt_geoip.o 모듈이 생성됩니다.

    7) make modules_install 또는 ipt_geoip.o 을 /lib/modules/2.4.29/kernel/net/ipv4/netfilter/ 하에 복사합니다.

    8) 또 한 가지 iptables 소스위치에서 make 실행하면 libipt_geoip.so 이 생성됩니다.

    9) make install 또는 libipt_geoip.so 을 /usr/local/lib/iptables/ 하에 복사하면 방화벽 가동준비가 끝납니다.
    
4. geoip database 생성하기

    1) geoip_update.sh 내용중 아래의 내용을
        GEO_BIN="http://www.cookinglinux.org/geoip/db/geoipdb.bin"
        GEO_IDX="http://www.cookinglinux.org/geoip/db/geoipdb.idx"
        다음과 같이 수정합니다.
        GEO_BIN="http://people.netfilter.org/peejix/geoip/database/20050410/geoipdb.bin"
        GEO_IDX="http://people.netfilter.org/peejix/geoip/database/20050410/geoipdb.idx"

    2) geoip_update.sh 을 실행하면 /var/geoip/에 geoipdb.bin  geoipdb.idx  geoipdb.last 파일이 생성됩니다.

    3) 최신의 geoip database 는 아래 주소에서 얻을 수 있습니다.
        http://www.maxmind.com/download/geoip/database/    

    4) cvs2bin 툴을 이용하여 매월1일 업데이트 되는 geoip database를 생성합니다.
    
        (1) 툴 다운로드후 설치
        http://people.netfilter.org/peejix/geoip/tools/csv2bin-20041103.tar.gz
 
        (2) geoip database 생성후 /var/geoip/ 에 저장
        cvs2bin GeoIPCountryWhois.csv
        위의 명령 실행결과 geoipdb.bin  geoipdb.idx 파일이 생성됩니다.

5. ipt_geoip.o 모듈올리기

    1) insmod /lib/modules/XXXX/kernel/net/ipv4/netfilter/ipt_geoip.o

    2) lsmod 로 모듈이 로딩되었는지 확인합니다.

6. iptables 구문의 적정 위치에 룰셋을 추가후 messages 기록이나 아파치로그를 통하여 모니터링해 봅니다.

    1) 예로 국내를 제외한 모든 해외로부터의 시스템 접근 차단하기
         iptables -A INPUT -m geoip ! --src-cc KR -j DROP

    2) 중국 IP 대역으로부터 들어오는 ssh 접근 차단하기
        iptables -A INPUT -p tcp --dport 22 -m geoip --src-cc CN -j DROP