Linux 해외 아이피 접속 차단을 위한 ufw 방화벽 설정 방법

2025. 3. 2. 00:38·기타

개요


본가에 있는 MySQL 서버를 사용할 일이 있어서 서울에서 외부 접속을 시도하였는데 접속이 거부당했다.

본가에서 라즈베리파이를 확인하였더니 전원이 꺼져 있었다.

마지막으로 접속했을 때 poweroff 명령을 사용한 적도 없었고 무언가 문제가 발생하였다고 생각하여 ssh 접속 로그를 확인하였다.

수많은 공격 흔적들

로그를 보니 엄청나게 많은 brute force 공격 흔적이 있었다.

포트번호를 바꿔가며 접속을 시도하는 것을 보아하니 일단 외부 접속을 열어둔 IP라면 좀비 PC를 활용하여 무차별적으로 접속을 시도하는 것 같았다.

로그에 찍힌 IP 주소는 모두 해외였기에 이참에 해외 공격을 원천봉쇄해야겠다고 생각이 들었다.


한국 IP 대역 다운로드


우선 한국 IP만 허용해야 하기 때문에 한국의 IP 주소들을 다음 명령어를 통해 다운받는다.

COUNTRY="kr"
wget -O ${COUNTRY}.zone \
  https://www.ipdeny.com/ipblocks/data/aggregated/${COUNTRY}-aggregated.zone

 

ipdeny.com은 국가 IP를 무료로 다운받을 수 있는 사이트이다.

https://www.ipdeny.com/

 

IPdeny IP country blocks

  IPdeny offers country GEO IP address block downloads free of charge. Our country based IP zone files can be easily used in your applications and web sites to minimize on-line fraud, SPAM, floods and sometimes brute force attacks. IPdeny country IP block

www.ipdeny.com


ufw 방화벽 현재 보안설정 확인


해외 IP 접속 차단을 설정하기 전, 현재 설정해둔 방화벽 내용이 있을 수 있기에 확인이 필요하다.

다음 명령어를 사용하여 확인할 수 있다.

sudo ufw status verbose

해외 IP 차단하기


이제 다음 스크립트를 실행하여 해외 IP를 차단한다.

#!/bin/bash
COUNTRY="kr"
ZONE_FILE="${COUNTRY}.zone"

while read -r ipblock; do
    [[ -z "$ipblock" ]] && continue
    [[ "$ipblock" =~ ^# ]] && continue
    sudo ufw allow from "$ipblock" to any
done < "$ZONE_FILE"

sudo ufw reload

 

만약 기존에 설정해둔 ufw 규칙이 없거나, 기존 ufw 규칙을 초기화하고 진행하고 싶다면 다음 명령을 사용한다.

#!/bin/bash
COUNTRY="kr"
ZONE_FILE="${COUNTRY}.zone"

sudo ufw reset

sudo ufw default deny incoming
sudo ufw default allow outgoing

while read -r ipblock; do
    [ -z "$ipblock" ] && continue
    sudo ufw allow from "$ipblock" to any
done < "$ZONE_FILE"

sudo ufw enable

 

한국 IP 대역의 종류가 많기에 작업이 1~3분정도 소요된다.

설정된 보안 규칙

해당 작업을 통하여 한국 IP로만 공격이 가능한? 환경을 만들 수 있다.

또 다시 외부 공격으로 인해 파이가 꺼져버린다면 다른 방법으로 문제해결을 해봐야겠다.

 

'기타' 카테고리의 다른 글

호스팅 서버에서 Spring boot 프로젝트 배포하기  (0) 2025.03.28
자바스크립트의 스레드와 동시성 처리를 위한 이벤트 루프(Event Loop)  (0) 2025.03.19
Typescript 경로 모듈화, 경로 정규화 과정과 5.8.0 버전에서의 최적화  (2) 2025.03.03
Typescript 5.8.0의 조건부 반환 타입 검사 기능  (4) 2025.02.24
라즈베리파이 외부 ssh 접속을 위한 포트포워딩  (0) 2025.02.01
'기타' 카테고리의 다른 글
  • 자바스크립트의 스레드와 동시성 처리를 위한 이벤트 루프(Event Loop)
  • Typescript 경로 모듈화, 경로 정규화 과정과 5.8.0 버전에서의 최적화
  • Typescript 5.8.0의 조건부 반환 타입 검사 기능
  • 라즈베리파이 외부 ssh 접속을 위한 포트포워딩
MaKa_
MaKa_
이게 왜안될까요
  • MaKa_
    벌레 잡는 사람
    MaKa_
  • 전체
    오늘
    어제
    • 공부 (45)
      • CS (18)
        • 자료구조(data structure) (7)
        • 알고리즘(Algorithm) (6)
      • React (6)
      • React Native (2)
      • Next.js (5)
      • Backend (2)
      • 이야기 (3)
        • 회고 (2)
        • 일상 (1)
      • 기타 (7)
      • 알고리즘 문제 (2)
        • 백준 (0)
        • 프로그래머스 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
MaKa_
Linux 해외 아이피 접속 차단을 위한 ufw 방화벽 설정 방법
상단으로

티스토리툴바