악의 축 2나라 광대역 차단하기 쉘스크립트

Post Reply
gpgugp
Site Admin
Posts: 20
Joined: Sat Aug 02, 2025 8:36 am

악의 축 2나라 광대역 차단하기 쉘스크립트

Post by gpgugp »

이 스크립트는 중국과 북한의 IP 주소를 차단하는 작업을 자동화한 스크립트입니다. **UFW (Uncomplicated Firewall)**을 사용하여 이들 국가의 IP 주소를 차단합니다. 각 구문별로 어떻게 동작하는지 설명하겠습니다.

스크립트 로직:
1. 최신 국가별 IP 리스트 다운로드 (Github firehol):

wget -q https://raw.githubusercontent.com/fireh ... _cn.netset -O /tmp/china_ips.txt
wget -q https://raw.githubusercontent.com/fireh ... _kp.netset -O /tmp/northkorea_ips.txt
wget: 인터넷에서 파일을 다운로드하는 명령어입니다.

-q: wget 명령어에서 "quiet mode"를 활성화하여 출력 메시지를 최소화합니다.

-O: 파일을 저장할 경로를 지정합니다. //url 끝에 -O /저장할디렉토리

https://raw.githubusercontent.com/fireh ... _cn.netset: China(중국)의 IP 리스트를 Github에서 다운로드하여 /tmp/china_ips.txt에 저장합니다.

https://raw.githubusercontent.com/fireh ... _kp.netset: North Korea(북한)의 IP 리스트를 Github에서 다운로드하여 /tmp/northkorea_ips.txt에 저장합니다.

2. 주석(#) 제거해서 클린 리스트로 저장:

grep -v "^#" /tmp/china_ips.txt > /tmp/china_ips_clean.txt //진정한 리눅서라면 grep 명령어를 잘써야 함 매우 상당히 유용함 특정문자열 찾는데 쵝오
grep -v "^#" /tmp/northkorea_ips.txt > /tmp/northkorea_ips_clean.txt
grep -v "^#": grep 명령어는 파일 내에서 패턴을 찾고 해당 패턴을 출력합니다. -v는 반대의 의미로, 주어진 패턴을 제외한 모든 라인을 출력합니다.
//grep -v 옵션이 반대의 의미 주어진 패턴 grep -v "^#의 의미 = ^는 행의 시작을 의미한다. #은 리눅스에서는 주석으로 사용된다 따라서 ^#은 행의 시작부분에
#이 있는 패턴을 의미 에디터 열어보면 대부분 행시작부분에 #이 있음 하지만 -V가 앞에 붙었으니 반대로 해석해야함 행의 시작점에 #으로 시작되는 행을 제외한
나머지 라인을 출력하라는 의미임

^#는 라인의 시작 부분에서 주석(#)을 찾습니다. 따라서 주석을 제거하고, IP 주소만 필터링하여 출력합니다.

**/tmp/china_ips_clean.txt**와 **/tmp/northkorea_ips_clean.txt**에 각각 주석이 제거된 깨끗한 IP 리스트를 저장합니다.

3. 중국 IP 차단:

echo "중국 IP 차단 시작..."
while read ip; do
echo "중국 IP 차단: $ip"
sudo ufw deny from $ip
done < /tmp/china_ips_clean.txt
echo "중국 IP 차단 시작...": 스크립트가 중국 IP 차단을 시작한다고 출력합니다.

while read ip; do ... done < /tmp/china_ips_clean.txt:
/tmp/china_ips_clean.txt 파일에서 한 줄씩 읽어서 ip 변수에 저장합니다.
각 IP에 대해 반복하면서 ufw deny from $ip 명령어를 실행하여 해당 IP를 차단합니다.
sudo ufw deny from $ip:
ufw는 Uncomplicated Firewall의 약자로, Ubuntu 시스템에서 사용되는 간단한 방화벽 관리 도구입니다.
deny from $ip: 주어진 IP 주소로부터의 접근을 차단합니다. $ip는 china_ips_clean.txt 파일에서 읽어들인 IP 주소입니다.
echo "중국 IP 차단: $ip": 차단 중인 IP 주소를 출력하여 차단 과정을 알립니다.

//ufw 요즘 우분투서버에서 많이 쓰는 방화벽 데몬이지 상당히 간편하게 사용할수 있음 문법이 간단함


4. 북한 IP 차단:

echo "북한 IP 차단 시작..."
while read ip; do
echo "북한 IP 차단: $ip"
sudo ufw deny from $ip
done < /tmp/northkorea_ips_clean.txt
echo "북한 IP 차단 시작...": 스크립트가 북한 IP 차단을 시작한다고 출력합니다.

while read ip; do ... done < /tmp/northkorea_ips_clean.txt:
/tmp/northkorea_ips_clean.txt 파일에서 한 줄씩 읽어서 ip 변수에 저장합니다.
각 IP에 대해 반복하면서 ufw deny from $ip 명령어를 실행하여 해당 IP를 차단합니다.
sudo ufw deny from $ip:
ufw를 사용하여 북한 IP를 차단합니다.
echo "북한 IP 차단: $ip": 차단 중인 북한 IP 주소를 출력합니다.
5. 전체 완료 메시지 출력:

echo "중국·북한 IP 전체 차단 완료!"
스크립트가 중국과 북한의 모든 IP를 차단한 후, 차단 완료 메시지를 출력합니다.

전체 로직 요약:
중국과 북한의 IP 리스트를 Github에서 다운로드합니다.
각 리스트에서 **주석(#)**을 제거하여 깨끗한 IP 리스트를 만듭니다.
중국 IP를 한 줄씩 읽고, 각 IP를 UFW 방화벽을 사용해 차단합니다.
북한 IP도 마찬가지로 차단합니다.
모든 차단 작업이 완료되었음을 출력합니다.
이 스크립트는 자동화된 국가별 IP 차단을 수행하는 데 유용하며, 특히 중국과 북한의 IP 주소를 차단하려는 상황에서 유용합니다.
Post Reply