Los diez mejores consejos para sacar partido del WAF de última generación

El equipo de Technical Account Management de Fastly aconseja a los clientes para que saquen el máximo provecho del WAF de última generación, con tecnología de Signal Sciences. Trabajamos a diario con clientes de todos los sectores, respondiendo a sus dudas y compartiendo conocimientos para que todo vaya como la seda. 

Esta vez, queremos compartir el conocimiento contigo. En este artículo encontrarás una lista de prácticas recomendadas, para que todo el mundo pueda sacar provecho del WAF de última generación. 

1. Evitar la suplantación de IP de clientes

Este paso tan básico no siempre se lleva a cabo. Es necesario captar la IP real del cliente; si no, un atacante podría burlar el WAF con un simple cambio en los encabezados correspondientes. 

El agente del WAF de última generación utiliza el encabezado X-Forwarded-For para identificar la dirección IP del cliente. Un ejemplo podría ser client-ip-header="Fastly-Client-IP". Este encabezado es muy fácil de suplantar poniendo otra dirección IP en el encabezado. 

En nuestra documentación para clientes proponemos una solución, que consiste en pasar un encabezado distinto y luego configurar el agente para que use dicho encabezado para determinar la IP real del cliente. También recomendamos configurar el agente para que lea la dirección IP de X-Forwarded-For de derecha a izquierda, en vez de izquierda a derecha como suele ser por defecto, mediante el ajuste local-networks="private".

En el caso de los despliegues locales (módulo/agente), conviene asegurarse de que validamos las direcciones IP reales antes de que el agente NGWAF reciba el encabezado. Por ejemplo, NGINX cuenta con el ngx_http_realip_module que validará la dirección IP del cliente.

A los clientes que tienen la CDN de Fastly delante del NGWAF les conviene poder enviar la dirección IP mediante VCL personalizado, tal y como explicamos aquí. Así, se envía la IP real del cliente al encabezado Fastly-Client-IP.

Los otros encabezados se pueden configurar en la IU, mientras que en el caso de los despliegues sin WAF en la nube, aquí se explican los pasos que hay que seguir.

10 Pro Tips Image 1

Si hablamos de despliegues con WAF en la nube, podemos configurarlos en la misma instancia del WAF seleccionando Advanced en Instance location para indicar el encabezado correspondiente:

10 Pro Tips Image 2

Ahora que hemos identificado los encabezados que hay que usar como dirección IP real del cliente, podemos aplicar umbrales combinando las IP con señales.

2. Configurar umbrales ante posibles ataques

Podemos ver si las IP se aproximan a los umbrales sin sobrepasarlos navegando a Observed Sources -> Suspicious IPs.

10 Pro Tips Image 3

La creación de umbrales es una importante funcionalidad del WAF de última generación, dado que permite evitar el bloqueo de tráfico legítimo cuando se detecta un falso positivo. Cuando las IP no alcanzan los umbrales actuales de señales de ataque, es posible que al WAF se le estén escapando ataques potenciales. 

El umbral predeterminado de todas las señales de ataques son 50 peticiones en un minuto. No obstante, vemos que en la captura anterior hay dos IP que superan el 75 % del umbral, es decir, entraron unas 37 peticiones SQLi. En muchos casos, es lógico reducir el umbral si no queremos que lleguen ataques excesivos. Recomendamos hacer pruebas y validar antes de cambiar el umbral, con el fin de asegurarse de que no hay ningún problema que afecte a la producción.

Partiendo del ataque con SQLi del ejemplo anterior, queremos rebajar el umbral de ataque de SQLi a 25 por minuto.

Lo ideal es ir rebajando poco a poco, o puede que prefieras bloquear todas las peticiones maliciosas, como las de SQLi, de golpe. Puedes hacerlo creando una regla de petición que bloquee esa señal.

3. Bloquear ataques de IP maliciosas

Esta regla de peticiones te permite usar las señales de IP maliciosas para bloquear peticiones de atacantes al instante, sin esperar a que se activen los umbrales. 

El WAF de última generación recaba información de IP de múltiples fuentes, una de las cuales es la lista de IP maliciosas del SANS Institute, que se importa cada cierto tiempo del SANS Internet Storm Center. Se añaden IP a esta lista por diferentes motivos, como pueden ser la exploración de puertos, la detección como fuente de bots o el origen de ataques de «ransomware». A las IP de esta lista se les etiqueta con la señal Malicious IP. Asimismo, el WAF de última generación importa una lista de los nodos de salida de TOR del The Tor Project, y estas IP reciben la etiqueta con la señal Tor Traffic. Por último, la plataforma del WAF integra la funcionalidad de reputación de IP, que observa comportamientos maliciosos dirigidos a todos los clientes del WAF y los añade a la lista interna de reputación de amenazas. Estas IP llevarán la señal SigSci IP

Estas tres señales no son garantía de que alguien actúa con malas intenciones, razón por la cual recomendamos combinarlas con las señales de ataque del sistema que ya vienen definidas en el WAF de última generación. Así, la regla siguiente bloqueará al instante todo intento de ataque de una fuente de amenazas conocida.

10 Pro Tips Image 4

4. Bloquear peticiones provenientes de países de la lista de OFAC

Podemos crear una regla que bloquee toda petición proveniente de países sancionados según la lista de la Office of Foreign Assets Control (OFAC). La captura siguiente muestra una lista de sitios utilizados para identificar los códigos de países de la lista.

10 Pro Tips Image 510 Pro Tips Image 6

Como habrás visto, no especificamos regiones en la lista, puesto que necesitamos algo más que el código de país para determinar el origen geográfico de una IP. 

Para resolver esto, podemos aprovisionar tu CDN de Fastly para que envíe la información del ASN en un encabezado. Este se puede usar para crear una lista de todos los ASN a los que se debe impedir el acceso a tu aplicación, mediante la creación de una lista similar y una regla de peticiones.

5. Bloquear peticiones de agentes de usuario maliciosos conocidos

Se trata de algo muy sencillo: queremos asegurarnos de que se utilice un agente de usuario válido para acceder a la aplicación. Podemos crear una lista de agentes de usuario no deseados y bloquearlos de inmediato. Por ejemplo, aquí tenemos una lista de agentes de usuario que no espero que usen mi aplicación:

10 Pro Tips Image 7

Nota: esta lista distingue entre mayúsculas y minúsculas, por lo que puede ser mejor que utilices comodines para abarcar todas las posibilidades.

Ya puedo utilizar esta lista en una regla de peticiones para bloquear de inmediato:

10 Pro Tips Image 8

6. Bloquear peticiones con encabezados host no válidos

Esta regla bloquea a todo usuario que intente acceder a la aplicación directamente mediante una dirección IP, o bien sin rellenar el encabezado host. Podemos crear una lista de dominios válidos que se pueden usar para acceder a la aplicación, o los puedes enumerar como se muestra a continuación:

10 Pro Tips Image 9

Para que esta regla te permita identificar cuándo coincide el encabezado host con el dominio de tu aplicación, basta con añadir una señal llamada Domain Request.

Acto seguido, crea otra regla de peticiones que bloquee todo lo que no coincida con la señal Domain Request, y luego añade una señal que etiquete la petición en cuestión como Invalid Request.

10 Pro Tips Image 10

7. Acceso al dominio con limitación de volumen (DDoS de la aplicación)

Nota: esta funcionalidad solo está disponible con la licencia Premier.

La limitación de volumen en la capa de la aplicación para protegerse de ataques de DDoS es una opción muy popular. La regla anterior, que identificaba peticiones de dominios, también nos permite crear una regla de limitación de volumen para regular el tráfico.

10 Pro Tips Image 11

En este ejemplo, si observamos 100 peticiones de domino en un minuto, tendríamos que bloquear el acceso al dominio y devolver un código de respuesta 429.

8. Limitación del número de intentos de enumeración

Nota: esta funcionalidad solo está disponible con la licencia Premier.

A menudo, los atacantes intentan enumerar la aplicación o API mediante técnicas diversas. Por ejemplo, si un atacante intenta acceder por fuerza bruta a los archivos y directorios o llevar a cabo un ataque de relleno de credenciales, es probable que genere muchos errores 4XX y 5XX

Para evitar que los intentos de enumeración lleguen demasiado lejos, podemos servirnos de las reglas de limitación de volumen para proteger la aplicación o API. Esta regla cubrirá casos de uso más amplios, pero se puede modificar según requiera el contexto.

10 Pro Tips Image 12

En esta captura de pantalla, buscamos peticiones que generen una respuesta 4XX o 5XX. Cuando vemos tal petición, podemos considerar que se trata de un intento de enumeración, y la señal correspondiente llevará la cuenta (en este caso, Suspected Attacker). La señal de acción, Domain Request (activada en una etapa anterior), identificará el dominio cuyo acceso bloquearemos (ver el apartado anterior). Así, bloquearemos la primera petición que llegue una vez se haya alcanzado el umbral de intentos de enumeración.

9. Notificaciones de nuevos lanzamientos y funcionalidades

Activa las notificaciones de New Feature Announcements and Releases. Las notificaciones de New Feature Announcements te darán información sobre mejoras del producto para lanzamientos del agente solamente. Ahí se incluyen revisiones de errores o mejoras del agente que se hayan aplicado a la versión de lanzamiento del agente.

Para activar las notificaciones, dirígete a Corp Manage > Corp Integration y selecciona los siguientes eventos:

10 Pro Tips Image 13

Los anuncios de nuevas funcionalidades se publican en Announcements - Signal Sciences Help Center.

Los eventos creados por lanzamientos se refieren solamente a los lanzamientos de agente y se pueden ver en Agent - Signal Sciences Help Center.

10. Generación de registros con API o Syslog

Es importante recopilar datos de los registros, sobre todo los que mejoran la observabilidad de tu producto de seguridad. Se puede tratar, por ejemplo, de capturar los datos de registros del WAF de última generación y exportarlos a tu SIEM. Para hacerlo, hay varios procedimientos que repasamos en esta entrada del blog según cada caso de uso.

Si te parece fácil capturar datos ocultos o de muestra, la mejor solución puede pasar por usar la API para extraer los datos del panel del WAF de última generación. Aquí tienes un ejemplo de un script de Python que te servirá para extraer datos mediante la API. Si usas Splunk, aprovecha la Splunk App, que también funciona a través de API.

Si te sientes más cómodo manejando datos sin muestrear ni ocultar, la siguiente opción sería capturar registros del agente y reenviarlos a un servidor Syslog. Para ello, hay que habilitar la creación de registros de depuración en el agente. Añade las siguientes configuraciones a agent.conf:

debug-log-web-inputs = 1
debug-log-web-outputs = 1
log-out = “/var/log/sigsci.log”

Para los clientes que usan el Cloud WAF, hoy por hoy la opción para habilitar la creación de registros de depuración no se encuentra disponible.

Protege tus aplicaciones con el WAF de última generación

Esperamos que estas recomendaciones te ayuden a sacar el máximo partido al WAF de última generación de Fastly y puedas proteger tus aplicaciones mejor que nunca, estén donde estén. Si necesitas más ayuda, el equipo de TAM de Fastly está a tu disposición.

En la página del producto encontrarás más información sobre el WAF de última generación.


Fecha de publicación:

8 min de lectura

Comparte esta entrada

El equipo de Security Technical Account Management de Fastly es un grupo de expertos en seguridad que se encarga de que nuestros clientes puedan aprovechar al máximo los productos de seguridad de Fastly. Su labor consiste en estudiar los requisitos de seguridad de las aplicaciones de los clientes y aconsejarlos al respecto. Este equipo, formado por expertos en seguridad con mucha experiencia, ayuda a los clientes a mantenerse al día en temas de seguridad.


Integrantes del equipo:



  • Aneel Dadani, Manager, Security TAM

  • Orlando Barrera, Senior Security TAM

  • Farzam Ebadypour, Senior Security TAM

  • Ryan Miller, Senior Security TAM

  • Pratiksha Patil, Senior Security TAM

  • Siaka Doumbia, Senior Security TAM