Files
michaelschiemer/docs/components/waf/configuration.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

6.9 KiB

WAF Konfiguration

Dokumentationshinweis: Diese Dokumentation ist vollständig aktualisiert und stellt die aktuelle Implementierung der WAF-Konfiguration korrekt dar.

Übersicht

Die Web Application Firewall (WAF) bietet umfangreiche Konfigurationsmöglichkeiten, um das Sicherheitsniveau und die Leistung an die Anforderungen Ihrer Anwendung anzupassen. Diese Dokumentation beschreibt die verfügbaren Konfigurationsoptionen und wie Sie diese anwenden können.

Konfigurationsklasse

Die zentrale Klasse für die WAF-Konfiguration ist WafConfig. Diese Klasse enthält alle Einstellungen, die das Verhalten der WAF steuern:

// Konfiguration erstellen
$config = new WafConfig(
    $enabled,
    $defaultLayerConfig,
    $globalTimeout,
    $blockingThreshold,
    $alertThreshold,
    $parallelProcessing,
    $maxParallelLayers,
    $detailedLogging,
    $metricsEnabled,
    $enabledLayers,
    $layerConfigs,
    $customSettings
);

Vordefinierte Konfigurationen

Die WafConfig-Klasse bietet mehrere vordefinierte Konfigurationen für verschiedene Umgebungen:

Produktionsumgebung

// Produktionskonfiguration verwenden
$config = WafConfig::production();

Die Produktionskonfiguration aktiviert alle Sicherheitsfeatures mit strengen Einstellungen:

  • Alle Schutzebenen aktiviert
  • Niedrige Schwellenwerte für Blockierung
  • Parallele Verarbeitung für optimale Leistung
  • Detaillierte Metriken für Überwachung

Entwicklungsumgebung

// Entwicklungskonfiguration verwenden
$config = WafConfig::development();

Die Entwicklungskonfiguration ist weniger streng und bietet:

  • Höhere Schwellenwerte für Blockierung
  • Detailliertes Logging für Debugging
  • Alle Schutzebenen aktiviert, aber mit weniger strengen Einstellungen

Testumgebung

// Testkonfiguration verwenden
$config = WafConfig::testing();

Die Testkonfiguration ist für automatisierte Tests optimiert:

  • Reduzierte Timeouts
  • Deaktivierte parallele Verarbeitung
  • Minimales Logging

Deaktivierte Konfiguration

// WAF deaktivieren
$config = WafConfig::disabled();

Diese Konfiguration deaktiviert die WAF vollständig, was für bestimmte Entwicklungs- oder Diagnoseszenarien nützlich sein kann.

Hauptkonfigurationsoptionen

Aktivierung/Deaktivierung

// WAF aktivieren
$config = $config->enable();

// WAF deaktivieren
$config = $config->disable();

Timeout-Einstellungen

// Globales Timeout für WAF-Verarbeitung setzen
$config = $config->withGlobalTimeout(Duration::fromMilliseconds(100));

Schwellenwerte

// Schwellenwert für Blockierung setzen
$config = $config->withBlockingThreshold(Percentage::fromFloat(0.75));

Der Blockierungsschwellenwert bestimmt, ab welchem Konfidenzwert ein Request blockiert wird. Ein höherer Wert bedeutet weniger Blockierungen (und potenziell mehr falsch negative Ergebnisse), während ein niedrigerer Wert mehr Blockierungen (und potenziell mehr falsch positive Ergebnisse) bedeutet.

Schutzebenen-Konfiguration

Die WAF verwendet ein mehrschichtiges Schutzsystem. Jede Schutzebene kann individuell konfiguriert werden:

// Schutzebene aktivieren mit benutzerdefinierter Konfiguration
$config = $config->enableLayer(
    'statistical',
    new LayerConfig(
        $enabled = true,
        $weight = 0.6,
        $threshold = Percentage::fromFloat(0.7),
        $timeout = Duration::fromMilliseconds(50)
    )
);

// Schutzebene deaktivieren
$config = $config->disableLayer('clustering');

Verfügbare Schutzebenen

  • statistical: Statistische Anomalieerkennung
  • clustering: Clustering-basierte Anomalieerkennung
  • signature: Signaturbasierte Erkennung bekannter Angriffsmuster
  • behavioral: Verhaltensbasierte Anomalieerkennung
  • ratelimiting: Ratenbegrenzung für Anfragen

Benutzerdefinierte Einstellungen

Die WAF unterstützt benutzerdefinierte Einstellungen für spezielle Anwendungsfälle:

// Benutzerdefinierte Einstellung hinzufügen
$config = $config->withCustomSetting('whitelist_ips', ['127.0.0.1', '192.168.1.1']);

// Benutzerdefinierte Einstellung abrufen
$whitelistIps = $config->getCustomSetting('whitelist_ips', []);

Konfigurationsvalidierung

Die WAF-Konfiguration kann validiert werden, um sicherzustellen, dass alle Einstellungen gültig sind:

// Konfiguration validieren
$validationErrors = $config->validate();

// Prüfen, ob die Konfiguration gültig ist
if (!$config->isValid()) {
    // Fehlerbehandlung
}

Konfiguration in der Anwendung

Konfigurationsdatei

Die WAF-Konfiguration kann in einer dedizierten Konfigurationsdatei definiert werden:

// config/waf.php
return [
    'enabled' => true,
    'learning_mode' => false,
    'threshold' => 0.75,
    'detectors' => [
        'statistical' => true,
        'clustering' => true
    ],
    'whitelist' => [
        'ips' => ['127.0.0.1'],
        'paths' => ['/api/health']
    ]
];

Laufzeitkonfiguration

Die WAF-Konfiguration kann zur Laufzeit aktualisiert werden:

// WAF-Konfiguration aktualisieren
$waf->updateConfig($newConfig);

Leistungsoptimierung

Parallele Verarbeitung

Die parallele Verarbeitung kann die Leistung der WAF verbessern, insbesondere bei mehreren aktivierten Schutzebenen:

// Parallele Verarbeitung aktivieren
$config = new WafConfig(
    $enabled = true,
    $defaultLayerConfig,
    $globalTimeout,
    $blockingThreshold,
    $alertThreshold,
    $parallelProcessing = true,
    $maxParallelLayers = 4,
    $detailedLogging,
    $metricsEnabled,
    $enabledLayers,
    $layerConfigs,
    $customSettings
);

Caching

Die WAF unterstützt Caching für wiederholte Anfragen, um die Leistung zu verbessern:

// Benutzerdefinierte Caching-Einstellungen
$config = $config->withCustomSetting('cache_ttl', 300); // 5 Minuten
$config = $config->withCustomSetting('cache_size', 1000); // 1000 Einträge

Fehlerbehebung

Logging

Detailliertes Logging kann für die Fehlerbehebung aktiviert werden:

// Detailliertes Logging aktivieren
$config = new WafConfig(
    $enabled = true,
    $defaultLayerConfig,
    $globalTimeout,
    $blockingThreshold,
    $alertThreshold,
    $parallelProcessing,
    $maxParallelLayers,
    $detailedLogging = true,
    $metricsEnabled,
    $enabledLayers,
    $layerConfigs,
    $customSettings
);

Metriken

Die WAF kann Metriken zur Leistung und Effektivität sammeln:

// Metriken aktivieren
$config = new WafConfig(
    $enabled = true,
    $defaultLayerConfig,
    $globalTimeout,
    $blockingThreshold,
    $alertThreshold,
    $parallelProcessing,
    $maxParallelLayers,
    $detailedLogging,
    $metricsEnabled = true,
    $enabledLayers,
    $layerConfigs,
    $customSettings
);

Weiterführende Informationen