Tip & Tech

iptables를 이용하여 특정 국가 차단 또는 허용

event2018-10-10 2402 views

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

 

 

 

 

 

 

클립보드에 복사되었습니다.