Home Knowledge base Skyline Cloud UFW와 Fail2ban으로 리눅스 서버를 보호하는 방법 KNOWLEDGE BASE

UFW와 Fail2ban으로 리눅스 서버를 보호하는 방법

UFW 방화벽과 Fail2ban 침입 방지 도구로 리눅스 서버를 잠그는 실용적인 단계별 가이드입니다. 사용하지 않는 포트를 닫고, SSH 접속 속도를 제한하며, 무차별 대입 공격자를 자동으로 차단하세요.

UFW와 Fail2ban으로 리눅스 서버를 보호하는 방법

UFW 방화벽과 Fail2ban 침입 방지 도구로 리눅스 서버를 잠그는 실용적인 단계별 가이드입니다. 사용하지 않는 포트를 닫고, SSH 접속 속도를 제한하며, 무차별 대입(brute-force) 공격자를 자동으로 차단합니다.

무엇을 구축하게 되나요

인터넷에 공개된 모든 서버는 가동된 지 몇 분 안에 탐색을 당합니다. 자동화된 봇이 열린 포트를 스캔하고 SSH에 자격 증명을 끊임없이 추측해 시도합니다. 가볍고 검증된 두 가지 도구가 이런 공격의 대부분을 대신 처리해 줍니다.

  • UFW(Uncomplicated Firewall) — 어떤 포트를 열지 제어하는 iptables/nftables의 친절한 프런트엔드입니다.
  • Fail2ban — 로그 파일에서 반복되는 로그인 실패를 감시하여 문제를 일으킨 IP 주소를 일시적으로 차단합니다.

이 튜토리얼에서는 Debian 또는 Ubuntu 서버에서 두 도구를 모두 구성하는 과정을 다룹니다(다른 배포판에서도 명령어는 거의 동일합니다). 클라우드 서버, VPS, 전용 머신 어느 것을 운영하든 적용되며, 사우디아라비아의 VPS 및 클라우드 서버 지식 클러스터의 일부입니다.

사전 준비 사항

  • SSH로 접속할 수 있는 리눅스 서버.
  • sudo 권한이 있는 사용자(복구 수단 없이 노출된 연결에서 root로 작업하지 마세요).
  • SSH 포트(기본값은 22이며, 변경했다면 전체 과정에서 실제 값을 사용하세요).

경고: 방화벽 때문에 접속이 차단될 수 있습니다. UFW를 활성화하기 전에 SSH를 허용하는 규칙이 적용되어 있는지 반드시 확인하세요. 클라우드 제공업체를 사용한다면, 실수했을 때 복구할 수 있도록 해당 업체의 웹 콘솔이나 복구 접속 수단을 열어 두세요.

1단계 — UFW 설치 및 구성

UFW는 대부분의 Ubuntu 이미지에 기본 포함되어 있습니다. 필요하면 설치하세요.

sudo apt update
sudo apt install ufw

합리적인 기본값을 설정합니다. 들어오는 모든 트래픽은 거부하고, 나가는 모든 트래픽은 허용합니다.

sudo ufw default deny incoming
sudo ufw default allow outgoing

이것이 좋은 방화벽 태세의 핵심입니다. 명시적으로 허용하지 않는 한 어떤 것도 서비스에 도달하지 못합니다.

2단계 — 실제로 필요한 서비스만 허용하기

방화벽을 켜기 전에 서버가 사용하는 포트를 먼저 엽니다. 반드시 SSH를 먼저 허용하세요. 그렇지 않으면 연결이 끊깁니다.

sudo ufw allow OpenSSH

UFW는 /etc/ufw/applications.d에서 이름이 지정된 애플리케이션 프로필을 읽습니다. 사용 가능한 항목은 sudo ufw app list로 확인하세요. SSH 포트를 변경했다면 다음과 같이 명시적으로 허용하세요.

sudo ufw allow 2222/tcp

사이트나 비즈니스 이메일 및 웹 서비스를 운영한다면 웹 트래픽을 엽니다.

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

규칙을 신뢰할 수 있는 출처로 제한할 수도 있습니다. 예를 들어 애플리케이션 서버에서만 데이터베이스 접근을 허용하려면 다음과 같이 합니다.

sudo ufw allow from 10.0.0.5 to any port 3306 proto tcp

3단계 — SSH 속도 제한 및 방화벽 활성화

UFW의 limit 규칙은 30초 안에 6회를 초과해 연결을 시도하는 IP의 연결을 제한합니다. 무차별 대입 도구에 대한 저렴하고 효과적인 속도 제한 장치입니다.

sudo ufw limit OpenSSH

이제 방화벽을 활성화합니다.

sudo ufw enable

번호가 매겨진 목록으로 규칙을 확인합니다.

sudo ufw status numbered

예상 출력은 다음과 비슷합니다.

Status: active

     To                         Action      From
     --                         ------      ----
[ 1] OpenSSH                    LIMIT       Anywhere
[ 2] 80/tcp                     ALLOW       Anywhere
[ 3] 443/tcp                    ALLOW       Anywhere

규칙을 삭제하려면 해당 번호를 참조합니다. sudo ufw delete 2.

4단계 — Fail2ban 설치

UFW는 포트를 닫지만, 열어 두어야 하는 포트(예: SSH)는 여전히 추측 공격에 노출됩니다. Fail2ban은 로그를 감시하여 반복적으로 공격하는 대상을 차단합니다.

sudo apt install fail2ban

최신 시스템에서는 Fail2ban이 systemd를 통해 저널을 읽으므로 별도 설정 없이 바로 동작합니다. 서비스가 실행 중인지 확인하세요.

sudo systemctl status fail2ban

5단계 — jail.local 파일로 Fail2ban 구성

jail.conf를 직접 편집하지 마세요. 업그레이드 시 덮어쓰여집니다. 대신 로컬 재정의 파일을 만드세요.

sudo nano /etc/fail2ban/jail.local

다음 내용을 추가합니다.

[DEFAULT]
# Don't ban your own trusted networks. Add your office/home IP.
ignoreip = 127.0.0.1/8 ::1

# How long a ban lasts (10 minutes).
bantime  = 10m

# Time window for counting failures.
findtime = 10m

# Failures allowed before a ban.
maxretry = 5

# Tell Fail2ban to act through UFW.
banaction = ufw

[sshd]
enabled = true

[sshd] jail은 /etc/fail2ban/filter.d/sshd.conf에 있는 기본 제공 sshd 필터를 사용합니다. banaction = ufw로 설정하면 Fail2ban이 원시 iptables를 직접 건드리는 대신 기존 방화벽을 통해 거부 규칙을 삽입합니다.

적용하려면 재시작하세요.

sudo systemctl restart fail2ban

6단계 — 검증 및 모니터링

전체 상태와 SSH jail을 구체적으로 확인합니다.

sudo fail2ban-client status
sudo fail2ban-client status sshd

jail 상태에는 현재 실패한 IP와 차단된 IP가 표시됩니다.

Status for the jail: sshd
|- Filter
|  |- Currently failed: 1
|  |- Total failed:     23
|  `- File list:        /var/log/auth.log
`- Actions
   |- Currently banned: 1
   |- Total banned:     4
   `- Banned IP list:   203.0.113.42

특정 주소의 차단을 수동으로 해제하려면 다음과 같이 합니다.

sudo fail2ban-client set sshd unbanip 203.0.113.42

권장 기준 설정

설정 이유
UFW 기본 들어오는 트래픽 deny 기본적으로 차단
SSH 규칙 limit 무차별 대입 속도 저하
bantime 10m1h 반복 공격자에 대한 제재
maxretry 35 엄격하되 오타는 허용
ignoreip 관리자 IP 본인 접속 차단 방지

한 걸음 더

운영 서버라면 노출하는 모든 서비스(예: nginx-http-auth 또는 메일 스택)에 대해서도 jail을 활성화하고, 비밀번호 대신 SSH 키를 사용하며, 더 길거나 점증하는 bantime을 고려하세요. UFW와 Fail2ban은 강력한 기준선이지만 완전한 보안 프로그램은 아닙니다. 패키지를 항상 최신 상태로 패치하고 클라우드 백업으로 정기적으로 백업하세요.

워크로드를 자국 내(in-Kingdom)에서 호스팅하는 것은 성능뿐 아니라 PDPL, NCA, SDAIA의 데이터 주권 요건을 위해서도 중요합니다. Skyline Cloud는 사우디아라비아 내부에서 클라우드 서버, VPS, 전용 하드웨어를 운영하며 현지 아랍어 지원과 투명한 가격을 제공합니다.

강화된 서버를 배포할 준비가 되셨나요? Skyline Cloud 계정을 생성하고 몇 분 만에 VPS를 시작하세요.

SKYLINE Engineering

@skyline

The engineering team at SKYLINE Industrial Solutions. We publish field-tested guides drawn from real KSA and GCC deployments.

See author profile
SKYLINE engineering services

Need this implemented for you?

Reading is free — building it right takes a team. SKYLINE engineers ship Skyline Cloud for Aramco vendors, banks, hospitals and government agencies across Saudi Arabia. Talk to us before you start.

Aramco Approved Contractor ISO 9001 · ISO 27001 SAMA CSF aligned NCA ECC ready 247+ KSA clients

Comments

0 total · 0 threads
Be the first to leave a comment.