Files
michaelschiemer/docs/components/waf/machine-learning.md
Michael Schiemer 55a330b223 Enable Discovery debug logging for production troubleshooting
- Add DISCOVERY_LOG_LEVEL=debug
- Add DISCOVERY_SHOW_PROGRESS=true
- Temporary changes for debugging InitializerProcessor fixes on production
2025-08-11 20:13:26 +02:00

253 lines
7.4 KiB
Markdown

# WAF Machine Learning
> **Dokumentationshinweis:** Diese Dokumentation ist vollständig aktualisiert und stellt die aktuelle Implementierung der Machine-Learning-Komponente der WAF korrekt dar.
## Übersicht
Die Machine-Learning-Komponente ist das Herzstück des WAF-Systems und ermöglicht die intelligente Erkennung von Bedrohungen und Anomalien in Echtzeit. Sie verwendet fortschrittliche Algorithmen, um normales Verhalten zu lernen und Abweichungen zu identifizieren, die auf potenzielle Angriffe hindeuten könnten.
## MachineLearningEngine
Die `MachineLearningEngine`-Klasse ist die zentrale Komponente des Machine-Learning-Systems:
```php
// Initialisierung
$engine = new MachineLearningEngine(
$enabled,
$extractors,
$detectors,
$clock,
$analysisTimeout,
$confidenceThreshold,
$enableParallelProcessing,
$enableFeatureCaching,
$maxFeaturesPerRequest
);
// Analyse eines Requests
$result = $engine->analyzeRequest($requestData, $context);
```
### Hauptfunktionen
- **Request-Analyse**: Analysiert eingehende Requests auf Anomalien
- **Feature-Extraktion**: Extrahiert relevante Features aus Requests
- **Anomalie-Erkennung**: Identifiziert Abweichungen vom normalen Verhalten
- **Baseline-Management**: Verwaltet und aktualisiert Verhaltensbaselines
- **Modell-Aktualisierung**: Passt Modelle kontinuierlich an neue Daten an
- **Leistungsüberwachung**: Überwacht und optimiert die Leistung des Systems
## Prozessablauf
Der Machine-Learning-Prozess umfasst folgende Schritte:
1. **Feature-Extraktion** (`extractFeatures`):
- Extrahiert relevante Features aus dem Request
- Validiert und normalisiert Features
- Wendet Feature-Caching an, wenn aktiviert
2. **Baseline-Abruf** (`getBaselines`):
- Ruft relevante Baselines für die extrahierten Features ab
- Erstellt neue Baselines, wenn keine existieren
- Verwaltet Baseline-Cache für optimale Leistung
3. **Anomalie-Erkennung** (`detectAnomalies`):
- Wendet verschiedene Detektoren auf die Features an
- Vergleicht Features mit Baselines
- Berechnet Anomalie-Scores und Konfidenzwerte
4. **Konfidenzberechnung** (`calculateOverallConfidence`):
- Aggregiert Ergebnisse verschiedener Detektoren
- Berechnet Gesamtkonfidenz basierend auf gewichteten Scores
- Vergleicht mit Schwellenwert für Entscheidungsfindung
5. **Modell-Aktualisierung** (`updateModels`):
- Aktualisiert Modelle mit neuen Daten
- Passt Baselines an sich ändernde Muster an
- Optimiert Detektoren basierend auf Feedback
## Feature-Extraktion
Die Feature-Extraktion ist ein kritischer Schritt im Machine-Learning-Prozess:
```php
$features = $engine->extractFeatures($requestData, $context);
```
### Feature-Typen
- **Request-Features**: URL-Struktur, Parameter, Header
- **Inhalts-Features**: Payload-Struktur, Entropie, Zeichenverteilung
- **Verhaltens-Features**: Anfragemuster, Sitzungsverhalten, Timing
- **Kontext-Features**: IP-Reputation, Geolocation, Benutzeragent
### Feature-Validierung
Alle extrahierten Features werden validiert, um Qualität und Konsistenz zu gewährleisten:
- Überprüfung auf Vollständigkeit und Gültigkeit
- Normalisierung für konsistente Verarbeitung
- Filterung irrelevanter oder redundanter Features
## Anomalie-Detektoren
Das System verwendet verschiedene Detektoren für unterschiedliche Arten von Anomalien:
### StatisticalAnomalyDetector
Erkennt statistische Abweichungen in numerischen Features:
- Berechnet Z-Scores für numerische Features
- Identifiziert Ausreißer basierend auf statistischen Verteilungen
- Erkennt ungewöhnliche Wertekombinationen
### ClusteringAnomalyDetector
Gruppiert ähnliche Requests und identifiziert Ausreißer:
- Verwendet Clustering-Algorithmen zur Gruppierung ähnlicher Requests
- Berechnet Distanz zu Cluster-Zentren
- Identifiziert isolierte Punkte als potenzielle Anomalien
### Erweiterbarkeit
Das System ist erweiterbar für zusätzliche Detektoren:
```php
// Eigenen Detektor registrieren
$config->registerDetector(new CustomAnomalyDetector());
```
## Baselines
Baselines repräsentieren normales Verhalten und dienen als Referenz für die Anomalie-Erkennung:
### Baseline-Typen
- **Statistische Baselines**: Mittelwerte, Standardabweichungen, Verteilungen
- **Verhaltensbaselines**: Typische Anfragemuster und Sequenzen
- **Inhaltsbaselines**: Normale Payload-Strukturen und Charakteristiken
### Baseline-Management
Baselines werden kontinuierlich aktualisiert und optimiert:
- Automatische Erstellung für neue Feature-Kombinationen
- Regelmäßige Aktualisierung basierend auf neuen Daten
- Gewichtete Historisierung für Stabilität und Aktualität
## Leistungsoptimierung
Die Machine-Learning-Komponente enthält verschiedene Optimierungen:
### Feature-Caching
```php
// Konfiguration
$config->setEnableFeatureCaching(true);
```
Speichert extrahierte Features für ähnliche Requests, um Rechenaufwand zu reduzieren.
### Parallele Verarbeitung
```php
// Konfiguration
$config->setEnableParallelProcessing(true);
```
Verarbeitet Features und Detektoren parallel für verbesserte Leistung.
### Leistungsmetriken
Das System sammelt Leistungsmetriken zur Überwachung und Optimierung:
- Verarbeitungszeiten für verschiedene Phasen
- Feature- und Anomaliezahlen
- Cache-Trefferquoten und Speichernutzung
## Konfiguration
Die Machine-Learning-Komponente bietet umfangreiche Konfigurationsmöglichkeiten:
```php
// config/waf_ml.php
return [
'enabled' => true,
'confidence_threshold' => 0.75,
'analysis_timeout' => 100, // ms
'enable_parallel_processing' => true,
'enable_feature_caching' => true,
'max_features_per_request' => 50,
'detectors' => [
'statistical' => [
'enabled' => true,
'weight' => 0.6
],
'clustering' => [
'enabled' => true,
'weight' => 0.4
]
]
];
```
## Integration mit WAF
Die Machine-Learning-Komponente ist nahtlos in das WAF-System integriert:
```php
// In WAF-Klasse
public function analyzeRequest(Request $request): WafResult
{
$requestData = $this->analyzer->analyze($request);
$mlResult = $this->mlEngine->analyzeRequest($requestData, $this->context);
return new WafResult($requestData, $mlResult);
}
```
## Fehlerbehebung
### Häufige Probleme
1. **Hohe Falsch-Positiv-Rate**:
- Erhöhen Sie den Konfidenz-Schwellenwert
- Aktivieren Sie den Lernmodus für einen längeren Zeitraum
- Überprüfen Sie die Gewichtung der Detektoren
2. **Leistungsprobleme**:
- Aktivieren Sie Feature-Caching
- Reduzieren Sie die maximale Anzahl von Features pro Request
- Optimieren Sie die Detektorkonfiguration
3. **Fehlende Erkennung**:
- Senken Sie den Konfidenz-Schwellenwert
- Aktivieren Sie zusätzliche Detektoren
- Überprüfen Sie die Feature-Extraktion
## Weiterentwicklung
### Geplante Erweiterungen
1. **Feedback-System**:
- Integration von Administratorfeedback
- Automatische Anpassung basierend auf Feedback
- Kontinuierliches Lernen aus Fehlklassifikationen
2. **Erweiterte Detektoren**:
- Deep-Learning-basierte Anomalieerkennung
- Sequenzanalyse für komplexe Angriffsmuster
- Verhaltensbasierte Benutzerprofilierung
3. **Verbesserte Visualisierung**:
- Dashboard für Anomalietrends
- Feature-Wichtigkeitsanalyse
- Echtzeit-Monitoring von Bedrohungen
## Weiterführende Informationen
- [WAF-Übersicht](index.md)
- [WAF-Konfiguration](configuration.md)
- [Sicherheitsrichtlinien](/guides/security.md)