# 🔍 Shop Request Deep Analyse Ein leistungsstarkes Python-Tool zur tiefgehenden Analyse von JTL-Shop Apache/Nginx Logs mit automatischer Bot-Erkennung, Request-Rate-Analyse und intelligenten Blocking-Empfehlungen. ## 📋 Inhaltsverzeichnis - [Features](#-features) - [Voraussetzungen](#-voraussetzungen) - [Installation](#-installation) - [Verwendung](#-verwendung) - [Interaktiver Modus](#interaktiver-modus-empfohlen) - [Kommandozeilen-Modus](#kommandozeilen-modus) - [Analyse-Sektionen](#-analyse-sektionen) - [Ausgabe](#-ausgabe) - [Konfiguration](#-konfiguration) - [Beispiele](#-beispiele) - [Performance](#-performance) - [Troubleshooting](#-troubleshooting) - [Contributing](#-contributing) - [Support](#-support) - [Autor](#-autor) - [Lizenz](#-lizenz) ## ✹ Features ### Kernfunktionen - **Automatische Shop-Erkennung**: Findet alle Domains in `/var/www/vhosts/` automatisch - **Interaktiver Modus**: Benutzerfreundliche Schritt-fĂŒr-Schritt-Konfiguration - **Multi-Core-Verarbeitung**: Nutzt alle verfĂŒgbaren CPU-Cores fĂŒr maximale Performance - **Zeitgenaue Analyse**: PrĂ€zise Zeitberechnung fĂŒr beliebige Zeitfenster (1h - 8760h) - **VollstĂ€ndige Session-Protokollierung**: Alle Interaktionen werden in der Ausgabedatei dokumentiert ### Bot-Erkennung - **User-Agent-Analyse**: Identifiziert ĂŒber 30 verschiedene Bot-Typen - **Verhaltensbasierte Erkennung**: Analysiert Request-Pattern und URL-Vielfalt - **IP-Kategorisierung**: Unterscheidet zwischen Cloud, Datacenter, VPN, Residential IPs - **Verteilte Bot-Erkennung**: Findet Bots, die von mehreren IPs operieren ### Request-Rate-Analyse - **Burst-Pattern-Erkennung**: Identifiziert IPs mit unnatĂŒrlichen Request-Mustern - **Rate-Limiting-Empfehlungen**: Konkrete VorschlĂ€ge fĂŒr nginx/Apache Rate-Limits - **Konfigurierbarer Schwellwert**: Definiere selbst, was als "extreme" Rate gilt - **Perzentil-basierte Statistiken**: Zeigt Verteilung der Request-Raten ### Sicherheitsanalyse - **404-Scanner-Erkennung**: Identifiziert IPs, die nach Schwachstellen suchen - **Brute-Force-Erkennung**: Findet verdĂ€chtige POST-Request-Muster - **Block-Listen-Empfehlung**: Priorisierte Liste von IPs zum Blockieren ## 📩 Voraussetzungen ### System-Requirements - **OS**: Linux (getestet auf Debian/Ubuntu) - **Python**: 3.6 oder höher - **RAM**: Mindestens 2GB empfohlen - **CPU**: Multi-Core fĂŒr optimale Performance ### Benötigte System-Tools ```bash # FĂŒr IP-Informationen apt-get install -y geoip-bin whois # FĂŒr Performance (optional aber empfohlen) apt-get install -y parallel ``` ### Python-Dependencies ```python # Standard-Library (keine pip-Installation nötig) - pathlib - datetime - collections - multiprocessing - concurrent.futures - gzip - re ``` ## 🚀 Installation 1. **Repository klonen** ```bash git clone https://git.jtl-hosting.de/thomasciesla/shop-request-deep-analyse.git cd shop-request-deep-analyse ``` 2. **AusfĂŒhrbar machen** ```bash chmod +x requestanalyse.py ``` 3. **System-Tools installieren** ```bash # Als root oder mit sudo apt-get update apt-get install -y geoip-bin whois ``` ## đŸ’» Verwendung ### Interaktiver Modus (Empfohlen) Starte das Skript ohne Parameter fĂŒr eine gefĂŒhrte Konfiguration: ```bash python3 requestanalyse.py ``` Der interaktive Modus fĂŒhrt durch 4 Schritte: 1. **Shop-Auswahl**: WĂ€hle aus allen verfĂŒgbaren Domains 2. **Zeitspanne**: Definiere den Analysezeitraum (Stunden) 3. **Ergebnisanzahl**: Top N oder ALLE Ergebnisse 4. **Extreme-Rate-Schwellwert**: Ab wann gilt eine IP als extrem? ### Kommandozeilen-Modus FĂŒr Automatisierung und Scripting: ```bash # Basis-Syntax python3 requestanalyse.py [top_n] [--extreme-rate ] # Beispiele python3 requestanalyse.py taschengelddieb.de 24h # 24h, alle Ergebnisse python3 requestanalyse.py taschengelddieb.de 24h 100 # 24h, Top 100 python3 requestanalyse.py 48h 50 # Standard-Domain, 48h, Top 50 python3 requestanalyse.py shop.de 72h 100 --extreme-rate 250 # Mit Custom-Schwellwert ``` ### Parameter-Übersicht | Parameter | Beschreibung | Beispiel | Standard | |-----------|--------------|----------|----------| | `domain` | Zu analysierende Domain | `shop.de` | Interaktiv wĂ€hlen | | `stunden` | Zeitspanne in Stunden | `24h` oder `24` | 48 | | `top_n` | Anzahl der Top-Ergebnisse | `100` | ALLE | | `--extreme-rate` | Request/Minute fĂŒr extreme Rate | `250` | 60 | ## 📊 Analyse-Sektionen Das Tool generiert 13 detaillierte Analyse-Sektionen: ### 1. Gesamtzahl der Requests - Totale Requests im Zeitraum - Durchschnittliche Requests/Stunde ### 2. Top angefragte URLs/Pfade - HĂ€ufigste URLs mit Request-Count - Top-IP pro URL mit Herkunftsinfo ### 3. Top IP-Adressen - IPs nach Request-Anzahl sortiert - VollstĂ€ndige WHOIS-Informationen - ASN und Provider-Details ### 4. User-Agent Analyse - HĂ€ufigste User-Agents - Top-IP pro User-Agent - Bot-Identifikation ### 5. HTTP-Status-Codes - Verteilung der Response-Codes - Fehlerrate-Analyse ### 6. Request-Methoden - GET, POST, HEAD, etc. Verteilung - Ungewöhnliche Methoden-Erkennung ### 7. Bot-Identifikation - Erkannte Bots via User-Agent - Bot-Typen und HĂ€ufigkeit ### 8. Zeitliche Verteilung - Requests pro Stunde - Traffic-Muster-Erkennung ### 9. VerdĂ€chtige AktivitĂ€ten - 404-Fehler-Analyse - POST-Request-Patterns - Potentielle Brute-Force-Versuche ### 10. 404-Fehler IPs - IPs mit vielen 404-Fehlern - Scanner-Identifikation ### 11. IP-Kategorisierung - Cloud-Provider (AWS, Azure, GCP) - Datacenter/Hosting - VPN/Proxy-Dienste - TOR-Netzwerk - Residential IPs - ISP-Klassifizierung ### 12. Request-Rate-Analyse ⭐ ``` =================================================================== TOP IPS NACH MAXIMALER REQUEST-RATE =================================================================== IP | Max/Min | Avg/Min | Total | Bursts | Info --------------------------------------------------------------- 🔮 185.97.5.133 | 312 | 45.2 | 5834 | 234 | DE | AS50873 🟡 37.44.215.0 | 156 | 23.1 | 2341 | 123 | LT | AS44486 ⚠ 95.222.24.0 | 78 | 12.3 | 1234 | 45 | DE | AS3209 📊 Request-Rate Verteilung: 50% der IPs: <= 8 Requests/Minute 90% der IPs: <= 25 Requests/Minute 99% der IPs: <= 112 Requests/Minute 💡 Empfohlene Rate-Limits basierend auf Analyse: Konfigurierter Extreme-Schwellwert: 250 Requests/Minute ✅ NORMAL TRAFFIC: Die meisten IPs haben niedrige Raten - Standard-Limit: 20-30 Requests/Minute - Burst-Limit: 5-10 Requests/10 Sekunden ``` ### 13. Bot-Pattern-Analyse & Entscheidungshilfe ⭐ - Kombinierte Analyse aller Faktoren - Konkrete Block-Empfehlungen mit BegrĂŒndung - Top angefragte URLs pro verdĂ€chtiger IP ## 📁 Ausgabe ### Dateiname-Format ``` shop_analyse_h__.txt # Beispiel: shop_analyse_24h_top100_20240115_143022.txt ``` ### Ausgabe-Inhalt - VollstĂ€ndiges Interaktions-Protokoll - Alle Analyse-Sektionen - Formatierte Tabellen und Listen - Emoji-Indikatoren fĂŒr schnelle Übersicht - Konkrete Handlungsempfehlungen ## ⚙ Konfiguration ### Extreme-Rate-Schwellwerte Empfohlene Werte je nach Shop-Typ: | Shop-Typ | Schwellwert | Requests/Sekunde | Anwendungsfall | |----------|-------------|------------------|----------------| | Standard | 60 | 1/sec | Normale Shops mit moderatem Traffic | | AJAX-Heavy | 120 | 2/sec | Shops mit vielen dynamischen Elementen | | High-Traffic | 250 | ~4/sec | Große Shops, Sale-Events | | API-Intensive | 600 | 10/sec | Shops mit Mobile-Apps, API-Nutzung | ### Log-Verzeichnisse Standard-Struktur: ``` /var/www/vhosts/ ├── domain1.de/ │ └── logs/ │ ├── access_log │ ├── access_ssl_log │ └── *.gz ├── domain2.de/ │ └── logs/ ... ``` ## 📚 Beispiele ### Beispiel 1: Schnelle Bot-Analyse ```bash # Letzte 6 Stunden, Top 50 IPs, Standard-Schwellwert python3 requestanalyse.py meinshop.de 6h 50 ``` ### Beispiel 2: Detaillierte Sicherheitsanalyse ```bash # 48 Stunden, alle Ergebnisse, strenger Schwellwert python3 requestanalyse.py meinshop.de 48h --extreme-rate 30 ``` ### Beispiel 3: Performance-Monitoring ```bash # 24 Stunden, Top 100, hoher Schwellwert fĂŒr API-Traffic python3 requestanalyse.py api.shop.de 24h 100 --extreme-rate 600 ``` ### Beispiel 4: Automatisierte tĂ€gliche Analyse ```bash #!/bin/bash # Cron-Job fĂŒr tĂ€gliche Analyse python3 /path/to/requestanalyse.py shop.de 24h 100 --extreme-rate 120 ``` ## ⚡ Performance ### Optimierungen - **Parallel Processing**: Nutzt N-4 CPU-Cores (reserviert 4 fĂŒr System) - **Batch-IP-Lookups**: Gruppiert WHOIS-Anfragen - **Stream-Processing**: Verarbeitet große Logs ohne vollstĂ€ndiges Laden - **Cache-System**: Vermeidet doppelte IP-Lookups ### Performance-Metriken | Log-GrĂ¶ĂŸe | Requests | Dauer (8 Cores) | Dauer (1 Core) | |-----------|----------|-----------------|----------------| | 100 MB | 500k | ~30 Sekunden | ~3 Minuten | | 1 GB | 5M | ~5 Minuten | ~30 Minuten | | 10 GB | 50M | ~45 Minuten | ~4 Stunden | ## 🔧 Troubleshooting ### Problem: "geoiplookup: command not found" ```bash apt-get install -y geoip-bin ``` ### Problem: Keine Domains gefunden - PrĂŒfe Pfad: `/var/www/vhosts/` - PrĂŒfe Log-Verzeichnisse: `logs/` - PrĂŒfe Berechtigungen ### Problem: Langsame Analyse - Installiere GNU Parallel: `apt-get install -y parallel` - Reduziere Zeitfenster oder nutze Top-N-Limit - PrĂŒfe verfĂŒgbare CPU-Cores: `nproc` ### Problem: Fehlende Log-EintrĂ€ge - PrĂŒfe Zeitzone-Einstellungen - Verifiziere Log-Rotation - Kontrolliere Apache/Nginx-Konfiguration ## đŸ€ Contributing Contributions sind willkommen! Bitte erstelle ein Issue oder einen Merge Request: - **Issues**: [https://git.jtl-hosting.de/thomasciesla/shop-request-deep-analyse/issues](https://git.jtl-hosting.de/thomasciesla/shop-request-deep-analyse/issues) - **Merge Requests**: [https://git.jtl-hosting.de/thomasciesla/shop-request-deep-analyse/pulls](https://git.jtl-hosting.de/thomasciesla/shop-request-deep-analyse/pulls) ### Development Guidelines 1. Teste mit verschiedenen Log-Formaten 2. Behalte Python 3.6+ KompatibilitĂ€t 3. Dokumentiere neue Features 4. FĂŒge Beispiele hinzu ## 📧 Support Bei Fragen oder Problemen: - **E-Mail**: thomas.ciesla@jtl-software.com - **Teams**: thomas.ciesla@jtl-software.com - **GitLab Issues**: [Issue erstellen](https://git.jtl-hosting.de/thomasciesla/shop-request-deep-analyse/issues/new) ## đŸ‘šâ€đŸ’» Autor **Thomas Ciesla** System Administrator @ JTL-Software E-Mail/Teams: thomas.ciesla@jtl-software.com ## 📄 Lizenz Dieses Projekt ist proprietĂ€r und zur internen Nutzung bei JTL-Software bestimmt. --- Made with ❀ for JTL-Shop Infrastructure Management