본문 바로가기

IT 내용 정리

홈서버 운영 - 해외 IP를 차단해보자!

728x90
반응형
SMALL

https://www.boannews.com/media/view.asp?idx=34850

 

‘해외 IP 차단 설정’으로 해킹 통로를 막아라!

최근 포털 사이트 네이버(Naver)의 정보보호 기능에서 ‘해외 IP 차단 설정’ 베타 기능이 추가됐다. 이 ‘해외 IP 차단 설정’ 기능을 이용하기 위해서는 네이버 계정에 로그인한 후,‘내 정보 → 내 정보보호’ 메뉴를 클릭하면 ‘로그인 현황 관리 → 해외 IP 차단 설정’ 메뉴에 접근할 수 있다.

www.boannews.com

"해외 IP 통한 해킹, 개인정보 유출 사례 빈번... 보안 효과 높일 수 있어.."

 

이 글귀를 보자마자 얼른 중국의 IP는 차단해야 한다는 신념이 생겼다.

 

나처럼 


Ubuntu 18.04 LTS


기반 홈 서버를 운영하는 사람에게 있어서는 꼭 해야 할거 같았다.

 

1. 먼저 이 사이트에 들어가자!

http://www.maxmind.com/download/geoip/database/GeoIPCountryCSV.zip

불러오는 중입니다...

다운로드 GeoIPCountryCSV.zip 하고 싶다만...

404가 뜬다. 이런. 파일이 없어진 듯하다.

https://dev.maxmind.com/geoip/geoip2/geolite2/

 

GeoLite2 Free Downloadable Databases « MaxMind Developer Site

GeoLite2 Free Downloadable Databases GeoLite Legacy databases were discontinued on January 2, 2019. Learn more. Databases GeoLite2 databases are free IP geolocation databases comparable to, but less accurate than, MaxMind’s GeoIP2 databases. The GeoLite2 C

dev.maxmind.com

대신 이게 존재했다.

사이트 들어가서 저 빨간 부분 다운로드

다운로드하면 아래의 파일들이 보인다.

zip 압축 해제 후

기존에 내가 가지고 있던 형식은 두 번째 꺼인데. 아까 사이트 들어가서 보았듯. 404가 뜨는 걸 보니 없어진 듯!


csv 파일 형식이 두 가지로 확인됨.


<첫 번째 형식>
http://ip-to-country.webhosting.info/downloads/ip-to-country.csv.zip
ip-to-country.csv 파일 형식
"121195328","152305663","US","USA","UNITED STATES"

 
<두 번째 형식>

http://www.maxmind.com/download/geoip/database/GeoIPCountryCSV.zip
GeoIPCountryWhois.csv 파일 형식
"begin_ip","end_ip","begin_num","end_num","country code","country name"
"68.0.0.0","68.20.102.255","1140850688","1142187775","US","United States"


당연히 우리가 압축 해제 한 zip 파일 내용물의 csv 파일 형식은 첫 번째 형식이다.

그래서 기존 CSV 형식으로 컨버팅 해주는 스크립트가 있다! 와

https://github.com/mschmitt/GeoLite2xtables

 

mschmitt/GeoLite2xtables

Converter from GeoLite2 country database to legacy GeoIP CSV, for use with xtables-addons - mschmitt/GeoLite2xtables

github.com

하지만... 어렵다.

그냥 ㅋㅋ

https://lifestream.kr/89

 

리눅스 해외IP 차단하기~

리눅스 해외 IP 차단하기 우선은 아래 링크에서 국가별IP목록이 있는 파일을 받아줍니다. 쉘 스크립트 작성 (특정 국가 차단용) 파일을 받았으면 리눅스의 특정 폴더에 복사한 후 VI편집기를 이용해서 아래와 같..

lifestream.kr

이분 블로그를 참조하기로 했다! 캬~

다운로드 이거 찾으시길

이걸 눌러서 다운로드하면 아까 404 페이지에 있어야 할 원래 자료(GeoIPCountryCSV.zip)가 있다!!?


이 주소를 긁어다 우분투 터미널에 특정 폴더에 친다.

wget https://lifestream.kr/attachment/cfile23.uf@99A7A0375BAB03D5087AC8.zip 

unzip cfile23.uf@99A7A0375BAB03D5087AC8.zip 

wget https://lifestream.kr/attachment/cfile23.uf@99A7A0375BAB03D5087AC8.zip 
unzip cfile23.uf@99A7A0375BAB03D5087AC8.zip 

따라 하면 GeoIPCountryWhois.csv가 나온다.

(sudo rm -rf cfile23.uf@99A7A0375BAB03D5087AC8.zip 하는 센스)

블로그에 있는 CSV 파일


그리고 쉘 스크립트를 작성해준다.

이름은 banip.sh 정도면 충분하다.

#!/bin/sh

# iptables init

sudo iptables -P INPUT ACCEPT

sudo iptables -F

echo "IPTABLES INIT SUCCESS"



BLOCK_LIST_FILE=./GeoIPCountryWhois.csv

echo "BLOCK LIST FILE = $BLOCK_LIST_FILE"



# ADD BLOCK TARGET LIST

ALLOW_TARGET_COUNTRY="Korea"



# REGIST BLOCK IP FOR LOOP

for IP_BANDWIDTH in `egrep -v $ALLOW_TARGET_COUNTRY $BLOCK_LIST_FILE | awk -F, '{print $1, $2}' | awk -F\" '{print $2"-"$4}'`



do

echo "STARTING!!"

sudo iptables -I INPUT -p all -m iprange --src-range $IP_BANDWIDTH -j DROP

done



sudo iptables -L
출처: https://lifestream.kr/89 [Lifestream]

 

복붙 후에 특정 폴더 안에 저 두 개 파일이 같이 있어야만 스크립트가 동작한다!

sudo sh banip.sh

를 해서 스크립트를 실행하자.

동작중인가보다..

과하게 STARTING!! 이 떠서 놀랐다. 놀랍게도 1분이 넘게 STARTING!!이 찍히고 있었다.

참 설명이 부족했는데 저 코드는 놀랍게도 한국을 제외한 전 세계 모든 해외 IP를 차단하는 코드이다.

중국만 차단하는 코드는 여기

#!/bin/bash
DATA=./GeoIPCountryWhois.csv
IPT=/sbin/iptables
// 차단할 국가 China
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
출처: https://lifestream.kr/89 [Lifestream]

 

모든 작업이 끝난 뒤 sudo iptable -L 을 치면 차단한 리스트들이 뜰 것이다.

여기까지가 해외 IP 사전에 밴 때려버리는 방법 소개 글이다.

정신없는 글 읽어주시느라 감사드립니다!!


여담으로 모든 해외 IP 차단 코드는 10분째 STARTING!! 이 찍히고 있다.

끝나는 즉시 여기에 몇 분 걸렸는지 적을 것이다.

결과

너무 오래걸려서 적당히 돌아가는거 보고 Ctrl + C 해주었다.

그리고 sudo iptable -L 명령어를 쳤는데

쫘아아아아악 나왔다. IP들이.

이정도 차단 했으니 괜찮겠지요?ㅎㅎㅎ

반응형
LIST