iptables + 스크립트를 이용한 중국 IP 차단

by 조쉬 posted Feb 27, 2014
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄
만약 서비스중인 서버가 중국으로부터 접속될 경우가 없다면 과감히 중국발 ip를 막아버려서 보안의 많은 부분을 매꾸자~
 
iptables의 geoip 모듈을 이용해서 국가별 ip 차단을 위해선 일단 커널패치를 하고, 커널컴파일을 해야하는 번거러움이 있다. 물론 커널패치와 컴파일을 하지않구서도 하는 방법이 있긴하지만 아래방법은 더 간편(어찌보면 무식)하게 시스템을 reboot하지 않구도 바로 적용할 수 있는 방법이다. iptables의 iprange 옵션을 통해 이루어 지며 일단은 국가별 ip대역 DB를 확보해야 한다.
국가별 최신 IP대역 DB 받는 곳 :
http://geolite.maxmind.com/download/geoip/database/
 
위 사이트에서 GeoIPCountryCSV.zip 파일을 다운 받는다.
임의의 /root/ 디렉토리에 위 파일을 압축해제한다.
압축을 해제하면 GeoIPCountryWhois.csv
그리고 같은 디렉토리내에 아래와 같은 간단한 쉘스크립트를 작성하고 스크립트파일은 실행권한을 준다.
[root@Test-local script]# vi geoip-China.sh
--------------------------------------------------------------------------------------
#!/bin/bash
DATA=/root/GeoIPCountryWhois.csv
IPT=/sbin/iptables

for IPRANGE in `egrep "China" $DATA | cut -d, -f1,2 | sed -e 's/"//g' | sed -e 's/,/-/g'`
do
        $IPT -A INPUT -p all -m iprange --src-range $IPRANGE -j DROP
done

---------------------------------------------------------------------------------------
 
차단하고싶은 국가 네임을 찾아서 "China" 국가명만 바꿔주면 다른나라도 차단가능하다.
 
 
만든 geoip-China.sh  권한을 700 으로주고  실행시켜준다. 그리고 iptables -L 해서 확인해본다.