364 lines
11 KiB
Markdown
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 |