🔍 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
- Voraussetzungen
- Installation
- Verwendung
- Analyse-Sektionen
- Ausgabe
- Konfiguration
- Beispiele
- Performance
- Troubleshooting
- Contributing
- Support
- Autor
- 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
# Für IP-Informationen
apt-get install -y geoip-bin whois
# Für Performance (optional aber empfohlen)
apt-get install -y parallel
Python-Dependencies
# Standard-Library (keine pip-Installation nötig)
- pathlib
- datetime
- collections
- multiprocessing
- concurrent.futures
- gzip
- re
🚀 Installation
- Repository klonen
git clone https://git.jtl-hosting.de/thomasciesla/shop-request-deep-analyse.git
cd shop-request-deep-analyse
- Ausführbar machen
chmod +x requestanalyse.py
- System-Tools installieren
# 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:
python3 requestanalyse.py
Der interaktive Modus führt durch 4 Schritte:
- Shop-Auswahl: Wähle aus allen verfügbaren Domains
- Zeitspanne: Definiere den Analysezeitraum (Stunden)
- Ergebnisanzahl: Top N oder ALLE Ergebnisse
- Extreme-Rate-Schwellwert: Ab wann gilt eine IP als extrem?
Kommandozeilen-Modus
Für Automatisierung und Scripting:
# Basis-Syntax
python3 requestanalyse.py <domain> <stunden> [top_n] [--extreme-rate <wert>]
# 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_<STUNDEN>h_<TOP_N>_<TIMESTAMP>.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
# Letzte 6 Stunden, Top 50 IPs, Standard-Schwellwert
python3 requestanalyse.py meinshop.de 6h 50
Beispiel 2: Detaillierte Sicherheitsanalyse
# 48 Stunden, alle Ergebnisse, strenger Schwellwert
python3 requestanalyse.py meinshop.de 48h --extreme-rate 30
Beispiel 3: Performance-Monitoring
# 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
#!/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"
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
- Merge Requests: https://git.jtl-hosting.de/thomasciesla/shop-request-deep-analyse/pulls
Development Guidelines
- Teste mit verschiedenen Log-Formaten
- Behalte Python 3.6+ Kompatibilität
- Dokumentiere neue Features
- 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
👨💻 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