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.

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:

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

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.

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.

En este caso voy a mandar la información a 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:

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»

¡Feliz fin de semana!