From 111782e9553e0a7f5d885cbee1a275c0d8779f1e Mon Sep 17 00:00:00 2001 From: thomasciesla Date: Tue, 9 Dec 2025 07:35:52 +0100 Subject: [PATCH] README.md aktualisiert --- README.md | 149 +++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 114 insertions(+), 35 deletions(-) diff --git a/README.md b/README.md index 6c21e20..f9d4289 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,8 @@ Dieses Tool ermöglicht es, einzelne oder alle Shops auf einem Plesk-Server temp - ✅ **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 100 IPs) +- ✅ **Bot-Erkennung**: Automatische Identifikation von 80+ Bots/Crawlern (Googlebot, GPTBot, AhrefsBot, etc.) +- ✅ **Request-Statistiken**: Requests pro Minute (req/min) und Laufzeit pro Shop - ✅ **Auto-Deaktivierung**: Blocking läuft nach 72 Stunden automatisch ab - ✅ **Systemd-Service**: Automatischer Start beim Booten - ✅ **Sauberes Cleanup**: Vollständige Deinstallation bei Deaktivierung @@ -265,60 +267,82 @@ Die Icons zeigen den Modus: #### Option [0]: Gesamtübersicht aller Shops -Zeigt eine aggregierte Statistik über alle aktiven Shops: +Zeigt eine aggregierte Statistik über alle aktiven Shops mit **Requests pro Minute** und **Bot-Erkennung**: ``` -════════════════════════════════════════════════════════════════ +══════════════════════════════════════════════════════════════════════ 📊 GESAMTÜBERSICHT ALLER SHOPS -════════════════════════════════════════════════════════════════ +══════════════════════════════════════════════════════════════════════ -📝 PHP-Blocks gesamt: 1.247 - ├─ shop1.example.com: 523 █████████████████████ - ├─ shop2.example.com: 412 ████████████████ - └─ shop3.example.com: 312 ████████████ +📝 PHP-Blocks gesamt: 173319 (⌀ 42.3 req/min, Laufzeit: 2d 20h 15m) + ├─ air-suspension-parts.de: 19243 (8.2 req/min, seit 39h 12m) ████████████████ + ├─ gastro-shop-24.com: 20959 (12.1 req/min, seit 28h 45m) ████████████████████████ + ├─ horchakustik-shop.de: 29978 (15.3 req/min, seit 32h 38m) ██████████████████████████████ + ├─ leonessa.at: 12554 (5.8 req/min, seit 36h 05m) ███████████ + └─ verve-klima.de: 18412 (9.1 req/min, seit 33h 42m) ██████████████████ 🛡️ CrowdSec-Bans gesamt: 892 - ├─ shop1.example.com: 401 ████████████████ - ├─ shop2.example.com: 298 ███████████ - └─ shop3.example.com: 193 ███████ + ├─ air-suspension-parts.de: 401 ████████████████ + ├─ gastro-shop-24.com: 298 ███████████ + └─ horchakustik-shop.de: 193 ███████ 🔥 Top 100 blockierte IPs (alle Shops): - 185.220.101.34: 127 █████████████████████████ - 45.95.169.22: 89 █████████████████ - 194.26.192.64: 67 █████████████ + 66.249.66.10 (Googlebot): 7025 ████████████████████ + 66.249.66.169 (Googlebot): 6179 ████████████████████ + 40.77.167.27 (Bingbot): 571 ████████████████████ + 173.0.81.65 (PayPal IPN): 466 ████████████████████ + 216.244.66.196 (DotBot): 416 ████████████████████ + 185.191.171.5 (SemrushBot): 312 ████████████████████ + 35.187.50.162 (Unbekannt): 1035 ████████████████████ ... -════════════════════════════════════════════════════════════════ +══════════════════════════════════════════════════════════════════════ ``` **Enthält:** -- PHP-Blocks pro Shop mit visuellen Balken -- CrowdSec-Bans pro Shop (nur für PHP+CrowdSec Shops) -- Top 100 der am häufigsten blockierten IPs über alle Shops hinweg +- **PHP-Blocks gesamt** mit durchschnittlicher Request-Rate und Gesamtlaufzeit +- **Pro Shop**: Anzahl Blocks, req/min, Laufzeit seit Aktivierung, visueller Balken +- **CrowdSec-Bans** pro Shop (nur für PHP+CrowdSec Shops) +- **Top 100 blockierte IPs** mit automatischer Bot-Erkennung #### Option [1-n]: Einzelner Shop Zeigt detaillierte Logs für einen spezifischen Shop: ``` +══════════════════════════════════════════════════════════════════════ 📊 Logs für shop1.example.com [PHP + CrowdSec 🛡️] +══════════════════════════════════════════════════════════════════════ -📝 PHP-Blocks: -================================================================================ -[2025-12-08 17:24:57] IP: 202.8.43.232 | UA: Mozilla/5.0 ... | URI: /produkt-123 +⏱️ Aktiviert: 2025-12-08 14:30:00 +⏱️ Laufzeit: 1d 18h 45m +📈 Blocks: 19243 (8.2 req/min) + +📝 Letzte 50 PHP-Blocks: +====================================================================== +[2025-12-10 09:15:23] IP: 66.249.66.10 | UA: Mozilla/5.0 (compatible; Googlebot/2.1) | URI: /produkt-123 +[2025-12-10 09:15:21] IP: 40.77.167.27 | UA: Mozilla/5.0 (compatible; bingbot/2.0) | URI: /kategorie ... -================================================================================ -Gesamt: 523 +====================================================================== +Gesamt: 19243 + +🔥 Top 20 blockierte IPs: + 66.249.66.10 (Googlebot): 2341 ████████████████████ + 40.77.167.27 (Bingbot): 892 ████████████████████ + 216.244.66.196 (DotBot): 234 ████████████████████ + 185.191.171.5 (SemrushBot): 189 ████████████████████ + 52.167.144.225 (Unbekannt): 156 ████████████████████ + ... 🛡️ CrowdSec Decisions: -================================================================================ +====================================================================== Aktive Bans: 401 Letzte 20 Bans: 🚫 202.8.43.232 (bis 2025-12-11 17:24:57) 🚫 45.95.169.22 (bis 2025-12-11 16:30:12) ... -================================================================================ +====================================================================== ``` Bei PHP-only Shops wird stattdessen angezeigt: @@ -331,19 +355,50 @@ Bei PHP-only Shops wird stattdessen angezeigt: Option `[4] Status anzeigen` zeigt: - Anzahl verfügbarer Shops - Anzahl aktiver Blockings -- Liste aller Shops mit aktivem Blocking **und deren Modus** +- Liste aller Shops mit aktivem Blocking, **Modus**, **Blocks**, **req/min** und **Laufzeit** ``` 📊 Status: Shops gesamt: 15 Aktive DACH-Blockings: 5 - ✓ shop1.example.com [PHP+CS] 🛡️ - ✓ shop2.example.com [PHP] 📝 - ✓ shop3.example.com [PHP] 📝 - ✓ shop4.example.com [PHP+CS] 🛡️ - ✓ shop5.example.com [PHP] 📝 + ✓ shop1.example.com [PHP+CS] 🛡️ - 19243 blocks (8.2 req/min, 1d 18h 45m) + ✓ shop2.example.com [PHP] 📝 - 12554 blocks (5.8 req/min, 2d 3h 12m) + ✓ shop3.example.com [PHP] 📝 - 8921 blocks (4.1 req/min, 1d 12h 30m) + ✓ shop4.example.com [PHP+CS] 🛡️ - 29978 blocks (15.3 req/min, 1d 8h 22m) + ✓ shop5.example.com [PHP] 📝 - 3456 blocks (2.3 req/min, 1d 1h 05m) ``` +## 🤖 Bot-Erkennung + +Das Script erkennt automatisch über **80 verschiedene Bots und Crawler** anhand des User-Agent-Strings. Die erkannten Bots werden in den Logs hinter der IP-Adresse angezeigt. + +### Erkannte Bot-Kategorien + +| Kategorie | Bots | +|-----------|------| +| **AI/LLM Crawler** | GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-User, PerplexityBot, Gemini-Deep-Research, cohere-ai, MistralAI-User, AI2Bot, CCBot | +| **Suchmaschinen** | Googlebot, Bingbot, YandexBot, Baiduspider, DuckDuckBot, Applebot, PetalBot, Sogou, Qwantify | +| **SEO-Tools** | AhrefsBot, SemrushBot, MJ12bot, DotBot, BLEXBot, DataForSeoBot, SEOkicks, Screaming Frog, Sistrix | +| **Social Media** | FacebookBot, LinkedInBot, Twitterbot, Pinterest, Slackbot, TelegramBot, WhatsApp, Discordbot | +| **Monitoring** | UptimeRobot, Pingdom, StatusCake, GTmetrix, Site24x7 | +| **E-Commerce** | PayPal IPN, Stripe, Shopify, Amazonbot | +| **Andere** | Bytespider (TikTok), Diffbot, Wget, curl, python-requests, HeadlessChrome, Scrapy | + +### Beispiel-Ausgabe mit Bot-Erkennung + +``` +🔥 Top 100 blockierte IPs (alle Shops): + 66.249.66.10 (Googlebot): 7025 ████████████████████ + 40.77.167.27 (Bingbot): 571 ████████████████████ + 173.0.81.65 (PayPal IPN): 466 ████████████████████ + 216.244.66.196 (DotBot): 416 ████████████████████ + 185.191.171.5 (SemrushBot): 312 ████████████████████ + 54.36.148.0 (AhrefsBot): 289 ████████████████████ + 35.187.50.162 (Unbekannt): 1035 ████████████████████ +``` + +Wenn kein Bot erkannt wird, wird `Unbekannt` angezeigt. + ## 🔧 Erweiterte Verwendung ### Manuell CrowdSec Decisions prüfen @@ -418,7 +473,7 @@ cscli decisions delete --ip DEINE_IP - `/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 (inkl. Modus) +- `/var/lib/crowdsec/geoip_active_shops.json` - Tracking aktiver Shops (inkl. Modus und Aktivierungszeit) ## ⚙️ Konfiguration @@ -467,6 +522,17 @@ $countries = ['de', 'at', 'ch']; // Germany, Austria, Switzerland Füge weitere Ländercodes hinzu (z.B. `'nl'` für Niederlande, `'be'` für Belgien). Die verfügbaren Ländercodes findest du unter: https://www.ipdeny.com/ipblocks/data/aggregated/ +### Bot-Erkennung erweitern + +Um weitere Bots zur Erkennung hinzuzufügen, editiere das `BOT_PATTERNS` Dictionary im Python-Script: + +```python +BOT_PATTERNS = { + # Existierende Patterns... + 'MeinNeuerBot': r'MeinNeuerBot', # Regex-Pattern für User-Agent +} +``` + ## 🛡️ Sicherheit ### Was wird geblockt? @@ -742,9 +808,11 @@ cat /var/www/vhosts/SHOP/httpdocs/geoip_blocked.log | \ ### Während aktivem Blocking 1. ✅ Logs regelmäßig prüfen (Gesamtübersicht nutzen!) -2. ✅ Auf Fehlblockierungen achten (sehr selten) -3. ✅ CrowdSec-Statistiken beobachten (nur bei PHP+CrowdSec) -4. ✅ Server-Performance monitoren +2. ✅ **req/min beobachten** - hohe Werte können auf Angriffe hindeuten +3. ✅ **Bot-Traffic analysieren** - welche Crawler werden geblockt? +4. ✅ Auf Fehlblockierungen achten (sehr selten) +5. ✅ CrowdSec-Statistiken beobachten (nur bei PHP+CrowdSec) +6. ✅ Server-Performance monitoren ### Nach Deaktivierung @@ -773,6 +841,7 @@ cat /var/www/vhosts/SHOP/httpdocs/geoip_blocked.log | \ - ✅ Nicht als permanente Lösung - ✅ Kombinieren mit anderen Security-Maßnahmen - ✅ Regelmäßig Logs prüfen (Gesamtübersicht für schnellen Überblick) +- ✅ **req/min im Auge behalten** für Anomalie-Erkennung - ✅ Bei CDN: PHP-only Modus verwenden ## 🤝 Contributing @@ -793,6 +862,7 @@ MIT License - siehe LICENSE Datei - **IP-Ranges**: [ipdeny.com](https://www.ipdeny.com/) (RIPE-basiert) - **CrowdSec**: [crowdsec.net](https://www.crowdsec.net/) +- **Bot-Listen**: [momenticmarketing.com](https://momenticmarketing.com/blog/ai-search-crawlers-bots), [searchenginejournal.com](https://www.searchenginejournal.com/ai-crawler-user-agents-list/558130/) - **Entwickelt für**: Plesk-basierte Multi-Shop-Server ## 📞 Support @@ -816,13 +886,22 @@ Bei Problemen: --- -**Version**: 2.2.0 (DACH) +**Version**: 2.3.0 (DACH) **Letztes Update**: Dezember 2025 **Status**: Production Ready ✅ **Erlaubte Länder**: 🇩🇪 Deutschland | 🇦🇹 Österreich | 🇨🇭 Schweiz ### Changelog +#### v2.3.0 +- **NEU**: Bot-Erkennung mit 80+ bekannten Bots/Crawlern (Googlebot, GPTBot, ClaudeBot, AhrefsBot, SemrushBot, etc.) +- **NEU**: Requests pro Minute (req/min) Berechnung pro Shop +- **NEU**: Laufzeit-Anzeige seit Aktivierung (z.B. "1d 18h 45m") +- **NEU**: Erweiterte Status-Ansicht mit Blocks, req/min und Laufzeit +- **NEU**: Top 20 IPs mit Bot-Erkennung in Einzelshop-Logs +- Bot-Kategorien: AI/LLM, Suchmaschinen, SEO-Tools, Social Media, Monitoring, E-Commerce +- Verbesserte Gesamtübersicht mit durchschnittlicher Request-Rate + #### v2.2.0 - **NEU**: Modus-Auswahl bei Aktivierung (PHP+CrowdSec 🛡️ oder Nur PHP 📝) - **NEU**: PHP-only Modus für Server hinter CDN/Reverse-Proxy (Link11, Cloudflare)