Web Application Firewall
Vamos a seguir en este post con la configuración de Azure Application Gateway, en esta ocasión habilitando la característica WAF (Web Application Firewall), que permite proteger nuestras máquinas y servicios web contra ataques como SQL Injection (SQLi), Cross Site Scripting (XSS) o Session Hijacking.
Para este post implementaremos una infraestructura muy simple en la que utilizaremos una máquina virtual que incluye múltiple vulnerabilidades Web para practicar. Se denomina DVWA, Damn Vulnerable Web App, y podemos desplegarla en Azure desde el Marketplace. Esta máquina la situaremos detrás del WAF y comprobaremos que es capaz de evitar los ataques que podrían afectar a esta máquina y dejar pasar únicamente las peticiones legítimas:
Como decíamos, desde el marteplace de Azure podemos crear una máquina DVWA:
Podemos crear esta máquina de tamaño B1s y vendrá con reglas preconfiguradas para el Network Security Group:
El problema con esta máquina desde el Marketplace es que no es posible utilizar una suscripción gratuita para su facturación y nos dará errores de validación:
En su lugar, implementamos nosotros esta máquina DVWA siguiendo las instrucciones de:
Con esta máquina ya creada podemos iniciar sesión:
Y si vamos a la sección de SQL Injection, podemos comprobar que es vulnerable:
Donde con una simple cadena en la caja de consulta podemos obtener la lista de todos los usuarios.
Veamos qué ocurre si en lugar de acceder de forma directa a la máquina virtual, lo hacemos a través del WAF. Para esto creamos un Azure Application Gateway con la característica WAF activada.
Hemos seleccionado el modo de firewall “Prevention” para que las reglas bloqueen cualquier tráfico malicioso. En el modo “Detection” se crearían registros para este tipo de tráfico, pero no se bloquearía.
Le damos una IP pública:
Añadimos la máquina DVWA al backend:
Y creamos el listener y la regla necesaria:
Una vez completado el despliegue, ya podemos acceder a la aplicación DVWA a través del WAF:
Y si entramos en la sección de SQL Injection para comprobar la vulnerabilidad:
Vemos que el WAF no permite que se haga la consulta que antes nos devolvía la lista de todos los usuarios:
Del mismo modo, si accedemos a la sección de XSS (stored) de forma directa:
Vemos que es vulnerable:
Mientras que si hacemos lo mismo a través del WAF:
También lo bloquea:
Las reglas del WAF que bloquean este tipo de ataques están definidas siguiendo las buenas prácticas de OWASP 3.0:
Y podemos modificarlas según consideremos conveniente, aunque la recomendación es dejarlas habilitadas por defecto.