Configurar el Web Application Firewall en Azure Application Gateway

Para terminar la semana, quiero contarte cómo de sencillo es proteger tu sitio web de ataques con Application Gateway. Dentro del propio servicio existe una característica adicional que te  protege de manera automática de diferentes ataques como SQL Injection (SQLi), Cross Site Scripting (XSS), etcétera.

Application Gateway – Web Application Firewall

Si creaste tu Application Gateway sin la caracteristica de WAF habilitada puedes configurarla después a través de la pestaña Web Application Firewall:

Application Gateway – Web Application Firewall

Basta con seleccionar el check Upgrade to WAF tier y esperar unos minutos hasta que se complete el cambio.

Application Gateway – Web Application Firewall – Upgrading to WAF tier

Como ves, una vez habilitado el WAF tienes dos modos de trabajar con él:

  • Detection, el cual normalmente se usa para investigar qué tipo de ataques o exploits se están lanzando contra tu aplicación.
  • Prevention cuando lo que quieres es bloquear el tráfico malicioso.

¿Cómo se determina que el tráfico es malicioso o no? A través de los Rule sets. A día de hoy disponemos de dos conjuntos de reglas: OWASP 3.0 y OWASP 2.2.9. Si no conoces esta parte, básicamente OWASP (Open Web Application Security Project) se trata de proyecto de código abierto que se dedica a recopilar y combatir las causas que hacen que el código sea inseguro. Ellos mismos generan conjuntos de reglas conocidas como Core Rule Set que pretenden proteger los sitios web, instalando un módulo llamado ModSecurity en el servidor web que hospeda tu sitio.

Es importante analizar con detenimiento los posibles ataques que puede sufrir tu aplicación, también con el objetivo de identificar falsos positivos si los hubiera. Dicho esto, en el apartado Advanced rule configuration es posible habilitar y deshabilitar las reglas del conjunto seleccionado.

Application Gateway – WAF – Advanced rule configuration

Otra parte que es importante configurar es el apartado de Diagnostics Logs para poder tener los registros de lo que ocurre en tu Application Gateway, sino al menos el modo detección no tiene mucho sentido. Para ello accede al apartado Diagnotics Logs y haz clic en Turn on diagnostics to collect the following data.

Application Gateway – Diagnostic Logs – Turn on diagnostics

 

En este caso voy a mandar la información a Log Analytics:

Application Gateway – Diagnostic Logs – Send to Log Analytics

Para comprobar que el WAF funciona correctamente, he creado una aplicación de ejemplo que lo único que hace es un POST de un formulario. Intento lanzar un ataque de tipo SQL Injection poniendo, por ejemplo, 1;insert into products para que Application Gateway lo detecte y esto es lo que obtenemos:

Application Gateway – WAF – 403 Forbidden

Por otro lado, si accedemos al servicio Log Analytics y lanzamos la siguiente query podemos ver todo lo que el sistema ha detectado a nivel de WAF: search *
| where Type == “AzureDiagnostics” and OperationName == “ApplicationGatewayFirewall”

Application Gateway – Log Analytics – ApplicationGatewayFirewall logs

¡Feliz fin de semana!