
Juan DenisandClaude Opus 4.8
ada030553a
feat(security): per-app WAF (ModSecurity v3 + OWASP CRS)
- WafPolicy model (per app: mode off/detect/block, paranoia level, anomaly
threshold, disabled CRS rule ids).
- WafService: render_rules (SecRuleEngine + CRS include + paranoia/anomaly +
SecRuleRemoveById), nginx_snippet, install/status (distro-aware,
best-effort), apply() that writes per-app rules under
/etc/nginx/serverkit-conf.d/waf and idempotently injects an include into
the app vhost (graceful manual_include fallback), and audit-log event
parsing.
- API /api/v1/waf: per-app policy GET/PUT, apply, events, install status.
- 29 tests: rule rendering per mode, rule-disable, nginx snippet, policy
validation, audit-log parsing, API round-trip + auth.
Backend only; WAF UI + verified install on a real nginx+ModSecurity host are
follow-ups. Integration is additive — existing nginx/site management untouched.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 14:02:24 -04:00
..
2026-01-17 04:22:12 -05:00
2026-06-19 01:34:02 -04:00
2026-03-23 02:15:16 -04:00
2026-03-23 02:08:00 -04:00
2026-05-31 16:08:13 -04:00
2026-06-01 02:39:05 -04:00
2026-03-07 12:15:02 -05:00
2026-03-04 01:53:46 -05:00
2026-06-19 10:13:50 -04:00
2026-06-19 01:33:45 -04:00
2026-03-02 22:48:29 -05:00
2026-06-05 23:04:06 -04:00
2026-03-24 06:10:58 -04:00
2026-06-15 10:47:59 -04:00
2026-03-03 22:11:30 -05:00
2026-06-15 21:00:57 -04:00
2026-06-19 03:12:07 -04:00
2026-06-05 23:04:06 -04:00
2026-04-29 00:39:16 -04:00
2026-03-23 02:18:26 -04:00
2026-05-03 06:12:39 -04:00
2026-03-04 01:53:46 -05:00
2026-06-15 21:00:57 -04:00
2026-06-15 09:19:56 -04:00
2026-01-18 00:40:41 -05:00
2026-05-31 21:37:38 -04:00
2026-03-04 01:53:46 -05:00
2026-06-15 10:21:39 -04:00
2026-02-08 23:14:13 -05:00
2026-03-24 06:10:58 -04:00
2026-05-01 00:37:48 -04:00
2026-02-08 23:14:13 -05:00
2026-02-08 23:14:13 -05:00
2026-06-19 10:08:58 -04:00
2026-06-19 09:22:18 -04:00
2026-03-04 02:34:49 -05:00
2026-01-17 04:22:12 -05:00
2026-05-03 17:17:32 -04:00
2026-02-08 23:14:13 -05:00
2026-03-04 01:37:22 -05:00
2026-03-24 06:10:58 -04:00
2026-05-03 20:10:18 -04:00
2026-03-23 02:19:33 -04:00
2026-01-17 04:22:12 -05:00
2026-01-18 03:10:55 -05:00
2026-06-12 18:35:43 -04:00
2026-03-23 02:27:52 -04:00
2026-01-17 04:22:12 -05:00
2026-05-17 11:21:08 -04:00
2026-06-05 23:04:06 -04:00
2026-01-17 04:22:12 -05:00
2026-06-05 23:08:44 -04:00
2026-06-15 09:19:56 -04:00
2026-06-19 01:33:46 -04:00
2026-06-19 01:33:45 -04:00
2026-03-23 02:11:16 -04:00
2026-06-15 21:00:57 -04:00
2026-06-15 09:19:56 -04:00
2026-01-25 22:48:12 -05:00
2026-05-03 15:57:02 -04:00
2026-03-23 02:22:53 -04:00
2026-06-19 01:34:02 -04:00
2026-06-05 23:04:06 -04:00
2026-06-15 23:20:00 -04:00
2026-03-23 01:58:28 -04:00
2026-01-17 13:37:40 -05:00
2026-06-19 14:02:24 -04:00
2026-05-31 22:39:57 -04:00
2026-06-15 22:06:58 -04:00
2026-03-23 01:30:51 -04:00
2026-06-15 21:00:57 -04:00