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

✨ 주요 기능
- 🚨 실시간 알림 - 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 # 환경 변수