Linux 게시판 - 국가별 ip / 국가별 ip차단

국가별 ip / 국가별 ip차단




출처 : http://blog.yesidc.co.kr/60208358834


안녕하세요.

YESIDC 입니다. 

 

오늘은 iptables 를 이용한 국가별 IP 차단 방법에 대해서 알아보겠습니다.

운영중인 서버를 해킹시도하는 sourece IP를 분석해 보면 중국발 IP가 대다수인 경우가 많습니다.

이에 서비스 중인 서버가 중국 또는 해외 특정 국가로부터 서비스 될 경우가 없다면 iptables 를 이용하여 접근을

차단할 수 있습니다.


iptables의 geoip 모듈을 이용해서 국가별 IP 차단을 위해선 커널패치를 하고, 커널컴파일을 해야 하는 번거로움이 있지만

아래와 같은 방법으로 간단한 쉘스크립트를 이용하여 시스템을 reboot하지 않고서도 바로 적용할 수 있습니다.


1. 국가별 IP대역 DB를 다운 받습니다.

http://geolite.maxmind.com/download/geoip/database/ --> GeoIPCountryWhois.csv 다운로드

 

 

[root@YESIDC hosting]# wget http://geolite.maxmind.com/download/geoip/database/GeoIPCountryCSV.zip

[root@YESIDC hosting]# unzip GeoIPCountryCSV.zip

Archive:  GeoIPCountryCSV.zip

  inflating: GeoIPCountryWhois.csv   

[root@YESIDC hosting]# ls GeoIPCountryWhois.csv 

 

GeoIPCountryWhois.csv


2. GeoIPCountryWhois.csv 파일을 이동시킵니다.

[root@YESIDC hosting]# mv GeoIPCountryWhois.csv /etc/rc.d/init.d/

 

3. 다음의 스크립트를 iptables 설정 파일에 추가합니다. (ex:중국과 타이완 차단)

[root@YESIDC hosting]# vi /etc/rc.d/init.d/iptables

 

   BLOCK_LIST_FILE=/etc/rc.d/init.d/GeoIPCountryWhois.csv

   echo "################### IP BLOCK Script for country START ############# "

   echo "BLOCK LIST FILE = $BLOCK_LIST_FILE"

   BLOCK_TARGET_COUNTRY="China|Taiwan"

   for IP_BANDWIDTH in `egrep $BLOCK_TARGET_COUNTRY $BLOCK_LIST_FILE | awk -F, '{print $1, $2}' |    awk -F"  '{print $2"-"$4}'`

   do

      iptables -I INPUT -p all -m iprange --src-range $IP_BANDWIDTH -j DROP

   done

 

   echo "################### IP BLOCK Script for country END ############# "

 

4. iptables 스크립트를 재실행 합니다.

[root@YESIDC hosting]# service iptables restart

iptables: Setting chains to policy ACCEPT: filter          [  OK  ]

iptables: Flushing firewall rules:                         [  OK  ]

iptables: Unloading modules:                               [  OK  ]

iptables: Applying firewall rules:                         [  OK  ]

################### IP BLOCK Script for country START ############# 

BLOCK LIST FILE = /etc/rc.d/init.d/GeoIPCountryWhois.csv       -----> 파일을 읽어오는데 다소 시간이 걸릴 수 있습니다.

################### IP BLOCK Script for country END ############# 

 

5. 적용된 iptables 정책을 확인합니다.

 [root@YESIDC hosting]# iptables -nvxL

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)

    pkts      bytes target     prot opt in     out     source               destination         

       0        0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0           source IP range 223.254.0.0-223.255.127.255 

       0        0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0           source IP range 223.240.0.0-223.251.255.255 

       0        0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0           source IP range 223.220.0.0-223.221.255.255 

       0        0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0           source IP range 223.208.0.0-223.215.255.255 

       0        0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0           source IP range 223.201.0.0-223.203.255.255 

       0        0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0           source IP range 223.200.0.0-223.200.255.255 

       0        0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0           source IP range 223.198.0.0-223.199.255.255 

       0        0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0           source IP range 223.192.0.0-223.193.255.255 

       0        0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0           source IP range 223.166.0.0-223.167.255.255 

       0        0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0           source IP range 223.165.8.0-223.165.15.255 

       0        0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0           source IP range 223.144.0.0-223.163.255.255 

       0        0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0           source IP range 223.136.0.0-223.143.255.255 

       0        0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0           source IP range 223.120.0.0-223.129.255.255 .

.

.

.

 

국가별 iprange 로 적용된 정책에 갯수를 아래와 같이 확인 할 수 있습니다.

[root@YESIDC hosting]# iptables -L | grep range | wc -l

2524



위와 같은 방법으로 스크립트를 응용하여 여라 국가별 IP에 대하여 접속 차단/해제 할 수 있습니다.

이상으로 iptables 를 이용한 국가별 IP 차단 방법에 대해서 알아보았습니다. geoip 모듈을 이용한 방법과 위 소개해드린 방법의

퍼포먼스 차이는 추후에 비교하여 소개해드리도록 하겠습니다. 




첨부파일


Blogging > Linux 's Other Contents

Linux 게시판 - 게시물리스트


국가별 ip / 국가별 ip차단 01/05
apache / php 기본 보안 세팅 07/18
vsftp 상위디렉토리 막을때... 2.3.5 버전에서 오류시 업그레이드한다 10/02
Linux 서버 시간설정 08/14
postfix 에서 특정 IP만 smtp 로그인 못하게 또는 로그인하게 설정 08/13

첫페이지 이전페이지  1 | 2 | 3 | 4 | 5 | 6   다음페이지 마지막페이지