Files
2025-10-24 20:40:17 +02:00

364 lines
11 KiB
Markdown

# 🔍 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 <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
```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