README.md aktualisiert
This commit is contained in:
406
README.md
406
README.md
@@ -1,89 +1,55 @@
|
|||||||
# GeoIP Shop Blocker Manager - DACH & Eurozone Version
|
# GeoIP Shop Blocker Manager - DACH & Eurozone Version
|
||||||
|
|
||||||
**Hybrid-System für temporäres GeoIP-Blocking auf Plesk-Servern mit mehreren Shops**
|
**PHP-basiertes System für temporäres GeoIP-Blocking und Bot-Rate-Limiting auf Plesk-Servern**
|
||||||
|
|
||||||
Dieses Tool ermöglicht es, einzelne oder alle Shops auf einem Plesk-Server temporär für alle Zugriffe außerhalb der konfigurierten Region zu sperren. Es kombiniert PHP-Level-Blocking mit optionaler CrowdSec Firewall-Integration für maximalen Schutz.
|
Dieses Tool ermöglicht es, einzelne oder alle Shops auf einem Plesk-Server temporär für alle Zugriffe außerhalb der konfigurierten Region zu sperren, oder Bots nach Bot-Typ zu rate-limitieren.
|
||||||
|
|
||||||
## 🎯 Features
|
## 🎯 Features
|
||||||
|
|
||||||
- ✅ **Flexible Regionen**: DACH (DE, AT, CH) oder Eurozone+GB (22 Länder)
|
- ✅ **Flexible Regionen**: DACH (DE, AT, CH) oder Eurozone+GB (22 Länder)
|
||||||
- ✅ **Bot-Rate-Limiting**: Bots unter Limit durchlassen, bei Überschreitung temporär bannen
|
- ✅ **Bot-Rate-Limiting nach Bot-Typ**: Alle Requests eines Bot-Typs teilen sich EIN Limit
|
||||||
- ✅ **Umfangreiche Bot-Erkennung**: 321 bekannte Bot-Patterns + 32 generische Fallback-Patterns
|
- ✅ **Umfangreiche Bot-Erkennung**: 321 bekannte Bot-Patterns + 32 generische Fallback-Patterns
|
||||||
- ✅ **Präzises Blocking**: PHP prüft gegen vollständige IP-Ranges (keine Fehlblockierungen)
|
- ✅ **Präzises Blocking**: PHP prüft gegen vollständige IP-Ranges (keine Fehlblockierungen)
|
||||||
- ✅ **Flexibler Modus**: 4 Modi - GeoIP+CrowdSec, GeoIP-only, Bot+CrowdSec, Bot-only
|
- ✅ **Zwei Modi**: GeoIP-Blocking oder Bot-Rate-Limiting
|
||||||
- ✅ **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
|
- ✅ **Multi-Shop-Management**: Verwaltung mehrerer Shops auf einem Server
|
||||||
- ✅ **Bulk-Operationen**: Alle Shops gleichzeitig aktivieren/deaktivieren
|
- ✅ **Bulk-Operationen**: Alle Shops gleichzeitig aktivieren/deaktivieren
|
||||||
- ✅ **Link11-Erkennung**: Automatische Erkennung ob Shop hinter Link11 CDN steht
|
- ✅ **Link11-Erkennung**: Automatische Erkennung ob Shop hinter Link11 CDN steht
|
||||||
- ✅ **Nur direkte Shops**: Option um nur Shops ohne CDN-Schutz zu aktivieren
|
- ✅ **Nur direkte Shops**: Option um nur Shops ohne CDN-Schutz zu aktivieren
|
||||||
- ✅ **Gesamtübersicht**: Logs und Statistiken über alle Shops hinweg (Top 50 IPs)
|
- ✅ **Gesamtübersicht**: Logs und Statistiken über alle Shops hinweg
|
||||||
- ✅ **Auto-Deaktivierung**: Blocking läuft nach 72 Stunden automatisch ab
|
- ✅ **Auto-Deaktivierung**: Blocking läuft nach 72 Stunden automatisch ab
|
||||||
- ✅ **Systemd-Service**: Automatischer Start beim Booten
|
|
||||||
- ✅ **Sauberes Cleanup**: Vollständige Deinstallation bei Deaktivierung
|
- ✅ **Sauberes Cleanup**: Vollständige Deinstallation bei Deaktivierung
|
||||||
- ✅ **Plesk-kompatibel**: Funktioniert mit Plesk-verwalteten Shops
|
- ✅ **Plesk-kompatibel**: Funktioniert mit Plesk-verwalteten Shops
|
||||||
- ✅ **CDN-kompatibel**: PHP-only Modus für Link11, Cloudflare & Co.
|
- ✅ **CDN-kompatibel**: Funktioniert mit Link11, Cloudflare & Co.
|
||||||
- ✅ **Fail-Open**: Bei Cache-Fehlern wird Traffic durchgelassen (keine Ausfälle)
|
- ✅ **Fail-Open**: Bei Cache-Fehlern wird Traffic durchgelassen (keine Ausfälle)
|
||||||
|
|
||||||
## 🏗️ Architektur
|
## 🏗️ Architektur
|
||||||
|
|
||||||
### Modus 1: GeoIP + CrowdSec 🛡️
|
### Modus 1: GeoIP-Blocking 🌍
|
||||||
|
|
||||||
#### Komponente 1: PHP-Script
|
- PHP-Script wird in die `index.php` des Shops integriert
|
||||||
- Wird in die `index.php` des Shops integriert
|
|
||||||
- Lädt IP-Ranges von ipdeny.com (konfigurierte Länder)
|
- Lädt IP-Ranges von ipdeny.com (konfigurierte Länder)
|
||||||
- Prüft jede Anfrage gegen diese Ranges
|
- Prüft jede Anfrage gegen diese Ranges
|
||||||
- Blockt Nicht-erlaubte IPs sofort mit HTTP 403
|
- Blockt nicht-erlaubte IPs sofort mit HTTP 403
|
||||||
- Schreibt blockierte IPs in Queue-Datei für CrowdSec
|
- Loggt alle Blocks
|
||||||
|
|
||||||
#### Komponente 2: Python Watcher (systemd service)
|
### Modus 2: Bot-Rate-Limiting 🤖
|
||||||
- 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-Rate-Limiting + CrowdSec 🤖🛡️
|
|
||||||
|
|
||||||
- Shop bleibt weltweit erreichbar
|
- Shop bleibt weltweit erreichbar
|
||||||
- Nur bekannte Bots werden rate-limited
|
- Erkennt Bots anhand von User-Agent Patterns
|
||||||
- **Bots unter dem Limit werden durchgelassen**
|
- **Rate-Limit gilt PRO BOT-TYP** (nicht pro IP!)
|
||||||
- Bei Überschreitung: temporärer Ban + CrowdSec-Meldung
|
- Alle Googlebot-Requests teilen sich EIN Limit
|
||||||
|
- Bei Überschreitung: Gesamter Bot-Typ wird temporär gebannt
|
||||||
### Modus 4: Nur Bot-Rate-Limiting 🤖
|
|
||||||
|
|
||||||
- Shop bleibt weltweit erreichbar
|
|
||||||
- Nur bekannte Bots werden rate-limited
|
|
||||||
- **Bots unter dem Limit werden durchgelassen**
|
|
||||||
- Keine CrowdSec-Synchronisation
|
|
||||||
|
|
||||||
> **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 ist der **PHP-only Modus** oder **Bot-only Modus** die bessere Wahl.
|
|
||||||
|
|
||||||
## 🚦 Rate-Limiting (Bot-Only Modus)
|
## 🚦 Rate-Limiting (Bot-Only Modus)
|
||||||
|
|
||||||
### Funktionsweise
|
### Funktionsweise
|
||||||
|
|
||||||
Das Rate-Limiting im Bot-Only Modus funktioniert wie folgt:
|
|
||||||
|
|
||||||
```
|
```
|
||||||
Bot-Request kommt rein
|
Bot-Request kommt rein
|
||||||
│
|
│
|
||||||
▼
|
▼
|
||||||
┌───────────────────┐
|
┌───────────────────┐
|
||||||
│ Ist IP+UA gebannt?│──── Ja ───▶ 403 + Exit (sofort)
|
│ Bot-Typ gebannt? │──── Ja ───▶ 403 + Exit (sofort)
|
||||||
└───────────────────┘
|
└───────────────────┘
|
||||||
│ Nein
|
│ Nein
|
||||||
▼
|
▼
|
||||||
@@ -93,8 +59,9 @@ Bot-Request kommt rein
|
|||||||
│ Ja
|
│ Ja
|
||||||
▼
|
▼
|
||||||
┌───────────────────┐
|
┌───────────────────┐
|
||||||
│ Counter erhöhen │
|
│ Bot-Typ Counter │
|
||||||
│ Limit erreicht? │──── Ja ───▶ Ban erstellen + 403
|
│ erhöhen │
|
||||||
|
│ Limit erreicht? │──── Ja ───▶ Bot-Typ bannen + 403
|
||||||
└───────────────────┘
|
└───────────────────┘
|
||||||
│ Nein
|
│ Nein
|
||||||
▼
|
▼
|
||||||
@@ -102,28 +69,42 @@ Bot-Request kommt rein
|
|||||||
(Bot darf durch!)
|
(Bot darf durch!)
|
||||||
```
|
```
|
||||||
|
|
||||||
**Wichtig**: Bots werden **nicht** sofort geblockt! Sie dürfen crawlen, solange sie unter dem konfigurierten Limit bleiben. Erst bei Überschreitung werden sie temporär gebannt.
|
### Wichtig: Rate-Limit pro Bot-Typ
|
||||||
|
|
||||||
|
**Alle Requests eines Bot-Typs teilen sich EINEN Zähler**, unabhängig von:
|
||||||
|
- Der IP-Adresse
|
||||||
|
- Der genauen User-Agent Variante
|
||||||
|
|
||||||
|
Beispiel mit Limit 30 req/min:
|
||||||
|
|
||||||
|
| Request | IP | User-Agent | Bot-Typ | Zähler |
|
||||||
|
|---------|-----|-----------|---------|--------|
|
||||||
|
| 1 | 1.1.1.1 | Googlebot/2.1 | Googlebot | 1/30 |
|
||||||
|
| 2 | 2.2.2.2 | Googlebot/2.1 (+http...) | Googlebot | 2/30 |
|
||||||
|
| 3 | 3.3.3.3 | Googlebot-Image/1.0 | Googlebot-Image | 1/30 |
|
||||||
|
| ... | ... | ... | ... | ... |
|
||||||
|
| 31 | 99.99.99.99 | Googlebot/2.1 | Googlebot | **31/30 → BAN** |
|
||||||
|
|
||||||
|
Nach dem Ban werden **ALLE** Googlebot-Requests geblockt (egal welche IP).
|
||||||
|
|
||||||
### Konfiguration bei Aktivierung
|
### Konfiguration bei Aktivierung
|
||||||
|
|
||||||
Bei Aktivierung des Bot-Only Modus werden zwei Werte abgefragt:
|
|
||||||
|
|
||||||
```
|
```
|
||||||
🚦 Rate-Limit Konfiguration:
|
🚦 Rate-Limit Konfiguration:
|
||||||
|
(0 = Bots sofort bannen, kein Rate-Limiting)
|
||||||
|
⚠️ ACHTUNG: Limit gilt pro Bot-TYP, nicht pro IP!
|
||||||
Requests pro Minute bevor Ban [30]:
|
Requests pro Minute bevor Ban [30]:
|
||||||
Ban-Dauer in Minuten [5]:
|
Ban-Dauer in Minuten [5]:
|
||||||
|
|
||||||
✅ Rate-Limit: 30 req/min
|
✅ Rate-Limit: 30 req/min pro Bot-Typ
|
||||||
✅ Ban-Dauer: 5 Minuten
|
✅ Ban-Dauer: 5 Minuten
|
||||||
```
|
```
|
||||||
|
|
||||||
- **Requests pro Minute**: Wie viele Requests ein Bot pro Minute machen darf (Default: 30)
|
|
||||||
- **Ban-Dauer**: Wie lange ein Bot nach Überschreitung gebannt wird (Default: 5 Minuten)
|
|
||||||
|
|
||||||
### Technische Details
|
### Technische Details
|
||||||
|
|
||||||
- **Identifier**: MD5-Hash aus IP + User-Agent (ermöglicht granulare Tracking pro Bot-Typ)
|
- **Identifier**: MD5-Hash des erkannten Bot-Namens (z.B. `md5("Googlebot")`)
|
||||||
- **Speicherung**: File-basiert in `geoip_ratelimit/` Verzeichnis
|
- **Speicherung**: File-basiert in `geoip_ratelimit/` Verzeichnis
|
||||||
|
- **Ban-Format**: `timestamp|botname` (ermöglicht Anzeige des Bot-Namens)
|
||||||
- **Cleanup**: Probabilistisch (1% der Requests) um Overhead zu minimieren
|
- **Cleanup**: Probabilistisch (1% der Requests) um Overhead zu minimieren
|
||||||
- **Atomare Operationen**: File-Locking verhindert Race Conditions
|
- **Atomare Operationen**: File-Locking verhindert Race Conditions
|
||||||
|
|
||||||
@@ -133,9 +114,9 @@ Bei Aktivierung des Bot-Only Modus werden zwei Werte abgefragt:
|
|||||||
httpdocs/
|
httpdocs/
|
||||||
├── geoip_ratelimit/
|
├── geoip_ratelimit/
|
||||||
│ ├── bans/
|
│ ├── bans/
|
||||||
│ │ └── {hash}.ban # Unix-Timestamp wann Ban abläuft
|
│ │ └── {bot_hash}.ban # Format: unix_timestamp|bot_name
|
||||||
│ └── counts/
|
│ └── counts/
|
||||||
│ └── {hash}.count # Format: window_start|count
|
│ └── {bot_hash}.count # Format: window_start|count
|
||||||
```
|
```
|
||||||
|
|
||||||
## 🤖 Erkannte Bot-Patterns
|
## 🤖 Erkannte Bot-Patterns
|
||||||
@@ -179,28 +160,9 @@ Diese werden dann als `Bot (crawler)`, `Bot (spider)`, etc. angezeigt.
|
|||||||
- **Webserver**: Apache mit mod_rewrite (oder nginx)
|
- **Webserver**: Apache mit mod_rewrite (oder nginx)
|
||||||
- **PHP**: Version 8.0 oder höher
|
- **PHP**: Version 8.0 oder höher
|
||||||
- **Python**: Version 3.8 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
|
- **Plesk**: Optional, aber empfohlen
|
||||||
- **Root-Zugriff**: Erforderlich für Installation und Verwaltung
|
- **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
|
|
||||||
```
|
|
||||||
|
|
||||||
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
|
## 🚀 Installation
|
||||||
|
|
||||||
### 1. Script herunterladen
|
### 1. Script herunterladen
|
||||||
@@ -226,10 +188,10 @@ Das war's! Das Script ist vollständig selbstverwaltend.
|
|||||||
|
|
||||||
```
|
```
|
||||||
============================================================
|
============================================================
|
||||||
GeoIP Shop Blocker Manager v3.5.0
|
GeoIP Shop Blocker Manager v4.0.0
|
||||||
🇩🇪🇦🇹🇨🇭 DACH | 🇪🇺 Eurozone+GB | 🤖 Bot-Rate-Limiting
|
🇩🇪🇦🇹🇨🇭 DACH | 🇪🇺 Eurozone+GB | 🤖 Bot-Rate-Limiting
|
||||||
🛡️ Mit Cache-Validierung und Fail-Open
|
🛡️ Mit Cache-Validierung und Fail-Open
|
||||||
🚦 Bots unter Rate-Limit werden durchgelassen
|
🚦 Rate-Limiting nach BOT-TYP (nicht IP)
|
||||||
============================================================
|
============================================================
|
||||||
|
|
||||||
[1] Aktivieren (einzeln)
|
[1] Aktivieren (einzeln)
|
||||||
@@ -250,24 +212,21 @@ Bei jeder Aktivierung wird nach dem Modus gefragt:
|
|||||||
|
|
||||||
```
|
```
|
||||||
🔧 Wähle den Blocking-Modus:
|
🔧 Wähle den Blocking-Modus:
|
||||||
[1] 🌍 GeoIP + CrowdSec (IPs werden an CrowdSec gemeldet)
|
[1] 🌍 GeoIP-Blocking (nur erlaubte Regionen)
|
||||||
[2] 🌍 Nur GeoIP (keine CrowdSec-Synchronisation)
|
[2] 🤖 Bot-Rate-Limiting (weltweit erreichbar, Bots limitiert)
|
||||||
[3] 🤖 Bot-Rate-Limiting (weltweit erreichbar, mit CrowdSec)
|
|
||||||
[4] 🤖 Bot-Rate-Limiting (weltweit erreichbar, ohne CrowdSec)
|
|
||||||
|
|
||||||
Modus wählen [1/2/3/4]:
|
Modus wählen [1/2]:
|
||||||
```
|
```
|
||||||
|
|
||||||
**Wann welchen Modus wählen?**
|
**Wann welchen Modus wählen?**
|
||||||
|
|
||||||
| Situation | Empfohlener Modus |
|
| Situation | Empfohlener Modus |
|
||||||
|-----------|-------------------|
|
|-----------|-------------------|
|
||||||
| Server direkt im Internet, Geo-Blocking gewünscht | GeoIP + CrowdSec 🛡️ |
|
| Nur bestimmte Länder erlauben | GeoIP-Blocking 🌍 |
|
||||||
| Server hinter CDN, Geo-Blocking gewünscht | Nur GeoIP 📝 |
|
|
||||||
| Weltweit erreichbar bleiben, nur Bots bremsen | Bot-Rate-Limiting 🤖 |
|
| Weltweit erreichbar bleiben, nur Bots bremsen | Bot-Rate-Limiting 🤖 |
|
||||||
| CrowdSec nicht installiert | Nur GeoIP 📝 oder Bot-only 🤖 |
|
| Aggressive Bots stoppen (verteilt über viele IPs) | Bot-Rate-Limiting 🤖 |
|
||||||
|
|
||||||
### Geo-Region wählen (nur GeoIP-Modi)
|
### Geo-Region wählen (nur GeoIP-Modus)
|
||||||
|
|
||||||
```
|
```
|
||||||
🌍 Wähle die Geo-Region:
|
🌍 Wähle die Geo-Region:
|
||||||
@@ -281,34 +240,65 @@ Region wählen [1/2]:
|
|||||||
|
|
||||||
```
|
```
|
||||||
🔧 Aktiviere 🤖 Bot-Only für: shop.example.com
|
🔧 Aktiviere 🤖 Bot-Only für: shop.example.com
|
||||||
Modus: Bot-Rate-Limiting (weltweit erreichbar)
|
Modus: Bot-Rate-Limiting nach Bot-Typ (weltweit erreichbar)
|
||||||
Rate-Limit: 30 req/min, Ban: 5 min
|
Rate-Limit: 30 req/min pro Bot-Typ, Ban: 5 min
|
||||||
CrowdSec: Nein
|
|
||||||
============================================================
|
============================================================
|
||||||
|
|
||||||
[1/4] CrowdSec-Synchronisation deaktiviert
|
[1/3] Aktiviere PHP-Blocking...
|
||||||
|
|
||||||
[2/4] Aktiviere PHP-Blocking...
|
|
||||||
✅ PHP-Blocking aktiviert
|
✅ PHP-Blocking aktiviert
|
||||||
|
|
||||||
[3/4] Cache-Generierung nicht erforderlich (Bot-Only)
|
[2/3] Cache-Generierung nicht erforderlich (Bot-Only)
|
||||||
|
|
||||||
[4/4] Registriere Shop...
|
[3/3] Registriere Shop...
|
||||||
|
|
||||||
============================================================
|
============================================================
|
||||||
✅ 🤖 Bot-Only aktiviert
|
✅ 🤖 Bot-Only aktiviert
|
||||||
Shop: shop.example.com
|
Shop: shop.example.com
|
||||||
Modus: Nur Bot-Rate-Limit 🤖
|
Modus: Bot-Rate-Limiting 🤖
|
||||||
🤖 321 Bot-Patterns aktiv
|
🤖 321 Bot-Patterns + 32 generische Patterns
|
||||||
🚦 Rate-Limit: 30 req/min, Ban: 5 min
|
🚦 Rate-Limit: 30 req/min PRO BOT-TYP
|
||||||
ℹ️ Bots unter dem Limit werden durchgelassen
|
⏱️ Ban-Dauer: 5 min
|
||||||
Gültig bis: 2025-12-12 19:30:00 CET
|
ℹ️ Alle Googlebot-Requests teilen sich EIN Limit!
|
||||||
|
Gültig bis: 2025-12-19 19:30:00 CET
|
||||||
============================================================
|
============================================================
|
||||||
```
|
```
|
||||||
|
|
||||||
### Logs anzeigen
|
### Logs anzeigen - Gesamtübersicht
|
||||||
|
|
||||||
Die Logs zeigen bei Bot-Only Modus auch die Rate-Limit Statistiken:
|
```
|
||||||
|
══════════════════════════════════════════════════════════════════════
|
||||||
|
📊 GESAMTÜBERSICHT ALLER SHOPS
|
||||||
|
══════════════════════════════════════════════════════════════════════
|
||||||
|
Grün = hinter Link11 | Rot = Direkt
|
||||||
|
|
||||||
|
🚫 AKTUELL GEBANNTE BOT-TYPEN: AhrefsBot, Bytespider (TikTok/ByteDance), SemrushBot
|
||||||
|
|
||||||
|
📝 Log-Einträge gesamt: 1,234 (⌀ 5.2 req/min, Laufzeit: 3h 57m)
|
||||||
|
├─ shop1.example.com 🤖 🤖: 456 (3.8 req/min, seit 2h 0m) ███████
|
||||||
|
│ ├─➤ Googlebot: 234x, 1.9 req/min
|
||||||
|
│ ├─➤ Bingbot (Microsoft): 123x, 1.0 req/min
|
||||||
|
│ └─➤ AhrefsBot: 99x, 0.8 req/min
|
||||||
|
├─ shop2.example.com 🤖 🤖: 778 (6.5 req/min, seit 2h 0m) █████████████
|
||||||
|
│ ├─➤ Bytespider (TikTok/ByteDance): 456x, 3.8 req/min
|
||||||
|
│ ├─➤ GPTBot (OpenAI): 189x, 1.6 req/min
|
||||||
|
│ └─➤ ClaudeBot (Anthropic): 133x, 1.1 req/min
|
||||||
|
|
||||||
|
🚫 Rate-Limit Bans: 5 ausgelöst, 3 Bot-Typen aktuell gebannt
|
||||||
|
├─ shop1.example.com: 2 bans (1 Bot-Typen aktiv) █
|
||||||
|
│ └─🚫 AhrefsBot
|
||||||
|
├─ shop2.example.com: 3 bans (2 Bot-Typen aktiv) █
|
||||||
|
│ └─🚫 Bytespider (TikTok/ByteDance)
|
||||||
|
│ └─🚫 SemrushBot
|
||||||
|
|
||||||
|
🤖 Bot-Statistik nach Bot-Typ (alle Shops):
|
||||||
|
Googlebot: 456x ███████████████████████████████████████
|
||||||
|
Bytespider (TikTok/ByteDance): 389x ████████████████████████████████
|
||||||
|
Bingbot (Microsoft): 234x ███████████████████
|
||||||
|
GPTBot (OpenAI): 189x ███████████████
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
### Logs anzeigen - Einzelner Shop
|
||||||
|
|
||||||
```
|
```
|
||||||
══════════════════════════════════════════════════════════════════════
|
══════════════════════════════════════════════════════════════════════
|
||||||
@@ -316,24 +306,16 @@ Die Logs zeigen bei Bot-Only Modus auch die Rate-Limit Statistiken:
|
|||||||
══════════════════════════════════════════════════════════════════════
|
══════════════════════════════════════════════════════════════════════
|
||||||
⏱️ Laufzeit: 2h 15m
|
⏱️ Laufzeit: 2h 15m
|
||||||
📈 Log-Einträge: 1,234 (9.1 req/min)
|
📈 Log-Einträge: 1,234 (9.1 req/min)
|
||||||
🤖 Bot-Patterns: 321 aktiv
|
🤖 Bot-Patterns: 321 + 32 generische
|
||||||
🚦 Rate-Limit: 30 req/min, Ban: 5 min
|
🚦 Rate-Limit: 30 req/min PRO BOT-TYP, Ban: 5 min
|
||||||
🚫 Bans: 23 ausgelöst, 3 aktiv
|
🚫 Bans: 3 ausgelöst, 2 Bot-Typen aktuell gebannt
|
||||||
|
Gebannt: AhrefsBot, Bytespider (TikTok/ByteDance)
|
||||||
|
|
||||||
🤖 Bot-Statistik:
|
🤖 Bot-Statistik (nach Bot-Typ):
|
||||||
Googlebot: 456x ███████████████████████████████████████
|
Googlebot: 456x ███████████████████████████████████████
|
||||||
Bingbot (Microsoft): 234x ███████████████████
|
Bingbot (Microsoft): 234x ███████████████████
|
||||||
GPTBot (OpenAI): 189x ███████████████
|
GPTBot (OpenAI): 189x ███████████████
|
||||||
AhrefsBot: 123x ██████████
|
AhrefsBot: 123x ██████████
|
||||||
Bytespider (TikTok/ByteDance): 98x ████████
|
|
||||||
ClaudeBot (Anthropic): 76x ██████
|
|
||||||
Amazonbot: 54x ████
|
|
||||||
...
|
|
||||||
|
|
||||||
📝 Letzte 30 Log-Einträge:
|
|
||||||
[2025-12-09 19:45:23] BOT: Googlebot | IP: 66.249.66.1 | Count: 12/30 | URI: /produkt-123
|
|
||||||
[2025-12-09 19:45:24] BOT: Googlebot | IP: 66.249.66.1 | Count: 13/30 | URI: /kategorie-abc
|
|
||||||
[2025-12-09 19:45:25] BANNED: GPTBot (OpenAI) | IP: 20.15.240.64 | Exceeded 30 req/min | Ban: 5m | UA: ...
|
|
||||||
...
|
...
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -341,31 +323,23 @@ Die Logs zeigen bei Bot-Only Modus auch die Rate-Limit Statistiken:
|
|||||||
|
|
||||||
```
|
```
|
||||||
📊 5/15 Shops aktiv
|
📊 5/15 Shops aktiv
|
||||||
shop1.example.com [Link11] 🇩🇪🇦🇹🇨🇭 🛡️
|
shop1.example.com [Link11] 🇩🇪🇦🇹🇨🇭 🌍
|
||||||
523 blocks, 1h 41m, Cache: ✅8,234
|
523 blocks, 1h 41m, Cache: ✅8,234
|
||||||
shop2.example.com [Direkt] 🤖 🤖
|
shop2.example.com [Direkt] 🤖 🤖
|
||||||
1,234 log entries, 2h 15m, 321 Bot-Patterns, 30 req/min, 3 aktive Bans
|
1,234 log entries, 2h 15m, 321 Patterns, 30 req/min/Bot-Typ, 🚫 AhrefsBot, SemrushBot
|
||||||
shop3.example.com [Direkt] 🇪🇺 📝
|
shop3.example.com [Direkt] 🇪🇺 🌍
|
||||||
312 blocks, 1h 39m, Cache: ✅12,456
|
312 blocks, 1h 39m, Cache: ✅12,456
|
||||||
```
|
```
|
||||||
|
|
||||||
## 🔧 Erweiterte Verwendung
|
## 🔧 Erweiterte Verwendung
|
||||||
|
|
||||||
### Manuell CrowdSec Decisions prüfen
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Alle Decisions anzeigen
|
|
||||||
cscli decisions list --limit 0
|
|
||||||
|
|
||||||
# Nur GeoIP-Blocks anzeigen
|
|
||||||
cscli decisions list --limit 0 | grep "GeoIP"
|
|
||||||
```
|
|
||||||
|
|
||||||
### Rate-Limit Dateien prüfen
|
### Rate-Limit Dateien prüfen
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Aktive Bans anzeigen
|
# Aktive Bans anzeigen (mit Bot-Namen)
|
||||||
find /var/www/vhosts/SHOP/httpdocs/geoip_ratelimit/bans/ -name "*.ban" -exec cat {} \;
|
for f in /var/www/vhosts/SHOP/httpdocs/geoip_ratelimit/bans/*.ban; do
|
||||||
|
[ -f "$f" ] && echo "$(cat $f)"
|
||||||
|
done
|
||||||
|
|
||||||
# Request-Counter anzeigen
|
# Request-Counter anzeigen
|
||||||
find /var/www/vhosts/SHOP/httpdocs/geoip_ratelimit/counts/ -name "*.count" -exec cat {} \;
|
find /var/www/vhosts/SHOP/httpdocs/geoip_ratelimit/counts/ -name "*.count" -exec cat {} \;
|
||||||
@@ -374,40 +348,37 @@ find /var/www/vhosts/SHOP/httpdocs/geoip_ratelimit/counts/ -name "*.count" -exec
|
|||||||
find /var/www/vhosts/SHOP/httpdocs/geoip_ratelimit/bans/ -name "*.ban" | wc -l
|
find /var/www/vhosts/SHOP/httpdocs/geoip_ratelimit/bans/ -name "*.ban" | wc -l
|
||||||
```
|
```
|
||||||
|
|
||||||
### Systemd-Service verwalten
|
### Manuell einen Bot-Typ entbannen
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Status des Watcher-Service
|
# Alle Bans löschen für einen Shop
|
||||||
systemctl status geoip-crowdsec-watcher.service
|
rm -f /var/www/vhosts/SHOP/httpdocs/geoip_ratelimit/bans/*.ban
|
||||||
|
|
||||||
# Logs des Watcher-Service
|
# Alle Counter zurücksetzen
|
||||||
journalctl -u geoip-crowdsec-watcher.service -f
|
rm -f /var/www/vhosts/SHOP/httpdocs/geoip_ratelimit/counts/*.count
|
||||||
|
|
||||||
# Service neu starten
|
|
||||||
systemctl restart geoip-crowdsec-watcher.service
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## 📁 Dateistruktur
|
## 📁 Dateistruktur
|
||||||
|
|
||||||
### Pro Shop (in `/var/www/vhosts/SHOP/httpdocs/`)
|
### Pro Shop (in `/var/www/vhosts/SHOP/httpdocs/`)
|
||||||
|
|
||||||
**GeoIP-Modi:**
|
**GeoIP-Modus:**
|
||||||
- `index.php.geoip_backup` - Backup der Original index.php
|
- `index.php.geoip_backup` - Backup der Original index.php
|
||||||
- `geoip_blocking.php` - PHP-Blocking-Script
|
- `geoip_blocking.php` - PHP-Blocking-Script
|
||||||
- `geoip_ip_ranges.cache` - Gecachte IP-Ranges (erneuert alle 24h)
|
- `geoip_ip_ranges.cache` - Gecachte IP-Ranges (erneuert alle 24h)
|
||||||
- `geoip_blocked.log` - Log der Blocks
|
- `geoip_blocked.log` - Log der Blocks
|
||||||
- `geoip_crowdsec_queue.log` - Queue für CrowdSec (nur +CrowdSec Modi)
|
|
||||||
|
|
||||||
**Bot-Only Modi (zusätzlich):**
|
**Bot-Only Modus:**
|
||||||
|
- `index.php.geoip_backup` - Backup der Original index.php
|
||||||
|
- `geoip_blocking.php` - PHP-Blocking-Script
|
||||||
|
- `geoip_blocked.log` - Log der Bot-Requests und Bans
|
||||||
- `geoip_ratelimit/` - Rate-Limit Verzeichnis
|
- `geoip_ratelimit/` - Rate-Limit Verzeichnis
|
||||||
- `bans/` - Aktive Bans (`.ban` Dateien)
|
- `bans/` - Aktive Bans (`.ban` Dateien, Format: `timestamp|botname`)
|
||||||
- `counts/` - Request-Counter (`.count` Dateien)
|
- `counts/` - Request-Counter (`.count` Dateien)
|
||||||
|
|
||||||
### System-weit
|
### System-weit
|
||||||
|
|
||||||
- `/usr/local/bin/geoip_crowdsec_watcher.py` - Watcher-Service Script
|
- `/var/lib/geoip/active_shops.json` - Tracking aktiver Shops
|
||||||
- `/etc/systemd/system/geoip-crowdsec-watcher.service` - Systemd Service
|
|
||||||
- `/var/lib/crowdsec/geoip_active_shops.json` - Tracking aktiver Shops
|
|
||||||
|
|
||||||
## ⚙️ Konfiguration
|
## ⚙️ Konfiguration
|
||||||
|
|
||||||
@@ -423,7 +394,7 @@ expiry = datetime.now() + timedelta(hours=72) # Hier ändern
|
|||||||
|
|
||||||
```python
|
```python
|
||||||
# Am Anfang des Scripts
|
# Am Anfang des Scripts
|
||||||
DEFAULT_RATE_LIMIT = 30 # Requests pro Minute
|
DEFAULT_RATE_LIMIT = 30 # Requests pro Minute pro Bot-Typ
|
||||||
DEFAULT_BAN_DURATION = 5 # Minuten
|
DEFAULT_BAN_DURATION = 5 # Minuten
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -452,21 +423,20 @@ LINK11_IP = "128.65.223.106" # Hier ändern
|
|||||||
|
|
||||||
### Was wird geblockt?
|
### Was wird geblockt?
|
||||||
|
|
||||||
**GeoIP-Modi:**
|
**GeoIP-Modus:**
|
||||||
- ✅ Alle IPs außerhalb der konfigurierten Region
|
- ✅ Alle IPs außerhalb der konfigurierten Region
|
||||||
- ✅ Auf PHP-Ebene: Sofortiger 403 Response
|
- ✅ Sofortiger 403 Response
|
||||||
- ✅ Auf Firewall-Ebene (+CrowdSec): Alle Ports
|
|
||||||
|
|
||||||
**Bot-Only Modi:**
|
**Bot-Only Modus:**
|
||||||
- ✅ Erkannte Bots die das Rate-Limit überschreiten
|
- ✅ Erkannte Bot-Typen die das Rate-Limit überschreiten
|
||||||
- ✅ Temporärer Ban (konfigurierbare Dauer)
|
- ✅ Temporärer Ban für den gesamten Bot-Typ
|
||||||
- ❌ Bots unter dem Limit werden durchgelassen (gewollt!)
|
- ❌ Bots unter dem Limit werden durchgelassen (gewollt!)
|
||||||
|
|
||||||
### Was wird NICHT geblockt?
|
### Was wird NICHT geblockt?
|
||||||
|
|
||||||
- ✅ Alle IPs aus den erlaubten Ländern (GeoIP-Modi)
|
- ✅ Alle IPs aus den erlaubten Ländern (GeoIP-Modus)
|
||||||
- ✅ Normaler User-Traffic (Bot-Only Modi)
|
- ✅ Normaler User-Traffic (Bot-Only Modus)
|
||||||
- ✅ Bots unter dem Rate-Limit (Bot-Only Modi)
|
- ✅ Bots unter dem Rate-Limit (Bot-Only Modus)
|
||||||
- ✅ Private IPs (192.168.x.x, 10.x.x.x, etc.)
|
- ✅ Private IPs (192.168.x.x, 10.x.x.x, etc.)
|
||||||
- ✅ Localhost (127.0.0.1)
|
- ✅ Localhost (127.0.0.1)
|
||||||
|
|
||||||
@@ -494,35 +464,16 @@ ls -la /var/www/vhosts/SHOP/httpdocs/geoip_ratelimit/
|
|||||||
chmod -R 777 /var/www/vhosts/SHOP/httpdocs/geoip_ratelimit/
|
chmod -R 777 /var/www/vhosts/SHOP/httpdocs/geoip_ratelimit/
|
||||||
```
|
```
|
||||||
|
|
||||||
### Bots werden sofort geblockt (nicht rate-limited)
|
### Bots werden nicht erkannt
|
||||||
|
|
||||||
**Prüfe ob du die aktuelle Version (v3.4.3+) verwendest!**
|
Prüfe ob der User-Agent in den Bot-Patterns enthalten ist:
|
||||||
|
|
||||||
In älteren Versionen wurden Bots sofort geblockt. Ab v3.4.3 werden Bots unter dem Limit durchgelassen.
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Version prüfen
|
# Im Log nach unbekannten Bots suchen
|
||||||
grep "v3." geoip_shop_manager.py
|
grep "Bot (.*)" /var/www/vhosts/SHOP/httpdocs/geoip_blocked.log
|
||||||
|
|
||||||
# Update durchführen
|
|
||||||
wget -O geoip_shop_manager.py https://git.jtl-hosting.de/...
|
|
||||||
|
|
||||||
# Shops neu aktivieren (deaktivieren + aktivieren)
|
|
||||||
# damit das neue PHP-Template angewendet wird
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### Watcher-Service läuft nicht
|
Unbekannte Bots werden als `Bot (crawler)`, `Bot (spider)`, etc. erkannt, wenn sie generische Keywords enthalten.
|
||||||
|
|
||||||
```bash
|
|
||||||
# Status prüfen
|
|
||||||
systemctl status geoip-crowdsec-watcher.service
|
|
||||||
|
|
||||||
# Logs prüfen
|
|
||||||
journalctl -u geoip-crowdsec-watcher.service -n 100
|
|
||||||
|
|
||||||
# Service neu starten
|
|
||||||
systemctl restart geoip-crowdsec-watcher.service
|
|
||||||
```
|
|
||||||
|
|
||||||
### Rate-Limit Verzeichnisse sind leer trotz Bot-Traffic
|
### Rate-Limit Verzeichnisse sind leer trotz Bot-Traffic
|
||||||
|
|
||||||
@@ -535,8 +486,6 @@ for dir in /var/www/vhosts/*/httpdocs/geoip_ratelimit; do
|
|||||||
done
|
done
|
||||||
```
|
```
|
||||||
|
|
||||||
Ab v3.4.2 werden die Verzeichnisse automatisch mit 777 erstellt.
|
|
||||||
|
|
||||||
## 📊 Performance
|
## 📊 Performance
|
||||||
|
|
||||||
### PHP-Level Blocking (GeoIP)
|
### PHP-Level Blocking (GeoIP)
|
||||||
@@ -552,17 +501,12 @@ Ab v3.4.2 werden die Verzeichnisse automatisch mit 777 erstellt.
|
|||||||
- **Ban-Check**: ~0.5ms (schneller Pfad)
|
- **Ban-Check**: ~0.5ms (schneller Pfad)
|
||||||
- **Cleanup**: Probabilistisch (1% der Requests)
|
- **Cleanup**: Probabilistisch (1% der Requests)
|
||||||
|
|
||||||
### CrowdSec Firewall Blocking
|
|
||||||
|
|
||||||
- **Overhead**: 0ms (blockt vor PHP)
|
|
||||||
- **RAM**: ~20-50 MB (Watcher-Service)
|
|
||||||
|
|
||||||
## 📝 Logs und Monitoring
|
## 📝 Logs und Monitoring
|
||||||
|
|
||||||
### PHP-Level Logs
|
### PHP-Level Logs
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Blockierte IPs/Bots für einen Shop
|
# Alle Log-Einträge für einen Shop
|
||||||
tail -f /var/www/vhosts/SHOP/httpdocs/geoip_blocked.log
|
tail -f /var/www/vhosts/SHOP/httpdocs/geoip_blocked.log
|
||||||
|
|
||||||
# Nur BANNED Einträge (Rate-Limit überschritten)
|
# Nur BANNED Einträge (Rate-Limit überschritten)
|
||||||
@@ -570,6 +514,9 @@ grep "BANNED:" /var/www/vhosts/SHOP/httpdocs/geoip_blocked.log
|
|||||||
|
|
||||||
# Nur BOT Einträge (unter Limit, durchgelassen)
|
# Nur BOT Einträge (unter Limit, durchgelassen)
|
||||||
grep "BOT:" /var/www/vhosts/SHOP/httpdocs/geoip_blocked.log
|
grep "BOT:" /var/www/vhosts/SHOP/httpdocs/geoip_blocked.log
|
||||||
|
|
||||||
|
# Nur BLOCKED Einträge (bereits gebannter Bot)
|
||||||
|
grep "BLOCKED (banned):" /var/www/vhosts/SHOP/httpdocs/geoip_blocked.log
|
||||||
```
|
```
|
||||||
|
|
||||||
### Bot-Statistik erstellen
|
### Bot-Statistik erstellen
|
||||||
@@ -582,67 +529,52 @@ grep -oP '(BOT|BANNED): \K[^|]+' /var/www/vhosts/SHOP/httpdocs/geoip_blocked.log
|
|||||||
|
|
||||||
## 📚 Changelog
|
## 📚 Changelog
|
||||||
|
|
||||||
|
### v4.0.0
|
||||||
|
- **BREAKING**: CrowdSec-Integration komplett entfernt
|
||||||
|
- **BREAKING**: Rate-Limiting jetzt nach **Bot-Typ** statt IP+UA
|
||||||
|
- **NEU**: Alle Requests eines Bot-Typs teilen sich EIN Limit
|
||||||
|
- **NEU**: Ban-Dateien speichern Bot-Namen (`timestamp|botname`)
|
||||||
|
- **NEU**: Anzeige der aktuell gebannten Bot-Typen mit Namen
|
||||||
|
- **NEU**: Top 3 Bot-Typen pro Shop in Gesamtübersicht
|
||||||
|
- **NEU**: Vereinfachte Modi: nur noch `geoip` und `bot`
|
||||||
|
- **ENTFERNT**: Watcher-Service (nicht mehr benötigt)
|
||||||
|
- **ENTFERNT**: CrowdSec Queue-Dateien
|
||||||
|
- **ENTFERNT**: Alle CrowdSec-Funktionen
|
||||||
|
|
||||||
### v3.5.0
|
### v3.5.0
|
||||||
- **NEU**: Erweiterte Bot-Erkennung mit **321 Bot-Patterns** (vorher ~35)
|
- Erweiterte Bot-Erkennung mit **321 Bot-Patterns**
|
||||||
- **NEU**: 12 Bot-Kategorien: AI/LLM, Suchmaschinen, SEO, Social Media, E-Commerce, Archiv, Monitoring, Downloader, HTTP Libraries, Security Scanner, Automation, Feed Reader
|
- 12 Bot-Kategorien
|
||||||
- **NEU**: **32 generische Fallback-Patterns** für unbekannte Bots (bot, crawler, spider, etc.)
|
- **32 generische Fallback-Patterns**
|
||||||
- **NEU**: Verbesserte Bot-Namen-Anzeige mit Kontext (z.B. "ClaudeBot (Anthropic)", "Bytespider (TikTok/ByteDance)")
|
|
||||||
- **NEU**: Amazon-Bots komplett: Amazonbot, Amazon-Kendra, AmazonBuyForMe, AMZNKAssocBot
|
|
||||||
- **NEU**: Alle wichtigen AI-Crawler: ChatGPT, Claude, Gemini, Perplexity, Cohere, Mistral, DeepSeek, etc.
|
|
||||||
- **NEU**: Deutsche Preisvergleiche: Idealo, Billiger.de, Guenstiger.de, Ladenzeile
|
|
||||||
- **NEU**: Security Scanner Erkennung: Nessus, SQLMap, Nikto, Burp Suite, OWASP ZAP, etc.
|
|
||||||
|
|
||||||
### v3.4.5
|
### v3.4.x
|
||||||
- **FIX**: Regex delimiter escape für curl pattern
|
- Rate-Limit Logik korrigiert
|
||||||
|
- Verzeichnis-Berechtigungen (0o777)
|
||||||
### v3.4.3
|
- Bot-Namen in Statistiken
|
||||||
- **FIX**: Rate-Limit Logik korrigiert - Bots unter dem Limit werden jetzt durchgelassen
|
|
||||||
- Vorher: Alle erkannten Bots wurden sofort mit 403 geblockt
|
|
||||||
- Nachher: Bots dürfen crawlen bis sie das Limit überschreiten, dann temporärer Ban
|
|
||||||
- PHP-Templates aktualisiert mit korrektem Flowchart
|
|
||||||
|
|
||||||
### v3.4.2
|
|
||||||
- **FIX**: Verzeichnis-Berechtigungen für Rate-Limit (0o777 statt 0o755)
|
|
||||||
- PHP läuft als Domain-User, nicht als root
|
|
||||||
- Explizite `os.chmod()` Aufrufe nach `os.makedirs()`
|
|
||||||
|
|
||||||
### v3.4.1
|
|
||||||
- **FIX**: Bot-Namen werden jetzt korrekt in Statistiken angezeigt
|
|
||||||
- Bot-Name wird direkt aus Log extrahiert (BOT: / BANNED: Prefix)
|
|
||||||
- Fallback auf User-Agent Detection wenn nötig
|
|
||||||
|
|
||||||
### v3.4.0
|
|
||||||
- **NEU**: File-basiertes Rate-Limiting für Bot-Only Modus
|
|
||||||
- **NEU**: Konfigurierbare Rate-Limits (Requests/Minute, Ban-Dauer)
|
|
||||||
- **NEU**: Sliding Window Counter Algorithmus
|
|
||||||
- **NEU**: Probabilistisches Cleanup (1% der Requests)
|
|
||||||
- **NEU**: Ban-Check als schneller Pfad (vor Bot-Detection)
|
|
||||||
|
|
||||||
### v3.3.0
|
### v3.3.0
|
||||||
- **NEU**: Option [7] - Nur direkte Shops aktivieren (ohne Link11)
|
- Option [7] - Nur direkte Shops aktivieren
|
||||||
- **NEU**: Automatische Link11-Erkennung per DNS-Lookup
|
- Link11-Erkennung per DNS-Lookup
|
||||||
- **NEU**: Farbcodierung im Menü (Grün = Link11, Rot = Direkt)
|
- Farbcodierung im Menü
|
||||||
|
|
||||||
### v3.2.0
|
### v3.2.0
|
||||||
- **NEU**: Bot-Only Blocking Modus (weltweit erreichbar, nur Bots blocken)
|
- Bot-Only Blocking Modus
|
||||||
- **NEU**: 4 Blocking-Modi: GeoIP+CrowdSec, GeoIP-only, Bot+CrowdSec, Bot-only
|
- 4 Blocking-Modi
|
||||||
- **NEU**: 30+ Bot-Patterns (GPTBot, ClaudeBot, Googlebot, etc.)
|
|
||||||
|
|
||||||
### v3.1.0
|
### v3.1.0
|
||||||
- **NEU**: Eurozone+GB Region (22 Länder)
|
- Eurozone+GB Region (22 Länder)
|
||||||
- **NEU**: Cache-Validierung mit Mindest-Range-Prüfung
|
- Cache-Validierung
|
||||||
- **NEU**: Fail-Open Mechanismus bei Cache-Fehlern
|
- Fail-Open Mechanismus
|
||||||
|
|
||||||
### v3.0.0
|
### v3.0.0
|
||||||
- **NEU**: DACH-Support (DE, AT, CH)
|
- DACH-Support
|
||||||
- Systemd-Service für Watcher
|
|
||||||
- CrowdSec-Integration
|
- CrowdSec-Integration
|
||||||
- Multi-Shop-Management
|
- Multi-Shop-Management
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
**Version**: 3.5.0
|
**Version**: 4.0.0
|
||||||
**Letztes Update**: Dezember 2025
|
**Letztes Update**: Dezember 2025
|
||||||
**Status**: Production Ready ✅
|
**Status**: Production Ready ✅
|
||||||
**Bot-Patterns**: 321 spezifisch + 32 generisch = 353 total
|
**Bot-Patterns**: 321 spezifisch + 32 generisch = 353 total
|
||||||
|
**Rate-Limiting**: Pro Bot-Typ (nicht pro IP)
|
||||||
**Erlaubte Regionen**: 🇩🇪🇦🇹🇨🇭 DACH | 🇪🇺 Eurozone+GB | 🤖 Bot-Only (weltweit)
|
**Erlaubte Regionen**: 🇩🇪🇦🇹🇨🇭 DACH | 🇪🇺 Eurozone+GB | 🤖 Bot-Only (weltweit)
|
||||||
Reference in New Issue
Block a user