1. 우선 기존의 iptables파일 백업합니다.
#cp /etc/sysconfig/iptables /etc/sysconfig/iptables_bak
2. http://dev.maxmind.com/geoip/legacy/geolite/ 에서 최신 국가별 DB 다운받기(CSV파일)
3. 정책 설정용 스크립트 만들기
#vi cnIP-filter.sh
#!/bin/bash
DATA=/usr/local/script/GeoIPCountryWhois.csv
IPT=/sbin/iptables
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
# 기본 정책을 설정합니다
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
# localhost 접속 허용
iptables -A INPUT -i lo -j ACCEPT
# established and related 접속을 허용
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#특정국가 ip차단(중국)
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
4. 생성한 스크립트 파일 퍼미션 조정
#chmod 700 ./cnIP-filter.sh
5. 룰셋 적용하기
#/etc/rc.d/init.d/iptables stop
#iptables -F (기존 룰셋 초기화)
#./cnIP-filter.sh
#iptables -L | grep range | wc -l (적용된 룰셋 카운팅)
#/etc/rc.d/init.d/iptables save 명령을 통해 파일로 저장 후
해당 파일에 백업했던 기존 룰셋 추가로 적용합니다.
--------------------------------------------------------------------------
#중국만 접속 허용하는 경우 스크립트 파일입니다.
#!/bin/bash
DATA=/usr/local/script/GeoIPCountryWhois.csv
IPT=/sbin/iptables
iptables -F
iptables -A INPUT -p tcp -m tcp --dport 2211 -j ACCEPT
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
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 ACCEPT
done