Combatiendo contra Crawlers & Bots
¿Cómo hacemos para bloquear el tráfico anómalo? ¿Hay esperanza?
Introducción
¿Te diste cuenta la cantidad de tráfico que generan los Bots 🤖 & Crawlers 🕷️? ¿Lo medis? Segund Imperva el 49,6% del tráfico es automatizado.
Me genera preguntas ¿Cuanto de mas estamos pagando 💵 por nuestra infraestructura? Hace un tiempo escribí sobre Nginx como WAF, agregando ModSecurity, hoy me encuentro con un proyecto que me llamo la atencion como SafeLine. ¿Por que? Es un Web Application Firewall fácil de usar y muy eficaz, ya ha cosechado la cifra de 11,6 mil estrellas en GitHub. Diseñado para proteger los servicios web de los ataques de hackers, filtrando y monitorizando el tráfico HTTP entre las aplicaciones web e Internet. Estas métricas me dejaron pensando.
Un WAF ayuda a proteger las aplicaciones web filtrando y supervisando el tráfico HTTP entre una aplicación web e Internet. Normalmente protege las aplicaciones web de ataques como la inyección SQL, XSS, inyección de código, inyección de comandos, inyección CRLF, inyección ldap, inyección xpath, RCE, XXE, SSRF, path traversal, backdoor, bruteforce, http-flood, bot abused, entre otros.
Instalación de SafeLine
En mi caso voy a crear un maquina virtual para proteger mi aplicación, sobre un ambiente Kubernetes. Si quisieran desplegar directamente SafeLine, con Nginx Ingress, sobre un Cluster les recomiendo leer este artículo.
El waf tiene la 192.168.0.23 y entregara todo el trafico, analizado, a nuestro nodo Kubernetes en 192.168.0.22 que contiene app.esprueba.com. Vamos agregar en el waf la entrada DNS local.
Comenzamos con la instalación.
sudo bash -c "$(curl -fsSLk https://waf.chaitin.com/release/latest/setup.sh)"
Una vez instalado la consola nos entrega el usuario y password para empezar la configuración. Vamos apuntar nuestro Firewall a WAF, que hará de proxy reverso y luego el upstream al Kubernetes.
Asi estaba antes.
De esta manera quedara.
Creación de Certificado
En la pestana Web Services > Certificate > Add Cert
Agregamos un Web Service.
Ya tenemos nuestra aplicación protegida. Encendemos el Anti Bot y el Rate Limit. Tenemos gran cantidad de opciones a configurar.
Apenas publicado ya empieza a darnos datos.
Acá las reglas que ya estamos analizando por defecto.
Ataques
SQL Injection Attack:
https://app.esprueba.com/?id=1+and+1=2+union+select+1
XSS Attack:
https://app.esprueba.com/?id=<img+src=x+onerror=alert()>
Path Traversal Attack:
https://app.esprueba.com/?id=../../../../etc/passwd
Code Injection Attack:
https://app.esprueba.com/?id=phpinfo();system('id')
XXE Attack:
https://app.esprueba.com/?id=<?xml+version="1.0"?><!DOCTYPE+foo+SYSTEM+"">
Aca vemos la pantalla, que ve el atacante.
Mientras en nuestra consola.
La verdad que este proyecto es muy interesante. Me gustaria verlo en un ambiente productivo, el nivel de detalle. ¿El costo? 100US/M o 600US/Y. Poco.
Espero que les haya gustado y lo prueben.