Hola a todos! En esta entrada vamos a tratar de cero los WAF (Web Application Firewall). Por tanto, debemos empezar por el principio.

Como su propio nombre indica, es un firewall a nivel de aplicación web. Owasp lo define como:

Un waf es un firewall para aplicaciones HTTP. Aplica un conjunto de reglas que cubren ataques comunes como XSS, SQLi etc…

Tipos de WAF

Hay dos tipos de WAF, los que se residen en la red (es decir son un elemento más de la red) y los que se basan en el servidor de aplicaciones (residen en el servidor). Los WAF son elementos complementarios a las medidas de seguridad que soportan los Firewall clásicos.

Llegados a este punto, no nos debería resultar muy complejo entender el siguiente esquema:

Modelos de seguridad

Seguridad Positiva

Este tipo de modelo bloquea todas las peticiones. Sólo acepta las que son seguras, para distinguirlas tiene una serie de reglas.

A priori parece lo más idóneo ya que nos protegemos de nuevos ataques, pero resulta difícil de mantener si la página web tiene un desarrollo continuo pues nos veremos obligados a modificar las reglas constantemente.

Seguridad Negativa

Este modelo es todo lo contrario al anterior, ya que acepta todas las peticiones, bloqueando las que detecta como amenazas. Puesto a que depende de las reglas, suele ser menos fiable, pues el riesgo de bypass se incrementa.

¿Pero esto es seguro?

Hay que tener siempre claro que la seguridad al 100% no existe y esto es tan sólo, un nivel más de seguridad, que sin duda, es más que útil. Como se ha comentado anteriormente, un WAF funciona con reglas y por tanto, esas reglas pueden tener fallos y/o no contemplar nuevos ataques.

¿Cómo consigo un WAF?

En este punto debemos plantearnos si queremos un WAF comercial o uno OpenSource, obviamente las diferencias son notables. En este caso he escogido uno de los más populares, que es modsecurity (https://modsecurity.org/).

Es un módulo para servidores HTTP (Apache, NGINX y Microsoft IIS)  cuyo propósito es reforzar la seguridad de las aplicaciones Web. Modsecurity es OpenSource, además, provee un lenguaje de reglas y una API para implementar protecciones avanzadas, permitiendo bloquear gran cantidad de ataques webs, convirtiéndose en un efectivo sistema de prevención y detección de intrusos para servidores Web.

¡Desplegando ModSecurity!

Para obtener modsecurity deberemos instalar lo siguiente:


Una vez instalado, accedemos al directorio (en mi caso) de los mods disponibles en Apache, para ello visualizamos (o creamos si no existe) el fichero mod-security.conf.


Como se puede observar, simplemente incluye todos los ficheros con la extensión “.conf” alojados en /etc/modsecurity. En dicho directorio, tenemos un fichero de configuración recomendado, para activarlo, simplemente debemos renombrarlo y dejarlo con la extensión .conf.

 

Modsecurity incluye por defecto reglas, éstas están situadas en /usr/share/modsecurity-crs y hace falta activarlas para que empiecen a funcionar, para ello creamos un enlace simbólico de las base_rules a las activated_rules.

Quedando de la siguiente manera:

Tan sólo nos queda activar modsecurity en nuestro sitio, para ello nos dirigimos a /etc/apache2/sites-avalaible y añadimos la información del módulo (dichas líneas incluyen “activan”  las reglas y las configuraciones de modsecurity)

NOTA: DetectionOnly indica que logeé, pero que no bloqueé, de querer bloquear, también se debería editar en la configuración situada en /etc/modsecurity (séptima línea).

Por último reinciamos apache y ya tenemos modsecurity funcionando!

¡Probando ModSecurity!

Para probarlo de forma sencilla, inyectaremos un XSS vía GET en la página, monitorizando los logs para comprobar si la regla lo detecta y lo logea.

Para ello, monitorizamos los logs e inyectamos el XSS.

Como se puede comprobar a continuación la inyección es detectada y registrada.

En la primera parte del log podremos ver los detalles de la conexión:

A continuación, podremos comprobar la respuesta por parte del servidor entregada al cliente y las firmas que han detectado el ataque.

Por último, visualizaremos el tipo de ataque y el modo de actuar del WAF.

Autor: Blackdrake

Posts Relacionados

Comments

comments

Deja una respuesta

Tu email no será publicado. Los campos requeridos estan marcados con *
Puedes usar tags HTML y los atributos: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">