--- title: "Cómo instalar CrowdSec en Ubuntu 24.04 con bouncer nftables" description: "Instala CrowdSec en Ubuntu 24.04, detecta ataques a SSH y Nginx, bloquea las IPs con el bouncer de nftables y conecta el servidor a la consola de CrowdSec." category: "Seguridad de Red Avanzada" language: es source: https://cubepath.com/es/docs/seguridad-de-red-avanzada/instalacion-de-crowdsec-seguridad-colaborativa updated: 2026-09-25 --- # Cómo instalar CrowdSec en Ubuntu 24.04 con bouncer nftables CrowdSec es un sistema de detección y prevención de intrusiones de código abierto que analiza los logs de tus servicios, detecta comportamientos maliciosos (fuerza bruta en SSH, escaneos web, etc.) y bloquea las IPs responsables. A diferencia de Fail2ban, separa la detección (el agente CrowdSec) del bloqueo (los *bouncers*) y comparte las señales con una red comunitaria, de la que recibe a cambio una lista de IPs maliciosas conocidas. En este tutorial instalarás CrowdSec en Ubuntu 24.04, bloquearás atacantes con el bouncer de firewall basado en nftables, añadirás la protección para Nginx y conectarás el servidor a la consola web. ## Requisitos previos Para seguir esta guía necesitas: - Un servidor con Ubuntu 24.04 LTS, por ejemplo un VPS de CubePath. - Un usuario no root con privilegios `sudo`. - La IP pública desde la que te conectas por SSH, para añadirla a la lista blanca (puedes verla con `echo $SSH_CLIENT` en la sesión SSH, es el primer campo). - Opcional: Nginx instalado, si quieres proteger también un sitio web. > Nota: CrowdSec levanta su API local en `127.0.0.1:8080`. Si otro servicio ya usa ese puerto, consulta la sección de solución de problemas antes de instalar. ## Paso 1: Añadir el repositorio de CrowdSec Los paquetes de CrowdSec se publican en un repositorio propio alojado en Packagecloud. CrowdSec ofrece un script que añade ese repositorio con su clave de firma. Descárgalo primero para poder revisarlo antes de ejecutarlo: ```bash curl -fsSL https://install.crowdsec.net -o crowdsec-repo.sh less crowdsec-repo.sh ``` El script solo detecta tu distribución, instala la clave GPG y crea el archivo del repositorio en `/etc/apt/sources.list.d/`. Ejecútalo: ```bash sudo sh crowdsec-repo.sh ``` Comprueba que el paquete `crowdsec` ya está disponible desde el nuevo repositorio: ```bash apt policy crowdsec ``` ```output crowdsec: Installed: (none) Candidate: 1.6.x Version table: 1.6.x 500 500 https://packagecloud.io/crowdsec/crowdsec/any any/main amd64 Packages ``` ## Paso 2: Instalar el agente CrowdSec Instala el paquete: ```bash sudo apt install crowdsec ``` Durante la instalación, CrowdSec detecta los servicios presentes en el servidor e instala automáticamente las *collections* correspondientes (conjuntos de parsers y escenarios). En un Ubuntu 24.04 típico instalará al menos `crowdsecurity/linux` y `crowdsecurity/sshd`, y `crowdsecurity/nginx` si Nginx ya estaba instalado. También genera `/etc/crowdsec/acquis.yaml`, el archivo que indica qué logs debe leer. Comprueba que el servicio está activo: ```bash sudo systemctl status crowdsec --no-pager ``` ```output ● crowdsec.service - Crowdsec agent Loaded: loaded (/usr/lib/systemd/system/crowdsec.service; enabled; preset: enabled) Active: active (running) since ... ``` Lista las collections instaladas: ```bash sudo cscli collections list ``` ```output COLLECTIONS Name Status Version Local Path crowdsecurity/linux enabled 0.x /etc/crowdsec/collections/linux.yaml crowdsecurity/sshd enabled 0.x /etc/crowdsec/collections/sshd.yaml ``` Por último, confirma que CrowdSec está leyendo los logs. La tabla de adquisición muestra cuántas líneas se han leído y analizado de cada fuente: ```bash sudo cscli metrics ``` Busca `/var/log/auth.log` en la tabla `Acquisition Metrics`: las columnas `Lines read` y `Lines parsed` deben ir aumentando a medida que hay actividad SSH. ## Paso 3: Añadir tu IP a la lista blanca Antes de activar el bloqueo, protege tu propio acceso. Si te equivocas varias veces con la contraseña o una herramienta de despliegue hace muchas conexiones, CrowdSec podría bloquear tu IP y dejarte fuera del servidor. Crea un parser de lista blanca en la etapa de enriquecimiento: ```bash sudo nano /etc/crowdsec/parsers/s02-enrich/mywhitelist.yaml ``` Sustituye `198.51.100.7` por tu IP y ajusta o elimina el rango de ejemplo: ```yaml name: local/mywhitelist description: "IPs de administración que nunca deben bloquearse" whitelist: reason: "IP de administración" ip: - "198.51.100.7" cidr: - "10.0.0.0/8" ``` Recarga CrowdSec y comprueba que el parser aparece como local: ```bash sudo systemctl reload crowdsec sudo cscli parsers list | grep mywhitelist ``` ```output local/mywhitelist enabled,local /etc/crowdsec/parsers/s02-enrich/mywhitelist.yaml ``` ## Paso 4: Instalar el bouncer de firewall El agente solo detecta y decide; el bloqueo real lo aplica un bouncer. Ubuntu 24.04 usa nftables como backend del firewall, así que instala la variante de nftables: ```bash sudo apt install crowdsec-firewall-bouncer-nftables ``` Como el agente está en el mismo servidor, el paquete registra el bouncer en la API local y genera su clave automáticamente. Compruébalo: ```bash sudo cscli bouncers list ``` ```output Name IP Address Valid Last API pull Type cs-firewall-bouncer-1727260000 127.0.0.1 yes 2026-09-25T10:15:02Z crowdsec-firewall-bouncer ``` Y que el servicio está en marcha: ```bash sudo systemctl status crowdsec-firewall-bouncer --no-pager ``` El bouncer crea su propia tabla `crowdsec` en nftables, independiente de UFW, y consulta la API local cada pocos segundos para añadir o quitar IPs. Su configuración está en `/etc/crowdsec/bouncers/crowdsec-firewall-bouncer.yaml`; los valores por defecto son adecuados para la mayoría de servidores. ## Paso 5: Probar el bloqueo En lugar de atacar tu propio servidor, crea una decisión manual para una IP de documentación y comprueba que llega al firewall: ```bash sudo cscli decisions add --ip 203.0.113.10 --duration 10m --reason "prueba manual" ``` Lista las decisiones activas: ```bash sudo cscli decisions list ``` ```output ID Source Scope:Value Reason Action Country AS Events expiration Alert ID 250001 cscli Ip:203.0.113.10 prueba manual ban 1 9m56s 1 ``` Tras unos segundos, la IP debe aparecer en los sets de nftables que gestiona el bouncer: ```bash sudo nft list table ip crowdsec | grep 203.0.113.10 ``` ```output elements = { 203.0.113.10 timeout 9m50s expires 9m40s } ``` Elimina la decisión de prueba: ```bash sudo cscli decisions delete --ip 203.0.113.10 ``` A partir de ahora, cuando un escenario detecte un ataque real (por ejemplo, `crowdsecurity/ssh-bf` ante muchos intentos fallidos de login por SSH), CrowdSec creará una alerta y una decisión de bloqueo de 4 horas por defecto. Consulta el historial con: ```bash sudo cscli alerts list ``` ## Paso 6: Proteger Nginx Si tienes Nginx instalado y no se añadió durante la instalación, instala la collection de Nginx y la de ataques web genéricos: ```bash sudo cscli collections install crowdsecurity/nginx crowdsecurity/base-http-scenarios ``` Crea un archivo de adquisición para que CrowdSec lea los logs de Nginx: ```bash sudo nano /etc/crowdsec/acquis.d/nginx.yaml ``` ```yaml filenames: - /var/log/nginx/access.log - /var/log/nginx/error.log labels: type: nginx ``` Si ya había una entrada para Nginx en `/etc/crowdsec/acquis.yaml`, no la dupliques aquí. Recarga el agente: ```bash sudo systemctl reload crowdsec ``` Genera algunas peticiones y comprueba en `sudo cscli metrics` que `/var/log/nginx/access.log` aparece en `Acquisition Metrics` con líneas analizadas. El bouncer de firewall que ya tienes bloqueará también a las IPs que ataquen la web, sin cambios en la configuración de Nginx. ## Paso 7: Conectar el servidor a la consola de CrowdSec La consola web gratuita en `https://app.crowdsec.net` muestra las alertas de todos tus servidores y permite suscribirse a listas de bloqueo adicionales. Crea una cuenta, pulsa la opción para añadir un Security Engine y copia la clave de enrolamiento que aparece. Después ejecuta en el servidor: ```bash sudo cscli console enroll your_enroll_key ``` ```output INFO Enabled tainted : Forward alerts from tainted scenarios to the console INFO Enabled custom : Forward alerts from custom scenarios to the console INFO Enabled manual : Forward manual decisions to the console INFO Watcher successfully enrolled. Visit https://app.crowdsec.net to accept it. ``` Acepta el servidor en la consola web y reinicia el agente para completar el enrolamiento: ```bash sudo systemctl restart crowdsec ``` Independientemente de la consola, CrowdSec ya comparte señales con la API central (CAPI) y recibe la lista de bloqueo comunitaria. Comprueba que la conexión funciona: ```bash sudo cscli capi status ``` ```output INFO You can successfully interact with Central API (CAPI) ``` Las decisiones que llegan de la comunidad aparecen con el origen `CAPI` en `sudo cscli decisions list --origin CAPI`. ## Paso 8: Mantener actualizados los escenarios Los parsers y escenarios del hub se actualizan independientemente del paquete. Actualiza el índice del hub y los elementos instalados, y recarga el agente: ```bash sudo cscli hub update sudo cscli hub upgrade sudo systemctl reload crowdsec ``` El propio agente y el bouncer se actualizan con el resto del sistema mediante `sudo apt upgrade`. ## Solución de problemas **CrowdSec no arranca con `bind: address already in use`**: otro servicio usa el puerto 8080. Cambia `listen_uri` en la sección `api.server` de `/etc/crowdsec/config.yaml` (por ejemplo, a `127.0.0.1:8081`), pon la misma dirección en `url` dentro de `/etc/crowdsec/local_api_credentials.yaml` y en `api_url` de `/etc/crowdsec/bouncers/crowdsec-firewall-bouncer.yaml`, y reinicia ambos servicios. **Te has bloqueado a ti mismo**: entra por la consola VNC de tu VPS desde el panel de CubePath, ejecuta `sudo cscli decisions delete --ip your_ip` y añade tu IP a la lista blanca del paso 3. **`Lines parsed` se queda en 0 para un log**: el `type` de la etiqueta en la adquisición no coincide con el formato del log, o falta la collection. Comprueba el análisis de una línea concreta con `sudo cscli explain --file /var/log/nginx/access.log --type nginx`. ## Conclusión Has instalado CrowdSec en Ubuntu 24.04, has protegido SSH y Nginx, has conectado el bloqueo al firewall con el bouncer de nftables y has enlazado el servidor con la consola y la lista comunitaria. Como siguientes pasos, revisa los escenarios disponibles para tus otros servicios con `sudo cscli collections list -a`, configura notificaciones de alertas en `/etc/crowdsec/notifications/` y combina CrowdSec con un firewall UFW que solo abra los puertos que realmente necesitas.