La puerta de acceso mantiene privada una ruta sin tocar el código de tu aplicación. Quien abre la ruta protegida sin una sesión válida recibe una página de acceso (401): escribe una dirección de correo permitida, recibe un código de 6 cifras por correo y lo introduce. El borde pone entonces una cookie de sesión firmada y le deja pasar.
Ajustes
| Campo | Por defecto | Significado |
|---|---|---|
access_gate.enabled | false | Activar la puerta. |
access_gate.path | / | Prefijo de ruta protegido. / protege todo el sitio; /wp-admin, todas las rutas que empiezan por él. Se compara sin distinguir mayúsculas y limpiando los segmentos // y .. |
access_gate.emails | [] | Direcciones permitidas, guardadas en minúsculas. |
access_gate.ttl_hours | 0 | Cuántas horas sigue dentro un visitante que confirmó. 0 = 72 horas. |
La puerta se aplica en cualquier modo del WAF.
Activarla
Dominio → Seguridad → Puerta de acceso. Activa Pedir confirmación por correo, rellena Correos permitidos (uno por línea), el Prefijo de ruta protegido y la Duración de la sesión (horas) y guarda. Usa Se aplica a para proteger un solo nombre.
openwaf-cloud ctl zones set example.com access_gate.enabled=true access_gate.path=/wp-admin \
access_gate.emails:='["[email protected]","[email protected]"]' access_gate.ttl_hours=24 \
--reason "Proteger wp-admin"curl -sS -X PATCH "https://dash.openwaf.dev/v1/orgs/$ORG/zones/example.com/edge" \
-H "Authorization: Bearer $OPENWAF_TOKEN" \
-H "X-Change-Reason: Proteger wp-admin" \
-H "Content-Type: application/json" \
-d '{"access_gate": {"enabled": true, "path": "/wp-admin", "emails": ["[email protected]", "[email protected]"], "ttl_hours": 24}}'update_settings con "settings": {"access_gate": {"enabled": true, "path": "/wp-admin", "emails": ["[email protected]"]}}. emails sustituye la lista entera.
Cómo funcionan los códigos y las sesiones
- Un código vale 5 minutos y admite 3 intentos. Pedir un código nuevo invalida el anterior en ese navegador.
- El envío está limitado: 3 códigos por hora para el mismo correo desde la misma red, y 10 peticiones de código por hora desde una IP.
- Una dirección que no está en la lista recibe exactamente la misma respuesta que una que sí está, pero no se envía ningún correo, así que el formulario no sirve para averiguar quién tiene acceso.
- La cookie de sesión
__waf_accessestá firmada, esHttpOnly,SecureySameSite=Laxy solo vale para el nombre en el que se introdujo el código. No va ligada a la IP del visitante, así que cambiar de red no cierra la sesión. - Quitar una dirección de la lista cierra sus sesiones abiertas.
- Los endpoints de la puerta (
/__waf/access/send-code,/__waf/access/verify) están limitados a 30 peticionesPOSTpor minuto y por IP.