# πŸ›‘οΈ fail2ban Discord Bot fail2ban IP 차단 ν˜„ν™©μ„ λ””μŠ€μ½”λ“œλ‘œ μ‹€μ‹œκ°„ μ•Œλ¦Ό 및 κ΄€λ¦¬ν•˜λŠ” λ΄‡μž…λ‹ˆλ‹€. ![Python](https://img.shields.io/badge/Python-3.14-3776AB?logo=python) ![Discord](https://img.shields.io/badge/Discord.py-2.6-5865F2?logo=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 [jail]` | IP 차단 ν•΄μ œ | | `/status` | fail2ban μ„œλΉ„μŠ€ μƒνƒœ 확인 | --- ## πŸ”” μ•Œλ¦Ό ν˜•μ‹ IP 차단 μ‹œ λ‹€μŒ 정보가 ν¬ν•¨λœ Embed μ•Œλ¦Όμ΄ μ „μ†‘λ©λ‹ˆλ‹€: - πŸ”’ μ°¨λ‹¨λœ IP - πŸ“› Jail 이름 - ❌ μ‹€νŒ¨ 횟수 - 🌍 μœ„μΉ˜ (κ΅­κ°€, λ„μ‹œ) - 🏒 ISP - πŸ–₯️ μ„œλ²„ 이름 --- ## πŸš€ μ‹€ν–‰ 방법 ### Docker (ꢌμž₯) ```bash docker compose up -d --build ``` ### 둜컬 μ‹€ν–‰ ```bash pip install -r requirements.txt python main.py ``` --- ## βš™οΈ ν™˜κ²½ λ³€μˆ˜ | λ³€μˆ˜ | μ„€λͺ… | | -------------------- | --------------------------- | | `DISCORD_BOT_TOKEN` | λ””μŠ€μ½”λ“œ 봇 토큰 | | `DISCORD_CHANNEL_ID` | μ•Œλ¦Ό 채널 ID | | `WEBHOOK_PORT` | μ›Ήν›… μ„œλ²„ 포트 (κΈ°λ³Έ: 5000) | --- ## πŸ”§ fail2ban 연동 `/etc/fail2ban/action.d/` 에 μ•‘μ…˜ 슀크립트λ₯Ό μΆ”κ°€ν•˜κ³ , jail μ„€μ •μ—μ„œ ν•΄λ‹Ή μ•‘μ…˜μ„ μ‚¬μš©ν•©λ‹ˆλ‹€. ```bash # 차단 μ‹œ μ›Ήν›… 호좜 curl -X POST http://127.0.0.1:5000/ban \ -H "Content-Type: application/json" \ -d '{"ip":"", "jail":"", "failures":""}' ``` --- ## πŸ“ ꡬ쑰 ``` fail2ban/ β”œβ”€β”€ main.py # 봇 메인 둜직 β”œβ”€β”€ docker-compose.yml # Docker Compose μ„€μ • β”œβ”€β”€ Dockerfile # μ»¨ν…Œμ΄λ„ˆ λΉŒλ“œ β”œβ”€β”€ requirements.txt # Python μ˜μ‘΄μ„± β”œβ”€β”€ discord-notify.sh # fail2ban μ•‘μ…˜ 슀크립트 └── .env # ν™˜κ²½ λ³€μˆ˜ ```