Fehlerbehebung
Diese Seite behandelt die häufigsten Probleme beim Betrieb von PRX-WAF, zusammen mit deren Ursachen und Lösungen.
Datenbankverbindung schlägt fehl
Symptome: PRX-WAF startet nicht mit "connection refused"- oder "authentication failed"-Fehlern.
Lösungen:
- Verifizieren, dass PostgreSQL läuft:
# Docker
docker compose ps postgres
# systemd
sudo systemctl status postgresql- Konnektivität testen:
psql "postgresql://prx_waf:[email protected]:5432/prx_waf"- Den Verbindungsstring in der TOML-Konfiguration prüfen:
[storage]
database_url = "postgresql://prx_waf:[email protected]:5432/prx_waf"- Migrationen ausführen, wenn die Datenbank existiert, aber Tabellen fehlen:
prx-waf -c configs/default.toml migrateRegeln werden nicht geladen
Symptome: PRX-WAF startet, aber keine Regeln sind aktiv. Angriffe werden nicht erkannt.
Lösungen:
- Regelstatistiken prüfen:
prx-waf rules statsWenn die Ausgabe 0 Regeln zeigt, ist das Regelverzeichnis möglicherweise leer oder falsch konfiguriert.
- Den Regelverzeichnispfad in der Konfiguration verifizieren:
[rules]
dir = "rules/"- Regeldateien validieren:
python rules/tools/validate.py rules/- Auf YAML-Syntaxfehler prüfen -- eine einzige fehlerhafte Datei kann verhindern, dass alle Regeln geladen werden:
# Eine Datei nach der anderen validieren, um das Problem zu finden
python rules/tools/validate.py rules/owasp-crs/sqli.yaml- Sicherstellen, dass eingebaute Regeln aktiviert sind:
[rules]
enable_builtin_owasp = true
enable_builtin_bot = true
enable_builtin_scanner = trueHot-Reload funktioniert nicht
Symptome: Regeldateien werden geändert, aber Änderungen werden nicht wirksam.
Lösungen:
- Verifizieren, dass Hot-Reload aktiviert ist:
[rules]
hot_reload = true
reload_debounce_ms = 500- Manuellen Reload auslösen:
prx-waf rules reload- SIGHUP senden:
kill -HUP $(pgrep prx-waf)- Dateisystem-Watch-Limits prüfen (Linux):
cat /proc/sys/fs/inotify/max_user_watches
# Wenn zu niedrig, erhöhen:
echo "fs.inotify.max_user_watches=524288" | sudo tee -a /etc/sysctl.conf
sudo sysctl -pFalsch-Positive
Symptome: Legitime Anfragen werden blockiert (403 Forbidden).
Lösungen:
- Die blockierende Regel aus den Sicherheitsereignissen identifizieren:
curl -H "Authorization: Bearer $TOKEN" http://localhost:9527/api/security-eventsDas rule_id-Feld im Ereignis suchen.
- Die spezifische Regel deaktivieren:
prx-waf rules disable CRS-942100Paranoia-Stufe senken. Wenn bei Paranoia 2+, auf 1 reduzieren.
Die Regel in den Log-Modus umschalten zur Überwachung anstatt Blockierung:
Regeldatei bearbeiten und action: "block" zu action: "log" ändern, dann neu laden:
prx-waf rules reload- Eine IP-Allowlist hinzufügen für vertrauenswürdige Quellen:
curl -X POST http://localhost:9527/api/rules/ip \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"ip": "10.0.0.0/8", "action": "allow"}'TIP
Bei der Bereitstellung neuer Regeln mit action: log beginnen, um auf Falsch-Positive zu überwachen, bevor auf action: block gewechselt wird.
SSL-Zertifikatsprobleme
Symptome: HTTPS-Verbindungen schlagen fehl, Zertifikatsfehler oder Let's Encrypt-Erneuerung schlägt fehl.
Lösungen:
Zertifikatsstatus prüfen in der Admin-UI unter SSL-Zertifikate.
Verifizieren, dass Port 80 vom Internet erreichbar ist für ACME HTTP-01-Challenges.
Zertifikatspfade prüfen, wenn manuelle Zertifikate verwendet werden:
[http3]
cert_pem = "/etc/prx-waf/tls/cert.pem"
key_pem = "/etc/prx-waf/tls/key.pem"- Verifizieren, dass das Zertifikat zur Domain passt:
openssl x509 -in /etc/prx-waf/tls/cert.pem -text -noout | grep -A1 "Subject Alternative Name"Cluster-Knoten verbinden sich nicht
Symptome: Worker-Knoten können dem Cluster nicht beitreten. Status zeigt "disconnected"-Peers.
Lösungen:
- Netzwerkkonnektivität verifizieren auf dem Cluster-Port (Standard: UDP 16851):
# Vom Worker zum Main
nc -zuv node-a 16851- Firewall-Regeln prüfen -- Cluster-Kommunikation verwendet UDP:
sudo ufw allow 16851/udp- Zertifikate verifizieren -- alle Knoten müssen Zertifikate verwenden, die von derselben CA signiert wurden:
openssl verify -CAfile cluster-ca.pem node-b.pem- Seed-Konfiguration prüfen auf Worker-Knoten:
[cluster]
seeds = ["node-a:16851"] # Muss zum Main-Knoten auflösen- Logs mit Debug-Ausführlichkeit überprüfen:
prx-waf -c config.toml run 2>&1 | grep -i "cluster\|quic\|peer"Hoher Speicherverbrauch
Symptome: PRX-WAF-Prozess verbraucht mehr Speicher als erwartet.
Lösungen:
- Antwort-Cache-Größe reduzieren:
[cache]
max_size_mb = 128 # Von Standard 256 reduzieren- Datenbankverbindungspool reduzieren:
[storage]
max_connections = 10 # Von Standard 20 reduzieren- Worker-Threads reduzieren:
[proxy]
worker_threads = 2 # Von CPU-Anzahl reduzieren- Speichernutzung überwachen:
ps aux | grep prx-wafCrowdSec-Verbindungsprobleme
Symptome: CrowdSec-Integration zeigt "disconnected" oder Entscheidungen werden nicht geladen.
Lösungen:
- LAPI-Konnektivität testen:
prx-waf crowdsec test- API-Schlüssel verifizieren:
# Auf der CrowdSec-Maschine
cscli bouncers list- LAPI-URL prüfen:
[crowdsec]
lapi_url = "http://127.0.0.1:8080"
api_key = "your-bouncer-key"- Eine sichere Fallback-Aktion setzen für den Fall, dass LAPI nicht erreichbar ist:
[crowdsec]
fallback_action = "log" # Nicht blockieren, wenn LAPI nicht verfügbarPerformance-Optimierung
Langsame Antwortzeiten
- Antwort-Caching aktivieren:
[cache]
enabled = true
max_size_mb = 512- Worker-Threads erhöhen:
[proxy]
worker_threads = 8- Datenbankverbindungen erhöhen:
[storage]
max_connections = 50Hohe CPU-Auslastung
Die Anzahl aktiver Regeln reduzieren. Paranoia-Stufe-3-4-Regeln deaktivieren, wenn nicht benötigt.
Ungenutzte Erkennungsphasen deaktivieren. Zum Beispiel, wenn CrowdSec nicht verwendet wird:
[crowdsec]
enabled = falseHilfe erhalten
Wenn keine der oben genannten Lösungen das Problem behebt:
- Vorhandene Issues prüfen: github.com/openprx/prx-waf/issues
- Neues Issue erstellen mit:
- PRX-WAF-Version
- Betriebssystem und Kernel-Version
- Konfigurationsdatei (mit redigierten Passwörtern)
- Relevante Log-Ausgabe
- Reproduktionsschritte
Nächste Schritte
- Konfigurationsreferenz -- Alle Einstellungen feinabstimmen
- Regel-Engine -- Verstehen, wie Regeln ausgewertet werden
- Cluster-Modus -- Clusterspezifische Fehlerbehebung