CrowdSec un nuevo proyecto para la seguridad en Internet

Hoy os quiero hablar de la herramienta CrowdSec, que tiene como objetivo aprovechar el poder de la multitud para crear una base de datos de reputación de IP muy precisa. Antes de continuar quiero dar las gracias Mr. Brigthside, que se puso en contacto conmigo vía redes sociales, para hablarme de ella.

Se trata de un proyecto de seguridad diseñado para proteger servidores, servicios, contenedores o máquinas virtuales expuestos en Internet con un agente en el lado del servidor. Esta herramienta está inspirada en Fail2ban, de la que ya hemos hablado ( 1, 2 ), y pretender ser una versión colaborativa y más moderna de esta.

CrowSec es software libre (utiliza una licencia MIT) y sigue la filosofía de desarrollo del código abierto u open source. Actualmente está disponible para GNU/Linux, con puertos para macOS y tiene en su hoja de ruta que también esté disponible para Microsoft Windows.

Logo de CrowdSec

¿Cómo funciona CrowdSec?

Esta herramienta ha sido escrita en Golang y está diseñada para ejecutarse en arquitecturas modernas y complejas como nubes (servidores de otros), lambdas (véase AWS Lambda) y contenedores. Para lograr esto, podemos decir que está «desacoplado», esto es, que puede «detectar aquí» (por ejemplo en los registros de una base de datos) y «solventar allí» (por ejemplo en un cortafuegos o proxy)

Su proceso de funcionamiento se puede dividir en cinco pasos:

  • Leer fuentes de datos (archivos de registro, arroyos, rastros, mensajes …), normalizar y enriquecer señales.
  • Hacer coincidir esas señales con patrones de comportamiento, también conocidos como escenarios.
  • Si se detecta un comportamiento no deseado, se trata a través de un rebotador: un componente de software integrado en la pila aplicativa que admite varias contramedidas como bloquear, devolver 403 y pronto captcha, 2FA, etc
  • La IP agresora, el nombre del escenario activado y una marca de tiempo se envía a su plataforma de selección (para evitar envenenamientos y falsos positivos.
  • Si se verifica, esta IP se integra a la lista de bloqueo distribuida continuamente a todos los clientes de CrowdSec (que se utiliza como fuente de enriquecimiento en el paso 1).

Entrando aún más al detalle, CrowdSec utiliza el concepto de «cubos con fugas», de manera interna para permitir un control estricto de los eventos. Los escenarios están escritos en YAML para que sean los más simples y legibles posible sin sacrificar su granularidad. Su motor le permite obtener información de los «cubos de cadena» o metabuckets, lo que significa que si varios cubos (por ejemplo, escaneo web, escaneo de puertos e intento de inicio de sesión fallaron) se desbordan en un «metacubo», esto puede desencadenar en una contramedida para un “ataque dirigido”

Los protocolos agresores de Internet (IPs) se tratan con bouncers, esto es, software que actúa como mandatario sin que el cliente tenga conocimiento de ello. Pues bien, CrowdSec ofrece varios conectores listos para usar, como por ejemplo para Nginx, PHP, Cloudflare o Netfilter, entre otros; además de escenarios para disuadir varias clases de ataques.

Funciona con cosas como Captcha, limitando los derechos de aplicación, autentificación multifactor, limitando consultas o activando el modo de ataque de Cloudflare solo cuando sea necesario. Podemos tener una idea de lo que está sucediendo localmente (y dónde está sucediendo) con una interfaz de visualización liviana y una fuerte capacidad de observación vía Prometheus.

(CrowdSec, CC BY-SA 4.0)

Seguridad

Si bien el software actualmente parece un Fail2ban mejorado, el objetivo es aprovechar el poder de la multitud, para crear una base de datos de reputación de IP muy precisa. Cuando CrowdSec rebota una IP específica, el escenario desencadenado y la marca de tiempo se envían a su API para que se verifiquen en el consenso global de IP incorrectas.

Si bien desde el proyecto ya se está redistribuyendo una lista de bloqueo a la comunidad (se puede ver ingresando en la consola cscli ban list --api), planean mejorar esta parte en el futuro.  Actualmente la red tiene controladas más de 100000 direcciones IP (actualizadas diariamente) y tiene la capacidad de redistribuir unas 10000 a los usuarios de su comunidad. El proyecto también ha sido diseñado para cumplir con el RGPD y respetar la privacidad, tanto en términos técnicos como legales.

La visión de las personas que están detrás del proyecto es que CrowdSec se lo suficientemente grande, para que, entre toda la comunidad de usuarios, se genere en tiempo real una base de datos de reputación IP lo más precisa posible. Este motor de reputación global, junto con la evaluación y corrección del comportamiento local, debería permitir a muchas empresas y especialistas del mundo IT lograr una seguridad más estricta a un costo más bajo.

Pensando en las empresas

Muchas veces las comunidades de desarrollo del código abierto se ven con la vicisitud del financiamiento. Desde el equipo de CrowdSec ofrecen suscripciones premium a las empresas que quieran aprovechar la base de datos de reputación de IP sin contribuir a ella y así proteger sus datos.

Empezando a trabajar con CrowdSec

La configuración de esta herramienta es rápida y fácil, no nos llevará más de cinco minutos. Cuenta con ayuda de un asistente que permite que la utilicen tanto personas y organizaciones como sea posible.

En el caso de GNU/Linux, para instalar las dependencias, si utilizamos una distribución basada en Debian, solo hemos de escribir:

apt-get install bash gettext whiptail curl wget

Si nuestro sistema está basado en Red Hat:

dnf install bash gettext newt curl wget
# Si nuestro sistema es antiguo, podemos utilizar yum en vez de dnf

En ambos casos, una vez hecho esto, realizamos la instalación propiamente dicha:

curl -s https://api.github.com/repos/crowdsecurity/crowdsec/releases/latest \
| grep browser_download_url| cut -d '"' -f 4  | wget -i -
tar xvzf crowdsec-release.tgz
cd crowdsec-v*
sudo ./wizard.sh -i

Yo de momento lo he dejado funcionando en un host de pruebas, a ver que tal el resultado, para más tarde pasarlo a «producción» 😊

CrowdSec recién instalado

Una comunidad amplia

Actualmente, los miembros de la comunidad provienen de 45 países diferentes, en seis continentes diferentes. Se están buscando más usuarios, colaboradores y embajadores para llevar el proyecto al siguiente nivel. Sirva esta humilde entrada como mi granito de arena para este interesante y necesario proyecto.

(CrowdSec, CC BY-SA 4.0)

Y esto es todo ahora solo falta que lo probéis. Si ya lo conocéis o lo habéis probado me gustaría saber vuestra experiencia. La podéis dejar en los comentarios en esta entrada, que los comentarios en las redes sociales muchas veces se los lleva el viento. En cualquier caso el producto tiene bastante miga así que lo más probable es que siga hablando de él en más entradas.

Fuentes consultadas

Opensource.com – New open source project crowdsources internet security

Página de Github del proyecto CrowdSec