본문 바로가기
카테고리 없음

[OMV6] 웹 로그인(Nginx) Fail2Ban 커스텀 필터로 침입 차단하기

by Hoft 2025. 12. 18.
728x90
반응형

 

 

안녕하세요 🙂
지난 글에서는 Fail2Ban 기본 설치 + SSH 보호까지 해봤죠.

이번에는 많은 분들이 진짜 궁금해하는 주제!

❓ "OMV 웹 관리자 로그인 화면도 Fail2Ban으로 막을 수 있을까?"

결론부터 말하면…

👉 됩니다. 그리고 꼭 해야 합니다.

 

OMV 웹 로그인은 기본적으로 Nginx + PHP 기반이고,
인터넷에 노출된 경우 관리자 계정 무차별 대입 공격이 꽤 자주 들어옵니다.

오늘은 Nginx 로그를 직접 분석하는 Fail2Ban 커스텀 필터를 만들어서
OMV 웹 로그인 공격을 차단하는 방법을 하나씩 같이 해볼게요.


🧠 전체 구조 먼저 이해하기

이번에 우리가 할 일은 딱 이 흐름이에요.

[공격자]
   ↓ 로그인 실패 반복
[Nginx access.log]
   ↓ 로그 분석
[Fail2Ban 커스텀 필터]
   ↓ 조건 충족 시
[IP 자동 차단]

핵심 포인트는 두 가지입니다.

1️⃣ OMV 웹 로그인 실패 로그가 어디에 찍히는지
2️⃣ 그 로그를 Fail2Ban이 알아먹게 만드는 필터 작성


📂 1. OMV 웹 로그인 로그 위치 확인

OMV6 기본 설정 기준으로 Nginx 로그는 여기 있습니다.

/var/log/nginx/access.log
/var/log/nginx/error.log

저의 경우는 아래 로그파일에 쌓이고있었어요 
/var/log/openmediavault-webgui_access.log

우리는 이 중에서 openmediavault-webgui_access.log 를 사용할 거예요.


🔎 2. 로그인 실패 로그 패턴 확인 (아주 중요)

먼저 실제 로그를 직접 한 번 봅시다.

sudo tail -f /var/log/nginx/openmediavault-webgui_access.log

이 상태에서:

  • OMV 웹 로그인 화면 접속
  • 일부러 비밀번호를 틀리게 입력

그러면 이런 로그가 찍힐 거예요 (예시):

192.168.0.50 - - [16/Dec/2025:21:12:33 +0900] "POST /rpc.php HTTP/1.1" 400 87 "-" "Mozilla/5.0"

여기서 중요한 포인트 👇

  • POST /rpc.php
  • HTTP 상태 코드 401 (Unauthorized)  또는 400 (Bad request)

👉 이게 바로 로그인 실패 시그니처입니다.


🧩 3. Fail2Ban 커스텀 필터 만들기

이제 Fail2Ban에게 이렇게 가르칠 거예요.

"access.log에서 POST /rpc.php + 401 나오면 로그인 실패야"

📄 필터 파일 생성

sudo nano /etc/fail2ban/filter.d/omv-web.conf

✍️ 필터 내용 작성

[Definition]
failregex = ^<HOST> .* "POST /rpc.php .*" 400
ignoreregex =

저의경우는 401이 아닌 400이 나와 400으로 설정했어요 

🔍 필터 설명

  • <HOST> : 공격자 IP
  • POST /rpc.php : OMV 로그인 요청
  • 401 or 400  : 인증 실패

👉 정확하고 단순한 패턴이 제일 좋습니다.


🏗️ 4. Jail 설정 추가 (jail.local)

이제 이 필터를 실제로 사용하도록 설정해봅시다.

sudo nano /etc/fail2ban/jail.local

아래 내용을 맨 아래에 추가하세요.

[omv-web]
enabled  = true
filter   = omv-web
port     = http,https
logpath  = /var/log/nginx/openmediavault-webgui_access.log
maxretry = 5
findtime = 600
bantime  = 3600

옵션 설명 (짧게)

  • maxretry 5 : 10분 안에 5번 실패하면
  • bantime 3600 : 1시간 차단

집 NAS 기준으로 아주 적당합니다 👍


🔄 5. Fail2Ban 재시작 & 적용 확인

sudo systemctl restart fail2ban

상태 확인:

sudo fail2ban-client status

정상이라면 이렇게 나옵니다.

Jail list: sshd, omv-web

🧪 6. 실제로 차단되는지 테스트하기

1️⃣ 웹 로그인에서 비밀번호 5번 틀리기
2️⃣ 다른 PC나 LTE/5G 환경에서 접속 시도

👉 접속이 안 된다면 성공 🎉

차단 IP 확인:

sudo fail2ban-client status omv-web

🔓 7. 실수로 내 IP 차단했을 때 (국룰 😅)

sudo fail2ban-client set omv-web unbanip 192.168.0.50

그리고 내부 IP는 미리 제외해두는 게 좋아요.

[DEFAULT]
ignoreip = 127.0.0.1/8 ::1 192.168.0.0/24

 


🎯 마무리

이번 글에서 한 것 정리해보면:

  • ✔ OMV 웹 로그인 실패 패턴 분석
  • ✔ Fail2Ban 커스텀 필터 작성
  • ✔ Nginx 로그 기반 자동 차단 적용

다음 글에서는:

  • Docker 컨테이너 로그를 Fail2Ban에 연동하는 방법
  • Slack / Telegram으로 차단 알림 받기
  • 차단 시간을 점점 늘리는 recidive 설정

중에서 하나 골라서 이어가 볼게요 😄

 

728x90
반응형

댓글