feat(waf): Phase 3 — HAProxy SPOE-Integration — v1.2.68
- haproxy.cfg.tpl: filter spoe + deny_status 403 + spoe-edgeguard-waf
Backend (nur gerendert wenn WAFEnabled=true)
- haproxy.go: WAFEnabled in View; WafRepo.ListEnabled() prüft ob WAF
aktiv; SPOE-Config-File (coraza-spoe.cfg) wird bei WAFEnabled
atomar geschrieben; SPOEConfigPath konfigurierbar
- waf/spoe.go: uri statt path+query (HAProxy url-Sample = volle URI)
SPOE-Config definiert:
- Agent: edgeguard-waf-agent, var-prefix=waf, timeout processing 50ms
- Message: src, method, uri=url, ver=req.ver, headers=req.hdrs,
host=req.hdr(host)
- Backend: spoe-edgeguard-waf → 127.0.0.1:9000
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -80,6 +80,11 @@ frontend public_https
|
||||
bind [::]:443 ssl crt /etc/edgeguard/tls/ alpn h2,http/1.1
|
||||
bind quic6@:443 ssl crt /etc/edgeguard/tls/ alpn h3
|
||||
{{- end}}
|
||||
{{- if .WAFEnabled}}
|
||||
# WAF: SPOE-Filter — edgeguard-waf inspiziert jeden Request.
|
||||
# filter muss vor allen http-request/http-response-Direktiven stehen.
|
||||
filter spoe engine edgeguard-waf cfg-file /etc/edgeguard/haproxy/coraza-spoe.cfg
|
||||
{{- end}}
|
||||
|
||||
# Alt-Svc: signalisiert dass h3 auf demselben Port verfügbar ist.
|
||||
# ma=86400 = Browser darf den Hinweis 24h cachen.
|
||||
@@ -91,6 +96,10 @@ frontend public_https
|
||||
# echte Source-IP ohne XFF-Chain-Parsing brauchen.
|
||||
http-request set-header X-Forwarded-Proto https
|
||||
http-request set-header X-Real-IP %[src]
|
||||
{{- if .WAFEnabled}}
|
||||
# WAF: Request blockieren wenn edgeguard-waf txn.waf.status gesetzt hat.
|
||||
http-request deny deny_status 403 if { var(txn.waf.status) -m found }
|
||||
{{- end}}
|
||||
|
||||
{{- if .GlobalMaintenance}}
|
||||
# Whole-Box-Maintenance — Settings → Maintenance-Mode aktiv. Dieser
|
||||
@@ -195,6 +204,16 @@ backend rl_{{$d.ID}}
|
||||
{{- end}}
|
||||
{{- end}}
|
||||
|
||||
{{- if .WAFEnabled}}
|
||||
|
||||
# SPOE-Backend für edgeguard-waf (TCP, kein HTTP-Parsing).
|
||||
backend spoe-edgeguard-waf
|
||||
mode tcp
|
||||
timeout connect 100ms
|
||||
timeout server 50ms
|
||||
server spoe-waf-1 127.0.0.1:9000
|
||||
{{- end}}
|
||||
|
||||
{{- range $b := .Backends}}
|
||||
|
||||
backend eg_backend_{{$b.ID}}
|
||||
|
||||
Reference in New Issue
Block a user