https://www.boannews.com/media/view.asp?idx=34850
"해외 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/
대신 이게 존재했다.
다운로드하면 아래의 파일들이 보인다.
기존에 내가 가지고 있던 형식은 두 번째 꺼인데. 아까 사이트 들어가서 보았듯. 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
하지만... 어렵다.
그냥 ㅋㅋ
이분 블로그를 참조하기로 했다! 캬~
이걸 눌러서 다운로드하면 아까 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 하는 센스)
그리고 쉘 스크립트를 작성해준다.
이름은 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들이.
이정도 차단 했으니 괜찮겠지요?ㅎㅎㅎ
'IT 내용 정리' 카테고리의 다른 글
가트너 10대 기술 요약 및 정리 (0) | 2019.07.14 |
---|---|
금융권 보안 (0) | 2019.07.14 |
내가 랜섬웨어 유포자라면 어찌 했을까? (0) | 2019.07.14 |
Windows 10 기본 프로세스 조사 (2) | 2019.07.14 |
홈서버 운영 - fail2ban 을 써보자! (0) | 2019.06.11 |