바로 위에서는 중국 IP 차단 하는 방법에 대해서 알아봤다. 방법을 조금만 달리하면 한국내에서만 접속 가능하고, 다른 나라에서는 접속이 안되게 만들 수도 있다.
이렇게 세팅하면 yum update (배포판에 따라서는 apt-get update && apt-get upgrade) 등의 패키지 업데이트가 불가능할 수가 있으니, 그럴 땐 반드시
iptables -P INPUT ACCEPT iptables -F
를 입력해야 한다. 별 생각없이 iptables -F 로 했다가는 서버있는 곳으로 달려가야 한다. (모든 네트웍 접속이 막힌다.)
xtables-addons 사용법은 통일하니 중국 IP 차단 글을 참조하자. 저 글에서는 2.5 버전이 최신이라고 했는데, 얼마전에 2.6 이 나왔는데, 우리에게 필요한 건 xtables 가 아닌 그 안에 있는 geoip 부분인데, 달라진 게 없다. 물론, 웬만하면 최신 버전을 쓰는 것도 좋다.
#!/bin/sh DATA=/usr/src/xtables-addons-2.6/geoip/GeoIPCountryWhois.csv IPT=/sbin/iptables cd /usr/src/xtables-addons-2.6/geoip/ /usr/src/xtables-addons-2.6/geoip/xt_geoip_dl for IPRANGE in `egrep "Korea" $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 /sbin/iptables -P INPUT DROP
마지막 줄 때문에 저 위에 적은 iptables -F 를 입력하면 기본 모드가 DROP 이 되기 때문에 모든 네트웍이 막히게 된다. 그러니 주의하자.
이렇게 했는데, 외국에서 접속할 IP 가 있다면 ? 그럴 땐 마지막인 /sbin/iptables -P INPUT DROP 앞에다가
iptables -A INPUT -s 111.222.333.444 -j ACCEPT iptables -A INPUT -s 111.222.333.0/24 -j ACCEPT
정도로 접속할 IP 또는 IP 대역을 적어주면 된다. /sbin/iptables -P INPUT DROP 뒤에다가 적어주면 이미 막힌 상태이므로 안 열린다.
이렇게 한 다음에 /etc/cron.d/korea-ip-only 파일을 하나 만들자.
0 1 * * * root /opt/bin/korea-ip-only.sh
이렇게 하면 매일 새벽 1시에 geoip 자료를 다운로드 받아서 자동으로 iptables 로 업데이트를 해준다. 저렇게 설정한 뒤에 iptables-save 명령을 실행시켜보면 뭔가 쭉 올라간다. 다른 곳은 다 막히고 한국만 열린다..
2014/11/25 akpil