508 lines
16 KiB
Markdown
508 lines
16 KiB
Markdown
# GeoIP Shop Blocker Manager - DACH & Eurozone Version
|
||
|
||
**Hybrid-System für temporäres GeoIP-Blocking und Bot-Blocking auf Plesk-Servern mit mehreren Shops**
|
||
|
||
Dieses Tool ermöglicht es, einzelne oder alle Shops auf einem Plesk-Server temporär für alle Zugriffe außerhalb der gewählten Region zu sperren oder nur bekannte Bots/Crawler zu blockieren. Es kombiniert PHP-Level-Blocking mit optionaler CrowdSec Firewall-Integration für maximalen Schutz.
|
||
|
||
## 🎯 Features
|
||
|
||
### Geo-Regionen
|
||
- ✅ **DACH-Region**: Deutschland (DE), Österreich (AT), Schweiz (CH) - 3 Länder
|
||
- ✅ **Eurozone+GB**: 22 Länder (DE, AT, CH, BE, CY, EE, ES, FI, FR, GB, GR, HR, IE, IT, LT, LU, LV, MT, NL, PT, SI, SK)
|
||
|
||
### Blocking-Modi
|
||
- ✅ **GeoIP + CrowdSec** 🛡️: Geo-Blocking mit Firewall-Integration
|
||
- ✅ **Nur GeoIP** 📝: Geo-Blocking ohne CrowdSec (ideal für CDN)
|
||
- ✅ **Bot-Block + CrowdSec** 🤖🛡️: Nur Bots blockieren, Shop weltweit erreichbar
|
||
- ✅ **Nur Bot-Block** 🤖: Nur Bots blockieren, ohne CrowdSec
|
||
|
||
### Allgemein
|
||
- ✅ **30+ Bot-Patterns**: GPTBot, ClaudeBot, Googlebot, AhrefsBot, SemrushBot, etc.
|
||
- ✅ **Präzises Blocking**: PHP prüft gegen vollständige IP-Ranges (keine Fehlblockierungen)
|
||
- ✅ **Doppelter Schutz**: PHP-Level + Firewall-Level (CrowdSec) - optional
|
||
- ✅ **Automatische Synchronisation**: Blockierte IPs werden automatisch an CrowdSec weitergegeben
|
||
- ✅ **Multi-Shop-Management**: Verwaltung mehrerer Shops auf einem Server
|
||
- ✅ **Bulk-Operationen**: Alle Shops gleichzeitig aktivieren/deaktivieren
|
||
- ✅ **Gesamtübersicht**: Logs und Statistiken über alle Shops hinweg (Top 50 IPs)
|
||
- ✅ **Bot-Statistiken**: Auswertung welche Bots wie oft geblockt wurden
|
||
- ✅ **Auto-Deaktivierung**: Blocking läuft nach 72 Stunden automatisch ab
|
||
- ✅ **Fail-Open**: Bei Cache-Fehlern wird Traffic durchgelassen (kein Lockout)
|
||
- ✅ **Cache-Validierung**: IP-Ranges werden vor Aktivierung validiert
|
||
- ✅ **Link11-Erkennung**: Zeigt an ob Shop hinter Link11 CDN steht
|
||
- ✅ **Systemd-Service**: Automatischer Start beim Booten
|
||
- ✅ **Sauberes Cleanup**: Vollständige Deinstallation bei Deaktivierung
|
||
- ✅ **Plesk-kompatibel**: Funktioniert mit Plesk-verwalteten Shops
|
||
- ✅ **CDN-kompatibel**: PHP-only Modi für Link11, Cloudflare & Co.
|
||
|
||
## 🏗️ Architektur
|
||
|
||
### Modus 1: GeoIP + CrowdSec 🛡️
|
||
|
||
#### Komponente 1: PHP-Script
|
||
- Wird in die `index.php` des Shops integriert
|
||
- Lädt IP-Ranges der gewählten Region von ipdeny.com
|
||
- Prüft jede Anfrage gegen diese Ranges
|
||
- Blockt Nicht-Region-IPs sofort mit HTTP 403
|
||
- Schreibt blockierte IPs in Queue-Datei für CrowdSec
|
||
|
||
#### Komponente 2: Python Watcher (systemd service)
|
||
- Läuft permanent im Hintergrund als root
|
||
- Überwacht Queue-Dateien aller aktiven Shops
|
||
- Fügt blockierte IPs automatisch zu CrowdSec hinzu
|
||
- Vermeidet Duplikate durch In-Memory-Cache
|
||
- Prüft alle 5 Sekunden auf neue IPs
|
||
|
||
#### Komponente 3: CrowdSec Firewall Bouncer
|
||
- Blockiert IPs auf Firewall-Ebene (iptables/nftables)
|
||
- Schützt ALLE Services (HTTP, HTTPS, SSH, FTP, etc.)
|
||
- Übernimmt Bans für 72 Stunden
|
||
- Deutlich performanter als PHP-Checks
|
||
|
||
### Modus 2: Nur GeoIP 📝
|
||
|
||
- Nur das PHP-Script wird aktiviert
|
||
- Keine CrowdSec-Synchronisation
|
||
- Kein Watcher-Service nötig
|
||
- **Ideal für Server hinter CDN/Proxy** (Link11, Cloudflare, etc.)
|
||
|
||
### Modus 3: Bot-Block + CrowdSec 🤖🛡️
|
||
|
||
- Blockiert nur bekannte Bots/Crawler anhand des User-Agents
|
||
- Shop bleibt **weltweit für normale Besucher erreichbar**
|
||
- Blockierte Bot-IPs werden an CrowdSec gemeldet
|
||
- Kein IP-Range-Cache nötig (schnelle Aktivierung)
|
||
|
||
### Modus 4: Nur Bot-Block 🤖
|
||
|
||
- Blockiert nur bekannte Bots/Crawler
|
||
- Keine CrowdSec-Synchronisation
|
||
- **Ideal für Bot-Schutz ohne Geo-Einschränkungen**
|
||
|
||
> **Hinweis**: Bei Servern hinter einem CDN/Reverse-Proxy (wie Link11, Cloudflare, Hetzner LB) sieht iptables nur die Proxy-IP, nicht die echte Client-IP. In diesem Fall sind die **PHP-only Modi** (📝 oder 🤖) die bessere Wahl.
|
||
|
||
## 🤖 Blockierte Bots
|
||
|
||
Das Script blockiert über 30 bekannte Bots und Crawler:
|
||
|
||
| Kategorie | Bots |
|
||
|-----------|------|
|
||
| **AI-Crawler** | GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-User, anthropic-ai, PerplexityBot |
|
||
| **Suchmaschinen** | Googlebot, Google-Extended, AdsBot-Google, Bingbot, BingPreview, msnbot, DuckDuckBot, YandexBot, Baiduspider |
|
||
| **SEO-Tools** | AhrefsBot, SemrushBot, MJ12bot, DotBot, PetalBot, DataForSeoBot |
|
||
| **Social Media** | FacebookBot, LinkedInBot, Twitterbot, Slackbot |
|
||
| **Andere** | Applebot, Amazonbot, Bytespider, UptimeRobot, Pingdom, curl, python-requests, Wget, Scrapy |
|
||
|
||
### Eigene Bots hinzufügen
|
||
|
||
Im Script unter `BOT_PATTERNS` können eigene Patterns ergänzt werden:
|
||
|
||
```python
|
||
BOT_PATTERNS = {
|
||
# ... bestehende ...
|
||
'MeinBot': r'MeinBot', # Einfacher Match
|
||
'Scraper123': r'[Ss]craper-?\d+', # Mit Regex
|
||
'BadCrawler': r'BadCrawler|EvilBot', # Mehrere Varianten
|
||
}
|
||
```
|
||
|
||
## 📋 Voraussetzungen
|
||
|
||
- **Betriebssystem**: Ubuntu Server (getestet auf 24.04)
|
||
- **Webserver**: Apache mit mod_rewrite (oder nginx)
|
||
- **PHP**: Version 8.0 oder höher
|
||
- **Python**: Version 3.8 oder höher
|
||
- **CrowdSec**: Installiert und aktiv (nur für +CrowdSec Modi)
|
||
- **CrowdSec Firewall Bouncer**: Installiert und konfiguriert (nur für +CrowdSec Modi)
|
||
- **Plesk**: Optional, aber empfohlen
|
||
- **Root-Zugriff**: Erforderlich für Installation und Verwaltung
|
||
|
||
### CrowdSec Installation prüfen (nur für +CrowdSec Modi)
|
||
|
||
```bash
|
||
# Prüfe ob CrowdSec läuft
|
||
systemctl status crowdsec
|
||
|
||
# Prüfe ob Firewall Bouncer aktiv ist
|
||
cscli bouncers list
|
||
|
||
# Sollte zeigen:
|
||
# cs-firewall-bouncer-... mit ✔️ Valid und Recent Last API pull
|
||
```
|
||
|
||
Falls CrowdSec noch nicht installiert ist:
|
||
```bash
|
||
curl -s https://packagecloud.io/install/repositories/crowdsec/crowdsec/script.deb.sh | sudo bash
|
||
apt-get update
|
||
apt-get install crowdsec crowdsec-firewall-bouncer-iptables
|
||
```
|
||
|
||
## 🚀 Installation
|
||
|
||
### 1. Script herunterladen
|
||
|
||
```bash
|
||
# Als root
|
||
cd /root
|
||
wget https://git.jtl-hosting.de/thomasciesla/geoip_shop_manager/raw/branch/main/geoip_shop_manager.py
|
||
chmod +x geoip_shop_manager.py
|
||
```
|
||
|
||
### 2. Script ausführen
|
||
|
||
```bash
|
||
python3 geoip_shop_manager.py
|
||
```
|
||
|
||
Das war's! Das Script ist vollständig selbstverwaltend.
|
||
|
||
## 📖 Verwendung
|
||
|
||
### Hauptmenü
|
||
|
||
```
|
||
============================================================
|
||
GeoIP Shop Blocker Manager v3.2.0
|
||
🇩🇪🇦🇹🇨🇭 DACH | 🇪🇺 Eurozone+GB | 🤖 Bot-Only
|
||
🛡️ Mit Cache-Validierung und Fail-Open
|
||
============================================================
|
||
✅ CrowdSec
|
||
✅ Watcher-Service
|
||
|
||
----------------------------------------
|
||
[1] Aktivieren (einzeln)
|
||
[2] Deaktivieren (einzeln)
|
||
[3] Logs anzeigen
|
||
[4] Status
|
||
----------------------------------------
|
||
[5] 🚀 ALLE aktivieren
|
||
[6] 🛑 ALLE deaktivieren
|
||
----------------------------------------
|
||
[0] Beenden
|
||
```
|
||
|
||
### Blocking-Modus wählen
|
||
|
||
Bei jeder Aktivierung (einzeln oder alle) wird nach dem Modus gefragt:
|
||
|
||
```
|
||
🔧 Wähle den Blocking-Modus:
|
||
[1] 🌍 GeoIP + CrowdSec (IPs werden an CrowdSec gemeldet)
|
||
[2] 🌍 Nur GeoIP (keine CrowdSec-Synchronisation)
|
||
[3] 🤖 Nur Bot-Blocking (weltweit erreichbar, mit CrowdSec)
|
||
[4] 🤖 Nur Bot-Blocking (weltweit erreichbar, ohne CrowdSec)
|
||
|
||
Modus wählen [1/2/3/4]:
|
||
```
|
||
|
||
### Geo-Region wählen (nur bei GeoIP-Modi)
|
||
|
||
```
|
||
🌍 Wähle die Geo-Region:
|
||
[1] 🇩🇪🇦🇹🇨🇭 DACH - Deutschland, Österreich, Schweiz
|
||
[2] 🇪🇺 Eurozone+GB - 22 Länder
|
||
|
||
Region wählen [1/2]:
|
||
```
|
||
|
||
**Wann welchen Modus wählen?**
|
||
|
||
| Situation | Empfohlener Modus |
|
||
|-----------|-------------------|
|
||
| DDoS-Angriff aus Übersee | GeoIP + CrowdSec 🛡️ |
|
||
| Server hinter CDN (Link11, Cloudflare) | Nur GeoIP 📝 |
|
||
| Nur Bots/Crawler blocken | Nur Bot-Block 🤖 |
|
||
| Bot-Schutz + Firewall-Bans | Bot-Block + CrowdSec 🤖🛡️ |
|
||
| CrowdSec nicht installiert | Nur GeoIP 📝 oder Nur Bot-Block 🤖 |
|
||
| Maximaler Schutz (alle Ports) | GeoIP + CrowdSec 🛡️ |
|
||
|
||
### Blocking aktivieren (einzelner Shop)
|
||
|
||
1. Script starten: `python3 geoip_shop_manager.py`
|
||
2. Option `[1] Aktivieren (einzeln)` wählen
|
||
3. Shop aus der Liste auswählen
|
||
4. **Modus wählen** (1-4)
|
||
5. **Region wählen** (nur bei GeoIP-Modi)
|
||
6. Bestätigen mit `ja`
|
||
|
||
**Was passiert (GeoIP + CrowdSec Modus):**
|
||
- Bei ERSTEM Shop: Systemd-Service wird installiert und gestartet
|
||
- Backup der `index.php` wird erstellt
|
||
- `geoip_blocking.php` wird erstellt und eingebunden
|
||
- IP-Range-Cache wird generiert und validiert
|
||
- Shop wird für Tracking registriert
|
||
- Blocking ist sofort aktiv
|
||
|
||
**Was passiert (Bot-Only Modus):**
|
||
- Backup der `index.php` wird erstellt
|
||
- `geoip_blocking.php` mit Bot-Patterns wird erstellt
|
||
- Kein Cache nötig (sofort aktiv)
|
||
- 30+ Bot-Patterns werden geprüft
|
||
|
||
### Logs anzeigen
|
||
|
||
Option `[3] Logs anzeigen` zeigt:
|
||
|
||
```
|
||
📋 Logs für:
|
||
[0] 📊 ALLE
|
||
[1] shop1.example.com 🇩🇪🇦🇹🇨🇭 🛡️
|
||
[2] shop2.example.com 🇪🇺 📝
|
||
[3] shop3.example.com 🤖 🤖🛡️
|
||
```
|
||
|
||
#### Gesamtübersicht (Option 0)
|
||
|
||
```
|
||
══════════════════════════════════════════════════════════════════════
|
||
📊 GESAMTÜBERSICHT ALLER SHOPS
|
||
══════════════════════════════════════════════════════════════════════
|
||
Grün = hinter Link11 | Rot = Direkt
|
||
|
||
📝 Blocks gesamt: 1.247 (⌀ 2.3 req/min, Laufzeit: 8h 32m)
|
||
├─ shop1.example.com 🇩🇪🇦🇹🇨🇭 🛡️: 523 (1.2 req/min, seit 8h 32m) ████████
|
||
│ └─➤ Top: 185.220.101.34 (AhrefsBot) - 127x, 0.2 req/min
|
||
├─ shop2.example.com 🇪🇺 📝: 412 (0.8 req/min, seit 8h 30m) ██████
|
||
│ └─➤ Top: 45.95.169.22 (SemrushBot) - 89x, 0.2 req/min
|
||
└─ shop3.example.com 🤖 🤖🛡️: 312 (0.6 req/min, seit 8h 28m) █████
|
||
└─➤ Top: 194.26.192.64 (GPTBot) - 67x, 0.1 req/min
|
||
|
||
🛡️ CrowdSec-Bans gesamt: 892
|
||
├─ shop1.example.com 🇩🇪🇦🇹🇨🇭 🛡️: 401 ████████
|
||
└─ shop3.example.com 🤖 🤖🛡️: 193 ███
|
||
|
||
🤖 Bot-Statistik (alle Shops):
|
||
AhrefsBot: 234x ██████████████████████████
|
||
SemrushBot: 189x █████████████████████
|
||
GPTBot: 156x █████████████████
|
||
ClaudeBot: 98x ███████████
|
||
Googlebot: 67x ███████
|
||
...
|
||
|
||
🔥 Top 50 blockierte IPs (alle Shops):
|
||
185.220.101.34 (AhrefsBot): 127 (0.2 req/min) → shop1.example.com [127x] █████████████
|
||
45.95.169.22 (SemrushBot): 89 (0.2 req/min) → shop2.example.com [89x] █████████
|
||
...
|
||
══════════════════════════════════════════════════════════════════════
|
||
```
|
||
|
||
### Status prüfen
|
||
|
||
Option `[4] Status` zeigt:
|
||
|
||
```
|
||
📊 3/15 Shops aktiv
|
||
shop1.example.com [Link11] 🇩🇪🇦🇹🇨🇭 🛡️
|
||
523 blocks, 8h 32m, Cache: ✅12.847
|
||
shop2.example.com [Direkt] 🇪🇺 📝
|
||
412 blocks, 8h 30m, Cache: ✅48.392
|
||
shop3.example.com [Link11] 🤖 🤖🛡️
|
||
312 blocks, 8h 28m, 30 Bot-Patterns
|
||
```
|
||
|
||
## 📁 Dateistruktur
|
||
|
||
### Pro Shop (in `/var/www/vhosts/SHOP/httpdocs/`)
|
||
|
||
| Datei | Beschreibung |
|
||
|-------|--------------|
|
||
| `index.php.geoip_backup` | Backup der Original index.php |
|
||
| `geoip_blocking.php` | PHP-Blocking-Script |
|
||
| `geoip_ip_ranges.cache` | Gecachte IP-Ranges (nur GeoIP-Modi) |
|
||
| `geoip_blocked.log` | Log der PHP-Level Blocks |
|
||
| `geoip_crowdsec_queue.log` | Queue für CrowdSec (nur +CrowdSec Modi) |
|
||
|
||
### System-weit
|
||
|
||
| Datei | Beschreibung |
|
||
|-------|--------------|
|
||
| `/usr/local/bin/geoip_crowdsec_watcher.py` | Watcher-Service Script |
|
||
| `/etc/systemd/system/geoip-crowdsec-watcher.service` | Systemd Service |
|
||
| `/var/lib/crowdsec/geoip_active_shops.json` | Tracking aktiver Shops |
|
||
|
||
## ⚙️ Konfiguration
|
||
|
||
### Blocking-Dauer ändern
|
||
|
||
Standardmäßig 72 Stunden. Zum Ändern editiere das Python-Script:
|
||
|
||
```python
|
||
expiry = datetime.now() + timedelta(hours=72) # Hier ändern
|
||
```
|
||
|
||
### Bot-Patterns anpassen
|
||
|
||
Im Python-Script unter `BOT_PATTERNS`:
|
||
|
||
```python
|
||
BOT_PATTERNS = {
|
||
'GPTBot': r'GPTBot',
|
||
'ClaudeBot': r'ClaudeBot',
|
||
# Eigene hinzufügen:
|
||
'MeinBot': r'MeinBot',
|
||
}
|
||
```
|
||
|
||
**Regex-Elemente:**
|
||
- `|` – ODER (z.B. `r'Bot1|Bot2'`)
|
||
- `^` – Anfang des Strings
|
||
- `$` – Ende des Strings
|
||
- `\d+` – Eine oder mehr Ziffern
|
||
- `.*` – Beliebige Zeichen
|
||
- `[Aa]` – A oder a
|
||
- `-?` – Bindestrich optional
|
||
|
||
### Minimum IP-Ranges anpassen
|
||
|
||
Für Cache-Validierung:
|
||
|
||
```python
|
||
MIN_RANGES = {
|
||
"dach": 1000, # DE+AT+CH mindestens 1000 Ranges
|
||
"eurozone": 5000 # 22 Länder mindestens 5000 Ranges
|
||
}
|
||
```
|
||
|
||
## 🛡️ Sicherheit
|
||
|
||
### Fail-Open Mechanismus
|
||
|
||
Bei Problemen mit dem IP-Range-Cache wird Traffic **nicht** blockiert:
|
||
- Verhindert Lockouts bei Cache-Fehlern
|
||
- Loggt Warnung im PHP-Error-Log
|
||
- Cache wird beim nächsten Request neu generiert
|
||
|
||
### Cache-Validierung
|
||
|
||
Vor Aktivierung wird geprüft:
|
||
- Mindestanzahl IP-Ranges vorhanden
|
||
- Cache-Datei nicht korrupt
|
||
- Alle Länder erfolgreich geladen
|
||
|
||
### Link11-Erkennung
|
||
|
||
Das Script erkennt automatisch ob ein Shop hinter Link11 CDN steht:
|
||
- **Grün [Link11]**: Shop ist geschützt, PHP-only Modi empfohlen
|
||
- **Rot [Direkt]**: Direkter Zugriff, alle Modi möglich
|
||
|
||
## 🌐 CDN/Reverse-Proxy Hinweise
|
||
|
||
### Problem bei CDN-Nutzung
|
||
|
||
```
|
||
Client (202.8.43.232) → CDN (85.131.143.x) → Dein Server
|
||
↓
|
||
iptables sieht nur CDN-IP!
|
||
```
|
||
|
||
### Lösung
|
||
|
||
Verwende **PHP-only Modi** (📝 oder 🤖):
|
||
- PHP liest echte IP aus `X-Forwarded-For` Header
|
||
- Funktioniert auch hinter CDN/Proxy
|
||
- Kein unnötiger CrowdSec-Overhead
|
||
|
||
## 🐛 Troubleshooting
|
||
|
||
### Cache-Warnung bei Aktivierung
|
||
|
||
```
|
||
⚠️ Cache-Generierung: Nur 847 Ranges (min. 1000 erwartet)
|
||
ℹ️ Fail-Open aktiv - Cache wird beim ersten Request neu generiert
|
||
```
|
||
|
||
**Ursache**: ipdeny.com temporär nicht erreichbar
|
||
|
||
**Lösung**: Cache wird automatisch beim ersten Request neu generiert. Fail-Open verhindert Blockierungen.
|
||
|
||
### Bot wird nicht erkannt
|
||
|
||
**Prüfen**: User-Agent im Log anschauen und Pattern ergänzen:
|
||
|
||
```bash
|
||
tail -f /var/www/vhosts/SHOP/httpdocs/geoip_blocked.log
|
||
```
|
||
|
||
### Shop zeigt 500 Error
|
||
|
||
```bash
|
||
# Prüfe PHP-Fehler-Log
|
||
tail -50 /var/www/vhosts/SHOP/logs/error_log
|
||
|
||
# Stelle Original-Index wieder her
|
||
cd /var/www/vhosts/SHOP/httpdocs
|
||
mv index.php.geoip_backup index.php
|
||
```
|
||
|
||
## 📊 Performance
|
||
|
||
### GeoIP-Modi
|
||
|
||
| Metrik | Wert |
|
||
|--------|------|
|
||
| Overhead pro Request | ~2-8ms (bei gecachten IP-Ranges) |
|
||
| Erster Request | ~400-800ms (Download IP-Ranges) |
|
||
| Cache-Dauer | 24 Stunden |
|
||
| RAM pro Shop | ~5-10 MB |
|
||
|
||
### Bot-Only Modi
|
||
|
||
| Metrik | Wert |
|
||
|--------|------|
|
||
| Overhead pro Request | ~0.5-2ms (nur Regex-Match) |
|
||
| Kein Cache nötig | Sofort aktiv |
|
||
| RAM pro Shop | ~1-2 MB |
|
||
|
||
## 📝 Changelog
|
||
|
||
### v3.2.0
|
||
- **NEU**: Bot-Only Modus (🤖) - blockiert nur Bots, Shop weltweit erreichbar
|
||
- **NEU**: Bot-Block + CrowdSec Modus (🤖🛡️)
|
||
- **NEU**: 30+ Bot-Patterns (GPTBot, ClaudeBot, AhrefsBot, etc.)
|
||
- **NEU**: Bot-Statistiken in Logs und Gesamtübersicht
|
||
- **NEU**: 4 Modi statt 2 bei Aktivierung wählbar
|
||
- Geo-Region-Auswahl entfällt bei Bot-Only Modi
|
||
|
||
### v3.1.0
|
||
- **NEU**: Cache-Validierung vor Aktivierung
|
||
- **NEU**: Fail-Open Mechanismus (kein Lockout bei Cache-Fehlern)
|
||
- **NEU**: Minimum IP-Range Prüfung pro Region
|
||
- Verbesserte Fehlerbehandlung
|
||
|
||
### v3.0.0
|
||
- **NEU**: Eurozone+GB Region (22 Länder)
|
||
- **NEU**: Region-Auswahl bei Aktivierung
|
||
- **NEU**: Link11-Erkennung mit farbiger Anzeige
|
||
- **NEU**: req/min Statistiken in Logs
|
||
- **NEU**: Top-IP pro Shop in Gesamtübersicht
|
||
|
||
### v2.2.0
|
||
- Modus-Auswahl bei Aktivierung (PHP+CrowdSec 🛡️ oder Nur PHP 📝)
|
||
- PHP-only Modus für Server hinter CDN/Reverse-Proxy
|
||
- Top 100 blockierte IPs in Gesamtübersicht
|
||
|
||
### v2.1.0
|
||
- Bulk-Operationen (alle aktivieren/deaktivieren)
|
||
- Gesamtübersicht in Logs
|
||
- Visuelle Balken in Statistiken
|
||
|
||
### v2.0.0
|
||
- DACH-Support (DE, AT, CH)
|
||
- Systemd-Service für Watcher
|
||
- CrowdSec-Integration
|
||
- Multi-Shop-Management
|
||
|
||
---
|
||
|
||
**Version**: 3.2.0
|
||
**Letztes Update**: Dezember 2025
|
||
**Status**: Production Ready ✅
|
||
|
||
**Modi:**
|
||
- 🛡️ GeoIP + CrowdSec
|
||
- 📝 Nur GeoIP
|
||
- 🤖🛡️ Bot-Block + CrowdSec
|
||
- 🤖 Nur Bot-Block
|
||
|
||
**Regionen:**
|
||
- 🇩🇪🇦🇹🇨🇭 DACH (3 Länder)
|
||
- 🇪🇺 Eurozone+GB (22 Länder) |