Saltearse al contenido

Web Application Firewall (WAF)

El Web Application Firewall (WAF) filtra las solicitudes HTTP antes de que lleguen a tu aplicación. En Tero Services se compone de tres capas y un mecanismo de bloqueo automático:

CapaQué hace¿Se puede desactivar?
Base de protecciónControles de protocolo y firmas de alta confianzaLos controles de protocolo, nunca. Las firmas, una por una
Reglas incorporadasDetección de ataques comunes a aplicacionesSí, en bloque o una por una
Reglas propiasExpresiones que definís vosSon tuyas
Bloqueo de escáneresBloquea por un tiempo a quien recorre tu sitio buscando vulnerabilidadesNo se configura por dominio

Corre sobre cada solicitud, incluso si el WAF está desactivado para la ruta. No requiere configuración.

  • Controles de protocolo: recorrido de directorios (../ y sus codificaciones), caracteres nulos y de control en la URI, contrabando de solicitudes (Content-Length y Transfer-Encoding inconsistentes), inyección de encabezados y validación del Host. Estos controles no se pueden desactivar. Una violación de protocolo se responde con 400.
  • Firmas de alta confianza: inyección SQL, XSS, ejecución remota de comandos, inclusión de archivos, SSRF contra servicios de metadatos de nube, XXE, inyección de plantillas, deserialización insegura, acceso a archivos sensibles y vulnerabilidades conocidas (Log4Shell, Shellshock, Spring4Shell, Struts). Un ataque detectado se responde con 403. Cada firma tiene un identificador y se puede desactivar por separado.

Un conjunto de más de 200 reglas mantenido por Host Admin, activo por defecto, que cubre inyección SQL, XSS, ejecución remota, inclusión de archivos, SSRF, inyección NoSQL y LDAP, escáneres de vulnerabilidades y otros ataques frecuentes.

El conjunto se activa o desactiva por ruta, por sub-ruta o para toda la cuenta. Si una regla puntual choca con tu aplicación (un falso positivo), se desactiva esa regla por su identificador sin apagar el resto.

Reglas que definís vos, con expresiones legibles que se evalúan sobre cada solicitud. Se definen para toda la cuenta y aplican a todos tus dominios.

Cada regla tiene una expresión y una acción:

  • Bloquear: la solicitud se rechaza con 403.
  • Permitir: la solicitud pasa y no se evalúan las reglas siguientes. Útil para excepciones explícitas.
# Cerrar /wp-admin salvo desde la red de la oficina
http.uri matches "^/wp-admin" and not http.ip in {203.0.113.0/24}
# Bloquear bots de extracción conocidos
http.header.user_agent contains "ahrefsbot"
or http.header.user_agent contains "semrushbot"
# Aceptar /api/webhook solo por POST y desde una IP conocida
http.uri eq "/api/webhook" and (http.method ne "POST" or http.ip ne 203.0.113.10)
# Bloquear extensiones sensibles
http.uri matches "\\.(env|git|sql|bak)$"
CampoContenido
http.uriPath solicitado, normalizado y sin query (/foo/bar)
http.queryCadena de consulta
http.methodGET, POST, etc.
http.ipDirección IP del visitante. Admite rangos CIDR con in {…}
http.header.<nombre>Encabezados habituales, con guion bajo en lugar de guion: user_agent, referer, origin, host, accept, accept_language, content_type, content_length, cookie, authorization, x_forwarded_for, x_requested_with y otros

Operadores: eq (==), ne (!=), gt, ge, lt, le, contains, matches (~, expresión regular), in {…}, y para combinar and (&&), or (||), xor y not (!), con paréntesis para agrupar.

Parte de la solicitudBase y reglas incorporadasReglas propias
URI, query, método, IP, encabezadosSí, en todas las rutasSí, en todas las rutas
CuerpoEn rutas PHP y de funciones, hasta 64 KiB por defectoNo

En las rutas Proxy el cuerpo se transmite sin almacenarse, por lo que el WAF no lo inspecciona. Para controlar el contenido del cuerpo en cualquier tipo de ruta usá la validación de formularios. Los cuerpos binarios (imágenes, video, archivos comprimidos, multipart) no se inspeccionan.

Quien recorre un sitio buscando vulnerabilidades genera un patrón reconocible: muchos rechazos o muchas páginas inexistentes en poco tiempo. Tero bloquea durante 5 minutos a la dirección IP que en 10 segundos acumula:

  • 5 bloqueos del WAF, o
  • 30 respuestas 404 o 403 de tu aplicación.

Si la dirección sigue insistiendo, el bloqueo se extiende. Mientras dura, recibe 403. Los bloqueos se ven en el análisis de tráfico.

  • Activación del conjunto de reglas incorporadas por ruta, sub-ruta o cuenta.
  • Identificadores de reglas o firmas desactivadas, por ruta, sub-ruta o cuenta. Se suman entre niveles.
  • Reglas propias de la cuenta.

Los cambios se aplican sin reiniciar el servicio y quedan en el registro de auditoría.

  • No reemplaza la validación de entrada ni la seguridad de tu aplicación: es una capa de defensa adicional.
  • Las reglas propias no tienen un modo de prueba que solo registre sin bloquear. Probalas primero en un dominio de pruebas.
  • No mitiga ataques volumétricos en capas 3 y 4.
  • ¿Viene con reglas precargadas? Sí: la base de protección y el conjunto de reglas incorporadas están activos desde el alta del dominio.
  • ¿Qué hago si una regla bloquea tráfico legítimo? Identificá la regla en el análisis de seguridad y desactivala por su identificador para ese dominio.
  • ¿Puedo bloquear por país desde el WAF? No: el país se controla con el geo-bloqueo.