Contabo 서버 운영 (2) — UFW & Fail2Ban 보안 구성

INNOPER·2025년 3월 15일

5️⃣ UFW (Uncomplicated Firewall) 방화벽 설정 ⚙️

서버 보안의 기본은 필요한 포트만 열고 나머지는 모두 차단하는 것입니다.
이를 간단하게 도와주는 도구가 UFW(Uncomplicated Firewall) 입니다.


🔧 UFW 설치

sudo apt update
sudo apt install ufw -y

⚙️ 기본 정책 설정

(들어오는 건 모두 차단, 나가는 건 허용)

sudo ufw default deny incoming
sudo ufw default allow outgoing

🔐 SSH 포트 허용

SSH(22번 포트)를 막으면 서버에 접속할 수 없으니 반드시 허용해야 합니다.

sudo ufw allow OpenSSH

🌐 필요한 서비스 포트 열기

sudo ufw allow 80     # HTTP
sudo ufw allow 443    # HTTPS
sudo ufw allow 3000   # 개발용 포트 (Next.js 등)

🚀 방화벽 활성화

sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? → y

🧾 현재 상태 확인

sudo ufw status verbose

예시 출력:

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
80                         ALLOW IN    Anywhere
443                        ALLOW IN    Anywhere
3000                       ALLOW IN    Anywhere
80 (v6)                    ALLOW IN    Anywhere (v6)
443 (v6)                   ALLOW IN    Anywhere (v6)
3000 (v6)                  ALLOW IN    Anywhere (v6)

✅ 이렇게 설정하면
필요한 포트만 열고, 나머지 모든 외부 접근은 자동으로 차단됩니다.


6️⃣ Fail2Ban 설정 🔒

Fail2Ban반복된 로그인 실패나 의심스러운 접근을 자동으로 차단하는 보안 도구입니다.
UFW가 “포트 단위의 보안” 이라면, Fail2Ban은 “행동 기반 보안”에 가깝습니다.


🧠 Fail2Ban이 막을 수 있는 주요 공격

  • 🚫 SSH 브루트포스 공격 (비밀번호 계속 틀리기)
  • 🧱 웹 로그인 공격 (WordPress, phpMyAdmin 등)
  • 🔍 포트 스캔 시도 (여러 포트를 무작위로 탐색)

⚙️ 핵심 기능

  • 로그 모니터링: /var/log/auth.log 등의 시스템 로그 감시
  • 조건 설정: 예) 5분 내 5회 실패 시 → 10분간 IP 차단
  • 자동 차단: iptables, ufw 등과 연동
  • 알림 기능: 이메일, Discord, Slack 연동 가능

🧩 Fail2Ban 설치

sudo apt update
sudo apt install fail2ban -y

🧭 서비스 시작 및 자동 실행 설정

sudo systemctl enable fail2ban
sudo systemctl start fail2ban

🔍 기본 설정 확인

sudo cat /etc/fail2ban/jail.d/defaults-debian.conf

기본 예시:

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 5

🧱 설정 커스터마이징 (선택사항)

⚠️ 원본(jail.conf)은 직접 수정하지 말고,
local 파일을 새로 만들어서 관리합니다.

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

예시 설정:

[sshd]
enabled = true
port    = ssh
logpath = /var/log/auth.log
maxretry = 5         # 5회 실패
findtime = 10m       # 10분 내에
bantime = 1h         # 1시간 차단

🔁 Fail2Ban 서비스 재시작

sudo systemctl restart fail2ban

✅ 동작 확인

sudo fail2ban-client status

예시 출력:

Status
|- Number of jail:	1
`- Jail list:	sshd

🧠 추가: 차단된 IP 실시간 확인

sudo fail2ban-client status sshd

🧱 정리

항목역할
UFW기본 방화벽, 포트 기반 접근 제어
Fail2Ban비정상 로그인 시도 자동 차단
조합 사용 시 효과외부 침입 차단 + 공격 IP 자동 차단

🧭 마무리

이제 Contabo 서버는
✅ 필수 포트만 열리고
✅ 반복 로그인 공격도 자동 차단되는
안전한 보안 환경이 완성되었습니다.

profile
FE 개발자 INNOPER 입니다

0개의 댓글