feat(waf): Alerts — Regelübereinstimmungen in DB + UI — v1.2.77

- Migration 0038: waf_alerts-Tabelle
- AlertWriter (Buffered-Channel → async DB-Write)
- SPOE: MatchedRules → sendAlert() nach ProcessRequestHeaders()
- API: GET /waf/alerts + DELETE /waf/alerts
- WAF-Page: Tabs Domains | Alarme; Alarme-Tabelle mit Rule-ID,
  Severity, Aktion (Detected/Blocked), URI, Client-IP + Purge-Button

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Debian
2026-06-03 10:40:43 +02:00
parent c83bb7b137
commit 220d9d7050
10 changed files with 453 additions and 37 deletions

View File

@@ -1800,6 +1800,30 @@
"customRulesHint": "Raw SecRule directives appended after the CRS. Applied last, can override CRS rules.",
"defaultHint": "Default: Detection-Only, Paranoia Level 1. Switch to Blocking only after reviewing alerts.",
"saveFailed": "Failed to save WAF configuration."
},
"tabs": {
"domains": "Domains",
"alerts": "Alerts"
},
"alerts": {
"total": "entries",
"empty": "No WAF alerts yet. Rules matched will appear here.",
"purge30d": "Purge > 30 days",
"purgeConfirm": "Delete all alerts older than 30 days?",
"purged": "Alerts purged.",
"blocked": "Blocked",
"detected": "Detected",
"col": {
"time": "Time",
"action": "Action",
"hostname": "Domain",
"clientIp": "Client IP",
"method": "Method",
"uri": "URI",
"ruleId": "Rule ID",
"severity": "Severity",
"msg": "Message"
}
}
}
}