Esta implementación avanzada del WAF ofrece una capa de protección adicional para tus sitios web.
Para habilitarlo, únicamente es necesario añadir el header TCDN-WAF-Enabled en tu configuración.
A continuación se muestra un ejemplo de cómo activar el WAF para el dominio mi-dominio.es mediante una configuración VCL desplegada desde el dashboard:
# WAF avanzado
sub vcl_recv {
if (req.http.host == "www.mi-dominio.es") {
set req.http.TCDN-WAF-Enabled = "true";
}
}
En ocasiones puede interesarte activar el WAF de forma global para un dominio, pero excluir rutas concretas. En ese caso, puedes hacer unset del header para anular su efecto en las URLs que necesites.
El siguiente ejemplo muestra cómo activar el WAF en mi-dominio.es excluyendo cualquier URL que empiece por /path/sin/waf/:
# WAF avanzado
sub vcl_recv {
if (req.http.host == "www.mi-dominio.es") {
set req.http.TCDN-WAF-Enabled = "true";
if (req.url ~ "^/path/sin/waf/") {
unset req.http.TCDN-WAF-Enabled;
}
}
}
Aunque funcional, este enfoque no es el más recomendado.
Una alternativa más flexible es utilizar el header TCDN-WAF-Set-SecRuleEngine, que permite controlar con mayor precisión el comportamiento del motor de reglas. Los valores disponibles son:
#On: Modo activo por defecto. El WAF analiza y bloquea las peticiones que considera una amenaza.#Off: Desactiva el WAF por completo para las peticiones que coincidan con la condición definida.#DetectionOnly: Modo de observación. El WAF detecta y registra las peticiones sospechosas, pero las deja pasar sin bloquearlas. Ideal para realizar pruebas en entornos productivos antes de activar el bloqueo definitivo, ya que permite identificar posibles falsos positivos y ajustar las excepciones necesarias.Aplicando este enfoque al ejemplo anterior, la configuración VCL quedaría así:
# WAF avanzado
sub vcl_recv {
if (req.http.host == "www.mi-dominio.es") {
set req.http.TCDN-WAF-Enabled = "true";
if (req.url ~ "^/path/sin/waf/") {
set req.http.TCDN-WAF-Set-SecRuleEngine = "#Off";
}
}
}
Cuando el WAF bloquea peticiones legítimas, se habla de falsos positivos. Para evitarlo, puedes definir excepciones por regla mediante el header TCDN-WAF-Allow-Rule-Exceptions, indicando los identificadores de las reglas que deben ignorarse para una ruta determinada.
Por ejemplo, si las peticiones a /path/completamente/seguro/ están siendo bloqueadas por las reglas ruleID_1, ruleID_2, ruleID_3, ..., ruleID_n, puedes eximirlas de la siguiente forma:
# WAF avanzado
sub vcl_recv {
if (req.http.host == "www.mi-dominio.es") {
set req.http.TCDN-WAF-Enabled = "true";
if (req.url ~ "^/path/sin/waf/") {
set req.http.TCDN-WAF-Set-SecRuleEngine = "#Off";
}
if (req.url ~ "^/path/completamente/seguro/") {
set req.http.TCDN-WAF-Allow-Rule-Exceptions = "ruleID_1 ruleID_2 ruleID_3 ... ruleID_n";
}
}
}
Los ejemplos anteriores cubren algunos de los casos de uso más habituales, pero cada entorno puede tener sus propias particularidades.