WAF y seguridad
Configure conjuntos de reglas administradas de WAF, reglas de firewall personalizadas, limitación de tasa, modo bajo ataque y controles de acceso como la protección contra enlaces directos y las listas de países/User-Agent.
Cada dominio de la CDN tiene una página de Firewall donde puede gestionar la política de seguridad que los nodos perimetrales aplican a ese dominio. Vaya a CDN → Dominios CDN, abra un dominio y seleccione Firewall. La URL de la consola es /cdn/domains/<domain>/firewall.
La página de Firewall tiene cuatro pestañas:
| Pestaña | Finalidad |
|---|---|
| Configuración de reglas | Reglas de firewall personalizadas, conjuntos de reglas administradas de WAF y reglas de puntuación de WAF personalizadas |
| Control de acceso | Protección contra enlaces directos, bloqueo por país/ASN, listas de User-Agent, autenticación de acceso, modo bajo ataque (UAM) y protección de conexiones |
| Análisis de WAF | Estadísticas de bloqueos y otros eventos (consulte Registros y análisis) |
| Registro de eventos | Una entrada por cada solicitud bloqueada o sometida a verificación |
Al guardar, la configuración se envía automáticamente a los nodos perimetrales. Los cambios suelen surtir efecto en un plazo de unos segundos a un minuto, sin necesidad de purgar la caché.
Conjuntos de reglas administradas de WAF
El WAF (firewall de aplicaciones web) comprueba la URI, la cadena de consulta, User-Agent, Referer y las cookies de cada solicitud. También comprueba los cuerpos de las solicitudes de formulario y JSON. Busca contenido característico de ataques comunes.
Abra Firewall → Configuración de reglas y busque la tarjeta Conjuntos de reglas predefinidos de WAF.
Active el interruptor principal en el encabezado de la tarjeta.
Expanda una categoría y active o desactive cada conjunto de reglas:
Conjunto de reglas Detecta Inyección SQL Contenido de inyección SQL XSS Contenido de scripting entre sitios Recorrido de rutas Recorrido de directorios de tipo ../Inyección de comandos Inyección de comandos del sistema operativo LFI/RFI Inclusión de archivos locales y remotos Ataque de protocolo Solicitudes HTTP malformadas o anómalas Detección de escáneres Escáneres de vulnerabilidades comunes Robots maliciosos Rastreadores maliciosos conocidos En Configuración del motor CRS, elija un Modo de comprobación:
- Bloquear: bloquea las solicitudes coincidentes con
403y registra el evento. - Solo registrar: registra el evento sin bloquear. Úselo para comprobar si hay falsos positivos antes de aplicar reglas nuevas.
- Bloquear: bloquea las solicitudes coincidentes con
Haga clic en Guardar.
El Umbral de puntuación de anomalía se aplica a las reglas de puntuación. Cada regla coincidente añade puntos a la puntuación de la solicitud, que se bloquea cuando alcanza el umbral. El valor predeterminado es 5. Los valores más bajos son más estrictos.
La disponibilidad de WAF depende del plan. En el momento de redactar esta guía, está incluido en los planes de CDN Professional y Enterprise, y no en los planes Free o Starter. Consulte los detalles actuales en la página de planes. Si su plan no incluye WAF, el interruptor no tiene efecto en los nodos perimetrales.
Cuando active WAF por primera vez, déjelo un tiempo en modo Simulación. Revise el Registro de eventos para identificar solicitudes legítimas que se habrían bloqueado y, después, cambie a Activo.
Reglas de puntuación de WAF personalizadas
Si los conjuntos de reglas administradas no cubren su caso, añada reglas en la tarjeta Reglas de WAF personalizadas, puntuación:
- Dónde inspeccionar: URI (con cadena de consulta), ruta, parámetros de consulta, cuerpo de la solicitud, un encabezado de solicitud, una cookie, User-Agent o método. Para los encabezados y las cookies, puede indicar un nombre.
- Tipo de coincidencia: expresión regular, inyección SQL (libinjection) o XSS (libinjection).
- Acción:
- Bloquear: bloquea de inmediato. Puede establecer el código de estado; el valor predeterminado es
403. - Registrar (puntuación): añade la puntuación de la regla a la solicitud. La solicitud se bloquea cuando su puntuación total alcanza el umbral de puntuación de anomalías.
- Bloquear: bloquea de inmediato. Puede establecer el código de estado; el valor predeterminado es
Reglas de firewall personalizadas
Una regla de firewall personalizada combina condiciones con una acción. Algunos usos habituales son bloquear direcciones IP, permitir tráfico solo desde ciertos países y proteger endpoints de inicio de sesión.
Crear una regla
- En Reglas, haga clic en Añadir regla.
- Introduzca un nombre. La prioridad puede estar entre 1 y 9999; el valor predeterminado es 100.
- Añada una o más condiciones. Cada condición tiene un campo, una clave opcional, un operador y un valor. Una solicitud solo coincide con la regla si cumple todas las condiciones.
- Elija una acción y complete sus ajustes.
- Guarde los cambios. Puede activar, desactivar o eliminar una regla desde la lista en cualquier momento.
Campos
| Campo | Descripción |
|---|---|
| Dirección IP | La IP del cliente. Con "en la lista", cada valor puede ser una IP individual o un rango CIDR |
| Código de país | Código ISO 3166-1 alpha-2, como US o DE |
| ASN | Número de sistema autónomo, como 13335 |
| Ruta de URI / Ruta | La ruta de la solicitud, sin la cadena de consulta |
| Host | El nombre de host solicitado |
| Método | GET, POST, etc. |
| User-Agent / Referer | El encabezado de solicitud correspondiente |
| Encabezado / Cookie / Parámetro de consulta | Introduzca el nombre en el campo de clave |
| Extensión | La extensión del archivo, como jpg |
Los operadores disponibles son igual a, distinto de, contiene, no contiene, empieza por, termina en, en la lista, fuera de la lista, coincide con expresión regular, mayor/menor que (o igual), existe y no existe. Para los operadores de lista, introduzca cada valor en una línea independiente.
El país y el ASN se obtienen de la dirección IP del cliente. Si no se puede determinar su correspondencia, las condiciones de esos campos no coinciden.
Acciones
| Acción | Efecto |
|---|---|
| Bloquear | Devuelve una respuesta de error. Puede establecer un código de estado de 400 a 599; el valor predeterminado es 403 |
| Permitir | Omite el WAF y las reglas restantes. Úsela para IP de confianza o endpoints de devolución de llamada |
| Verificación JS / Verificación administrada | Muestra al visitante una página de verificación del navegador, con el mismo mecanismo que el modo bajo ataque. Un visitante que la supera no vuelve a someterse a verificación hasta que caduque su autorización |
| Límite de solicitudes | Cuenta las solicitudes coincidentes y actúa cuando se supera el límite (consulte más abajo) |
Más de una regla puede coincidir con una misma solicitud. No active reglas que se superpongan con acciones contradictorias, como permitir y bloquear el mismo rango. El resultado podría ser distinto del esperado.
Ejemplo de API
Bloquear una subred:
curl -X POST "https://api.yeap.cloud/api/user/cdn/firewall-rules/create" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"domain_id": 123,
"name": "Block bad subnet",
"expression": {"op": "and", "conditions": [
{"collection": "IP", "op": "in", "var": ["203.0.113.0/24"]}
]},
"action": "block",
"action_config": {"status": 403},
"priority": 100,
"enabled": true
}'Otros endpoints:
- Enumerar reglas:
GET /api/user/cdn/firewall-rules?domain_id=123 - Actualizar una regla:
POST /api/user/cdn/firewall-rules/update, coniden el cuerpo - Eliminar una regla:
DELETE /api/user/cdn/firewall-rules/delete?id=<id>
Limitación de tasa
Para limitar la tasa del tráfico, cree una regla de firewall con la acción Limitar tasa. Use sus condiciones para seleccionar las solicitudes que desea proteger, como las rutas que empiezan por /api/login. Después, establezca:
- Límite de solicitudes e intervalo (segundos): una solicitud supera el límite cuando el recuento dentro del intervalo excede el límite establecido.
- Clave: dirección IP, encabezado de solicitud, cookie, ruta de URI o país. Para los encabezados y las cookies, introduzca también el nombre, como
X-Api-Key. - Ámbito: Dominio completo mantiene un contador independiente para cada valor de clave, por ejemplo, un contador para cada IP. Global usa un único contador para todas las solicitudes que coincidan con la regla.
- Al superarlo: bloquear con
429, someter a verificación, solo registrar o ralentizar la respuesta (tarpit). Tarpit ralentiza la respuesta, pero no la rechaza.
Cada ubicación perimetral mantiene sus propios contadores. Si las solicitudes de un cliente se reparten entre varias ubicaciones, el total permitido en toda la red puede ser superior al límite por ubicación.
Control de acceso
La pestaña Control de acceso contiene varios módulos específicos. Cada módulo tiene su propio interruptor. Cuando termine, haga clic en Guardar control de acceso para guardarlos todos.
Protección contra enlaces directos (lista de Referer)
- Permitir Referer vacío y Permitir el mismo dominio: permiten las visitas directas y los enlaces desde su propio sitio.
- Dominios permitidos: una entrada por línea. Puede usar nombres exactos, comodines como
*.example.como expresiones regulares que empiecen por~. Si esta lista no está vacía, Referer debe coincidir con una de sus entradas. - Dominios bloqueados: las solicitudes coincidentes se bloquean. Esta lista tiene prioridad sobre la lista de permitidos.
- Extensiones protegidas: limita la protección a ciertos tipos de archivo, como
.jpgo.mp4. Déjelo vacío para proteger todas las rutas.
Bloqueo por país / ASN
Establezca listas de bloqueo y de permitidos, con una entrada por línea, para países, subdivisiones (códigos ISO 3166-2) y ASN. Si hay una coincidencia en una lista de bloqueo, se bloquea el acceso. Si la lista de permitidos de una dimensión no está vacía, solo se permite el acceso a los visitantes de esa lista. Cuando use más de una dimensión, el visitante debe superar todas las comprobaciones.
Lista de User-Agent
Establezca la acción predeterminada, cómo tratar un User-Agent vacío y el código de estado de bloqueo; después, añada reglas. Elegir permitir como acción predeterminada hace que funcione como una lista de bloqueo; elegir bloquear hace que funcione como una lista de permitidos. Las reglas se comprueban de arriba abajo y la primera coincidencia determina el resultado. Puede establecer coincidencias por subcadena, comodín, expresión regular, valor exacto, prefijo o sufijo.
Autenticación de acceso
Puede establecer listas de IP permitidas y denegadas, que admiten rangos CIDR. También puede exigir autenticación HTTP Basic, un parámetro de token o una URL firmada (tipos A, B, C o D). Si configura más de un método, elija si la solicitud debe superar todos o cualquiera de ellos.
Modo bajo ataque (UAM)
| Modo | Comportamiento |
|---|---|
| Desactivado | Sin verificaciones proactivas |
| Adaptativo | Normalmente no hay verificaciones. Los visitantes solo se someten a verificación cuando la protección automática de la plataforma detecta tráfico anómalo |
| Bajo ataque (escudo de 5 segundos) | Todos los visitantes deben superar primero una verificación del navegador (prueba de trabajo) |
| Forzar CAPTCHA | Todos los visitantes deben resolver un CAPTCHA. Se admite captcha.la y debe introducir su Site Key y Secret. Sin ellos, los visitantes reciben la verificación del navegador |
Puede ajustar la espera mínima (segundos) (se recomienda 5 o más), la dificultad (se recomienda 15 o más) y la duración de la autorización (segundos). Introduzca 0 para usar el valor predeterminado. Las IP/CIDR de la lista de permitidos omiten la verificación en todos los modos. Las extensiones de archivos estáticos y los ASN de bots permitidos solo se aplican en el modo Adaptativo; los modos Bajo ataque y Forzar CAPTCHA los ignoran.
Durante un ataque por inundación de solicitudes, cambie a Bajo ataque. Vuelva a Desactivado o Adaptativo cuando termine el ataque para no afectar a los clientes de API ni a los rastreadores de los motores de búsqueda.
Protección de conexiones (Slowloris)
Limita el número de conexiones simultáneas desde cada IP y detecta ataques de solicitudes lentas. Puede establecer la tasa mínima de transferencia del cuerpo, el intervalo de muestreo, el período de gracia, el tiempo máximo de inactividad y el tiempo máximo para recibir el cuerpo. Introduzca 0 para no establecer ningún límite.