Por que necesitamos WAF
Un Web Application Firewall (WAF) filtra trafico malicioso antes de que llegue a la aplicación. Protege contra:
- Ataques automatizados (bots, scanners)
- DDoS a nivel de aplicación (Layer 7)
- Intentos de SQL injection y XSS desde la red
- Abuso de APIs públicas
- Scraping masivo de contenido
Nvito ya usa Cloudflare para DNS y CDN (R2). Activar WAF es una extension natural.
Estado actual
| Servicio | Cloudflare? | WAF? |
|---|---|---|
| nvito.mx (landing) | Si (Pages) | Básico (Cloudflare default) |
| cdn.nvito.mx (R2) | Si (R2) | No aplica (archivos estáticos) |
| dev-api.nvito.mx | Si (DNS) | Pendiente |
| test-api.nvito.mx | Si (DNS) | Pendiente |
| api.nvito.mx (prod) | Pendiente | Pendiente |
Plan de implementación
Paso 1 — Activar WAF en plan Free
Cloudflare Free incluye:
- 5 WAF custom rules
- Managed ruleset básico
- Bot Fight Mode
- Rate limiting (1 regla)
Paso 2 — Reglas recomendadas para Nvito
Regla 1: Bloquear scanners conocidos
(http.user_agent contains "sqlmap") or
(http.user_agent contains "nikto") or
(http.user_agent contains "nmap") or
(http.user_agent contains "dirbuster")
→ Action: Block
Regla 2: Rate limit en endpoints de auth
(http.request.uri.path contains "/auth/") or
(http.request.uri.path contains "/rsvp")
→ Rate limit: 30 requests/minute per IP
→ Action: Challenge (CAPTCHA)
Regla 3: Bloquear paises no relevantes (opcional)
(not ip.geoip.country in {"MX" "US" "CA" "ES" "CO" "AR" "CL" "PE"})
→ Action: Challenge
Nota: Solo activar si los eventos son exclusivamente en estos paises.
Regla 4: Proteger endpoints admin
(http.request.uri.path contains "/admin") and
(not ip.geoip.country in {"MX"})
→ Action: Challenge
Regla 5: Bloquear requests sin User-Agent
(not http.user_agent ne "")
→ Action: Block
Paso 3 — Activar Managed Rulesets
En Cloudflare Dashboard:
- Ir a Security → WAF → Managed rules
- Activar Cloudflare Managed Ruleset
- Activar OWASP Core Ruleset
- Configurar sensibilidad: Medium (para evitar falsos positivos)
Paso 4 — Bot Fight Mode
- Ir a Security → Bots
- Activar Bot Fight Mode
- Activar JavaScript Detection (inyecta challenge invisible)
Paso 5 — Monitoreo
- Ir a Security → Events
- Revisar eventos bloqueados semanalmente
- Ajustar reglas si hay falsos positivos (especialmente en RSVP público)
Protección DDoS
Cloudflare incluye protección DDoS por defecto:
- Layer 3/4: Mitigacion automática
- Layer 7: Rate limiting + WAF rules
- Always Online: Sirve cache si el origen cae
Configuración recomendada
- Security Level: Medium (Security → Settings)
- Challenge Passage: 30 minutes
- Browser Integrity Check: ON
- Hotlink Protection: ON (para proteger imagenes de invitaciones)
Plan Pro (cuando escale)
Si Nvito escala y necesita protección avanzada, Cloudflare Pro ($20/mes) agrega:
- WAF rules ilimitadas
- Managed rulesets avanzados
- Rate limiting avanzado (múltiples reglas)
- Firewall Analytics detallado
Checklist de configuración
- Activar WAF managed rules en Cloudflare
- Crear 5 custom rules (scanners, auth rate limit, geo, admin, user-agent)
- Activar Bot Fight Mode
- Configurar Security Level: Medium
- Activar Browser Integrity Check
- Revisar eventos bloqueados la primera semana (falsos positivos)
- Documentar excepciones necesarias (ej: webhooks de Stripe/Twilio)