iptables를 이용하여 국가별 IP 차단하는 방법
컨텐츠 정보
- 24,242 조회
- 3 댓글
- 0 추천
- 목록
본문
관련 링크를 참조하여 작성합니다.
iptables의 경우 geoip와 연계하여 나라이름만 지정하면 바로 차단하는 방법이 제일 쉽습니다.
다만 그 방법 쉽지않고 그나마 있는 방법도 외국 친구들이 작성한 것이 대부분이기 때문에
포고플러그에서 잘 되는 방법은 찾기어렵더라구요.
몇가지 시도해봤는데 모두 실패했습니다.
그래서 더 찾아보니 그냥 차단하고 싶은 나라별로 IP를 차단하는 방법을 올려놓은 블로그가 있어
관련 링크로 올렸습니다.
1. 나라별 IP주소가 담긴 파일을 다운 받기
http://geolite.maxmind.com/download/geoip/database/GeoIPCountryCSV.zip
위 링크를 클릭하면 자동으로 받아집니다.
압축을 풀고 포고플러그 내에 적당한 곳에 저장합니다.
저의 경우 포고에
/etc/geo/GeoIPCountryWhois.csv
이런 경로로 저장했습니다.
그리고 첨부된 GeoIPCountryWhois_nation.csv 파일을 보시면 각 나라별 정확한 이름이 나옵니다.
그리고 cfcr.sh 첨부된 파일을 다운 받아서 열면
# ADD BLOCK TARGET LIST
BLOCK_TARGET_COUNTRY="CN|FR|CL|RU"
위와 같이 빨간 부분에 추가 및 뺄 수 있습니다.
나라 이름은 위와 같이 적어도 되고 아니면 풀네임 적어도 되는데
띄어쓰기 되어 있는 나라들은 풀네임이 안되더군요. 러시아의 경우 그렇습니다.
그리고 관련 링크를 보시면 차단하는 방법 뿐만 아니라 허용만 하는 방법도 있으니 참고 바랍니다.
2. 그리고 cfcr.sh파일과 GeoIPCountryWhois.csv 파일을 같은 곳에 넣고
그 해당 폴더에 가서 (저의 경우 /etc/geo)
sh cfcr.sh
를 하면 실행되는데
########## IP BLOCK Script START ###########
IPTABLES INIT SUCCESS
BLOCK LIST FILE = ./GeoIPCountryWhois.csv
위와 같이 나오고 좀 오래걸립니다. 1-2분 정도 멈춰있는데 포고가 멈춘게 아니고
cvs 파일이 6메가 가까이 돼서 읽는데 오래걸리는 겁니다.
그리고 좀 기다리면 스크롤이 쫙~~~~ 되면서
DROP all -- anywhere anywhere source IP range 1.12.0.0-1.15.255.255
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
################## IP BLOCK Script END #############
이런 식으로 나옵니다.
그러면 된거고요
혹시 fail2ban 실행하고 있었다면
iptable이 초기화되면서 그 규칙들이 다 없어집니다.
그 때
service fail2ban restart
하시고
iptable -nvL
하면 스크롤 쫙~~~ 되면서 fail2ban에 정해둔 규칙이 추가가 된걸 볼 수 있습니다.
그리고 재부팅하면 적용한 것이 다 사라지니 참고해주세요.
# 근데 이걸 적용하고 나니 포고가 좀 힘들어하는군요..(느려지네요)
왠만하면 그냥 fail2ban + 외부포트번호 변경으로도 괜찮으니 그렇게 해야겠습니다.
-
등록일 2014.08.31
-
등록일 2013.07.26
-
등록일 2013.07.19
-
등록일 2013.07.17
관련자료
-
서명우성짱의 NAS를 운영하고 있습니다.
저의 즐거움이 여러분의 즐거움이면 좋겠습니다.
-
링크
-
첨부등록일 2013.07.16 23:21등록일 2013.07.17 00:02