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:
| Capa | Qué hace | ¿Se puede desactivar? |
|---|---|---|
| Base de protección | Controles de protocolo y firmas de alta confianza | Los controles de protocolo, nunca. Las firmas, una por una |
| Reglas incorporadas | Detección de ataques comunes a aplicaciones | Sí, en bloque o una por una |
| Reglas propias | Expresiones que definís vos | Son tuyas |
| Bloqueo de escáneres | Bloquea por un tiempo a quien recorre tu sitio buscando vulnerabilidades | No se configura por dominio |
Base de protección (siempre activa)
Sección titulada «Base de protección (siempre activa)»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-LengthyTransfer-Encodinginconsistentes), inyección de encabezados y validación delHost. Estos controles no se pueden desactivar. Una violación de protocolo se responde con400. - 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.
Reglas incorporadas
Sección titulada «Reglas incorporadas»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 propias
Sección titulada «Reglas propias»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.
Ejemplos
Sección titulada «Ejemplos»# Cerrar /wp-admin salvo desde la red de la oficinahttp.uri matches "^/wp-admin" and not http.ip in {203.0.113.0/24}
# Bloquear bots de extracción conocidoshttp.header.user_agent contains "ahrefsbot" or http.header.user_agent contains "semrushbot"
# Aceptar /api/webhook solo por POST y desde una IP conocidahttp.uri eq "/api/webhook" and (http.method ne "POST" or http.ip ne 203.0.113.10)
# Bloquear extensiones sensibleshttp.uri matches "\\.(env|git|sql|bak)$"Campos disponibles
Sección titulada «Campos disponibles»| Campo | Contenido |
|---|---|
http.uri | Path solicitado, normalizado y sin query (/foo/bar) |
http.query | Cadena de consulta |
http.method | GET, POST, etc. |
http.ip | Direcció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.
Qué inspecciona
Sección titulada «Qué inspecciona»| Parte de la solicitud | Base y reglas incorporadas | Reglas propias |
|---|---|---|
| URI, query, método, IP, encabezados | Sí, en todas las rutas | Sí, en todas las rutas |
| Cuerpo | En rutas PHP y de funciones, hasta 64 KiB por defecto | No |
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.
Bloqueo automático de escáneres
Sección titulada «Bloqueo automático de escáneres»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
404o403de 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.
Qué definís
Sección titulada «Qué definís»- 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.
Limitaciones
Sección titulada «Limitaciones»- 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.
Preguntas frecuentes
Sección titulada «Preguntas frecuentes»- ¿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.