discord-bot/fail2ban/README.md

2.7 KiB

🛡️ fail2ban Discord Bot

fail2ban IP 차단 현황을 디스코드로 실시간 알림 및 관리하는 봇입니다.

Python Discord


주요 기능

  • 🚨 실시간 알림 - IP 차단 시 디스코드 채널로 즉시 알림
  • 📋 차단 목록 - /list 명령으로 현재 차단 IP 조회
  • 🔓 차단 해제 - /unban 명령으로 IP 차단 해제
  • 📊 상태 조회 - /status 명령으로 fail2ban 서비스 상태 확인
  • 🌍 IP 정보 - 차단된 IP의 위치 및 ISP 정보 표시

🛠️ 기술 스택

기술 설명
Python 런타임
discord.py 디스코드 API
aiohttp 비동기 HTTP (웹훅)
ip-api.com IP 위치 조회

📡 슬래시 명령어

명령어 설명
/list [jail] 차단된 IP 목록 및 통계 조회
/unban <ip> [jail] IP 차단 해제
/status fail2ban 서비스 상태 확인

🔔 알림 형식

IP 차단 시 다음 정보가 포함된 Embed 알림이 전송됩니다:

  • 🔒 차단된 IP
  • 📛 Jail 이름
  • 실패 횟수
  • 🌍 위치 (국가, 도시)
  • 🏢 ISP
  • 🖥️ 서버 이름

🚀 실행 방법

Docker (권장)

docker compose up -d --build

로컬 실행

pip install -r requirements.txt
python main.py

⚙️ 환경 변수

변수 설명
DISCORD_BOT_TOKEN 디스코드 봇 토큰
DISCORD_CHANNEL_ID 알림 채널 ID
WEBHOOK_PORT 웹훅 서버 포트 (기본: 5000)

🔧 fail2ban 연동

/etc/fail2ban/action.d/ 에 액션 스크립트를 추가하고, jail 설정에서 해당 액션을 사용합니다.

# 차단 시 웹훅 호출
curl -X POST http://127.0.0.1:5000/ban \
  -H "Content-Type: application/json" \
  -d '{"ip":"<ip>", "jail":"<name>", "failures":"<failures>"}'

📁 구조

fail2ban/
├── main.py              # 봇 메인 로직
├── docker-compose.yml   # Docker Compose 설정
├── Dockerfile           # 컨테이너 빌드
├── requirements.txt     # Python 의존성
├── discord-notify.sh    # fail2ban 액션 스크립트
└── .env                 # 환경 변수