# Combatiendo contra Crawlers & Bots

## Introducción

¿Te diste cuenta la cantidad de tráfico que generan los Bots 🤖 & Crawlers 🕷️? ¿Lo medis? Segund [Imperva](https://www.imperva.com/resources/reports/2023-Imperva-Bad-Bot-Report.pdf) el 49,6% del tráfico es automatizado.

![Imperva on LinkedIn: Move over humans! Bots are taking over the internet,  accounting for 49.6%…](https://media.licdn.com/dms/image/D5610AQFH1xEJXUAoLA/image-shrink_800/0/1713452102787?e=2147483647&v=beta&t=Iwo3oqQYmj5ElcgkSlRe4HqCEzTe9nyvs0l-5qf4fHI align="left")

Me genera preguntas ¿Cuanto de mas estamos pagando 💵 por nuestra infraestructura? Hace un tiempo [escribí](https://blog.santiagoagustinfernandez.com/reforzando-la-seguridad-con-un-waf-open-source-primera-linea-de-defensa) sobre Nginx como WAF, agregando ModSecurity, hoy me encuentro con un proyecto que me llamo la atencion como [SafeLine](https://waf.chaitin.com/). ¿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.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1723821001000/a9faab0a-2137-4c22-9a4d-e850482a5cab.png align="center")

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](https://www.linkedin.com/pulse/elevating-kubernetes-security-deploying-safeline-waf-nimnas-ahamed-vm5ye/).

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1723822505826/1d083840-3c3a-4f4a-8d64-e25ade80945e.png align="center")

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.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1723823209627/22097bbe-1b99-4d0a-a84d-350d0c07ccea.png align="center")

Comenzamos con la instalación.

```plaintext
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.

![](https://miro.medium.com/v2/resize:fit:1400/0*BzNKiLeXUNmUIPTO.jpg align="left")

De esta manera quedara.

![](https://miro.medium.com/v2/resize:fit:1400/0*ukqqQAdE64udZuyR.jpg align="left")

## Creación de Certificado

En la pestana Web Services &gt; Certificate &gt; Add Cert

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1723846868152/235bc2c3-c780-45b0-955c-de9ac0b0e570.png align="center")

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1723846911308/1983384a-7ea3-4e1c-84ed-d4dcee644e63.png align="center")

Agregamos un Web Service.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1723846976572/ad8e0e27-c056-4a99-85de-6cc748162d69.png align="center")

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1723847135683/b65a8eaf-59b6-4379-a181-7c9176edfc08.png align="center")

Ya tenemos nuestra aplicación protegida. Encendemos el Anti Bot y el Rate Limit. Tenemos gran cantidad de opciones a configurar.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1723847243543/453a3685-8236-4c1c-95f2-7bf591bd97e9.png align="center")

Apenas publicado ya empieza a darnos datos.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1723847311608/c5a320b3-64e5-4ca8-861f-f674d49516dd.png align="center")

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1723847340984/d5108f8b-7d63-4fd9-92b7-55877bcf947a.png align="center")

Acá las reglas que ya estamos analizando por defecto.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1723847412656/ff12eb37-d87c-4a66-87a0-7933f94283c9.png align="center")

## Ataques

* **SQL Injection Attack:** [`https://app.esprueba.com/?id=1+and+1=2+union+select+1`](https://chaitin.com/?id=1+and+1%3D2+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`](https://chaitin.com/?id=..%2F..%2F..%2F..%2Fetc%2Fpasswd)
    
* **Code Injection Attack:** [`https://app.esprueba.com/?id=phpinfo();system('id')`](https://chaitin.com/?id=phpinfo%28%29%3Bsystem%28%27id%27%29)
    
* **XXE Attack:** `https://app.esprueba.com/?id=<?xml+version="1.0"?><!DOCTYPE+foo+SYSTEM+"">`
    

Aca vemos la pantalla, que ve el atacante.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1724019058935/a4c23415-aed5-4de5-a654-0a4dde7ce56e.png align="center")

Mientras en nuestra consola.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1724019289370/0c6dd7e5-e697-49ed-99cb-d33914b312ed.png align="center")

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1724019317998/53073e4f-25d8-4fc4-ba49-bd1255dd40d4.png align="center")

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.

## Referencias

[https://medium.com/@lulu.liu12345/boost-kubernetes-security-deploying-safeline-waf-with-ingress-nginx-09f7a19d985d](https://medium.com/@lulu.liu12345/boost-kubernetes-security-deploying-safeline-waf-with-ingress-nginx-09f7a19d985d)

[https://medium.com/@lulu.liu12345/safeline-the-open-source-waf-thats-gaining-traction-on-github-85e2243be39e](https://medium.com/@lulu.liu12345/safeline-the-open-source-waf-thats-gaining-traction-on-github-85e2243be39e)
