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

🔍 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

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

  1. Repository klonen
git clone https://git.jtl-hosting.de/thomasciesla/shop-request-deep-analyse.git
cd shop-request-deep-analyse
  1. Ausführbar machen
chmod +x requestanalyse.py
  1. 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:

  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:

# 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:

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:

👨‍💻 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

Description
Das Skript gibt eine sehr tiefgründige und ausführliche Analyse bzgl Zugriffe auf einem JTL Shop.
Readme 46 KiB
Languages
Python 100%