CrowdSec Firewall Bouncer Netfilter / NFTables Ciberseguridad Híbrida
Los cortafuegos tradicionales basados en reglas estáticas son insuficientes para detener ataques modernos dinámicos. CrowdSec es un sistema de prevención de intromisiones (IPS) colaborativo y de código abierto que procesa los logs de aplicaciones web en tiempo real para detectar comportamientos sospechosos (escaneos de vulnerabilidades CVE, ataques de fuerza bruta o inyecciones SQL).
Para mantener un rendimiento óptimo, desacoplamos la Detección (motor CrowdSec dentro de Docker) de la Remediación (Bouncer nativo en Linux). Cuando el motor en Docker detecta un comportamiento hostil, notifica al Bouncer del host, el cual descarta los paquetes TCP directamente en las tablas del kernel (nftables / iptables) antes de que la petición consuma recursos en el servidor web.
Añadimos el servicio de CrowdSec a nuestra infraestructura contenedorizada y etiquetamos el servicio web de Nginx. Las etiquetas instruyen al agente de CrowdSec para auto-descubrir el contenedor y parsear sus logs de acceso mediante la colección de reglas crowdsecurity/nginx y crowdsecurity/http-cve.
Desplegamos la nueva configuración para que Docker inicialice el motor de análisis de seguridad:
El motor de CrowdSec expone un API Local (LAPI). El Bouncer nativo instalado en el sistema operativo necesita autenticarse frente a este API para consultar periódicamente la lista de direcciones IP bloqueadas (*decisions*). Registramos un nuevo bouncer en el motor ejecutable de Docker:
cscli. Esta credencial permite autorizar al demonio del sistema operativo para aplicar bloqueos de red.
Instalamos el paquete nativo crowdsec-firewall-bouncer en el sistema operativo Linux (Debian/Ubuntu/Raspberry Pi OS). Ejecutarse fuera de Docker es esencial para que el Bouncer pueda manipular las reglas de filtrado de paquetes de la pila de red del Kernel Linux (Netfilter/NFTables).
Editamos el fichero de configuración del Bouncer en el sistema operativo host para apuntar hacia el API Local expuesto por el contenedor Docker en http://127.0.0.1:8080/ e inyectar la clave API generada.
Habilitamos el demonio para que se ejecute automáticamente al arrancar el sistema operativo y reiniciamos el servicio:
El flujo de defensa en tiempo real opera de manera autónoma:
nftables. Las peticiones futuras de esa IP se descartan instantáneamente en la interfaz de red.