You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add automatic IP banning to the DDoS protection introduced in #274: after repeated rate-limit/connection-limit violations within a configurable period, the offending source IP is denied for a configurable ban duration — enforced entirely inside the generated HAProxy config (no live management yet, see follow-up issues below).
Add a second stick-table per vhost (or reuse the existing DDoS table) tracking abuse via gpc0/http_err_rate, incremented with sc-inc-gpc0 on rate-limit/conn-limit violations.
Emit a deny ACL in haproxy.cfg.j2 for source IPs whose gpc0 counter exceeds ban_threshold, with automatic expiry after ban_duration_seconds (via the stick-table's own expire).
Unit tests for config rendering (all combinations, haproxy -c validation) and for the generator wiring policy -> route.
No live read/management yet — that's the P2-09b follow-up.
Out of scope
Reading or manually releasing banned IPs (tracked in a follow-up issue).
Alerting on ban events (tracked in a follow-up issue).
Summary
Add automatic IP banning to the DDoS protection introduced in #274: after repeated rate-limit/connection-limit violations within a configurable period, the offending source IP is denied for a configurable ban duration — enforced entirely inside the generated HAProxy config (no live management yet, see follow-up issues below).
Scope
ban_thresholdandban_duration_secondscolumns toPolicy(Alembic migration), following the same pattern asrate_limit_requestsetc. in feat(backend): per-policy DDoS rate limiting and connection throttling #274.gpc0/http_err_rate, incremented withsc-inc-gpc0on rate-limit/conn-limit violations.denyACL inhaproxy.cfg.j2for source IPs whosegpc0counter exceedsban_threshold, with automatic expiry afterban_duration_seconds(via the stick-table's ownexpire).haproxy -cvalidation) and for the generator wiring policy -> route.Out of scope
Related to #176