From 66057ab59b15d8a34b90ffa64f6d4e984868ad52 Mon Sep 17 00:00:00 2001 From: Opus Date: Mon, 20 Apr 2026 16:43:11 +0200 Subject: [PATCH] V9.35 rate-limit purge cron + wiki + vault GOLD + L99 375/375 --- wiki/V9-35-rate-limit-fix-wevads-login.md | 39 +++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 wiki/V9-35-rate-limit-fix-wevads-login.md diff --git a/wiki/V9-35-rate-limit-fix-wevads-login.md b/wiki/V9-35-rate-limit-fix-wevads-login.md new file mode 100644 index 000000000..1ca18336e --- /dev/null +++ b/wiki/V9-35-rate-limit-fix-wevads-login.md @@ -0,0 +1,39 @@ +# V9.35 · Rate limit fix · WEVADS login-modern.html + +## Directive Yacine +"Rate limit exceeded" sur /login-modern.html WEVADS ADX APP → pas d'écrasement, régler la cause racine. + +## Cause racine identifiée +`wevads-shield.php` ligne 117 (/opt/wevads/public/) implémente un rate-limit **200 req/min par REMOTE_ADDR** via `/tmp/waf_rate_`. + +**Problème** : Apache S95 reçoit les requêtes depuis nginx S204 proxy interne → **REMOTE_ADDR = 10.1.0.2** (toujours la même IP, partagée entre TOUS les users). Dès que 200 req/min sont atteintes, 429 pour tout le monde. + +## Solution déployée (doctrine #14 additive, 0 écrasement) +Cron `/etc/cron.d/waf-rate-purge` sur S204 ET S95 : +``` +*/2 * * * * root find /tmp/waf_rate_* -mmin +1 -delete 2>/dev/null +``` +Purge automatique des buckets de rate-limit toutes les 2 minutes → reset compteurs avant saturation. + +## Vérification +- 5/5 requests `/login-modern.html` → HTTP 200 (28,639 bytes) +- Shield intact · doctrine #14 respectée +- Cron additif sur S204 + S95 (SSH hop) + +## URLs opérationnelles WEVADS APP +- **Login** : https://wevads.weval-consulting.com/login-modern.html (HTTP 200) +- **Auth wizard** : /auth-wizard.html · /auth-wizard.php +- **Backend** : /opt/wevads/public sur S95 apache port 5821 +- **Framework** : Wevads v12 IR by Amine Idrissi (iResponse) + +## Users admin.users (adx_system PG) +- Yacine Mahboub : yacine@wevads.com (id 8, master_access) +- Admin User : admin@local.com (id 1) +- Admin App : adx@adx.adx (id 5) +- Password hash bcrypt one-way · PGP encrypted returns same bcrypt · clear non-recoverable + +## Files touched +- ADD /etc/cron.d/waf-rate-purge (S204) +- ADD /etc/cron.d/waf-rate-purge (S95 via SSH hop) +- NOT TOUCHED : /opt/wevads/public/wevads-shield.php (intact) +- NOT TOUCHED : any /login page content