--- title: "Bouncers y consola de CrowdSec en Ubuntu 24.04" description: "Instala el bouncer de firewall de CrowdSec con nftables, inscribe el servidor en la consola y gestiona decisiones, listas blancas y escenarios en Ubuntu 24.04." category: "Herramientas de Seguridad" language: es source: https://cubepath.com/es/docs/herramientas-de-seguridad/gestion-de-consola-y-bouncers-crowdsec updated: 2026-09-25 --- # Bouncers y consola de CrowdSec en Ubuntu 24.04 CrowdSec separa la detección de la acción. El **motor de seguridad** (el servicio `crowdsec`) lee los logs, aplica escenarios y toma **decisiones** (por ejemplo, banear una IP durante 4 horas). Los **bouncers** consultan esas decisiones en la API local (LAPI) y las ejecutan: el bouncer de firewall las convierte en reglas de nftables. La **consola** web de CrowdSec muestra las alertas de todos tus servidores y te permite suscribirte a listas de bloqueo. En este tutorial instalarás el bouncer de firewall en Ubuntu 24.04, inscribirás el servidor en la consola y aprenderás a gestionar decisiones, listas blancas y un escenario propio. ## Requisitos previos - Un servidor con Ubuntu 24.04 LTS, por ejemplo un VPS de CubePath. - Un usuario no root con privilegios `sudo`. - Acceso alternativo al servidor (consola VNC del panel) por si un bloqueo te deja fuera por SSH. - Una cuenta gratuita en [app.crowdsec.net](https://app.crowdsec.net) para la parte de la consola. - El puerto `8080` libre en `127.0.0.1`: la LAPI escucha ahí por defecto. ## Paso 1: Instalar el motor de CrowdSec Si ya tienes CrowdSec funcionando, salta al paso 2. El método oficial añade el repositorio de CrowdSec con un script. Descárgalo y revísalo antes de ejecutarlo: ```bash curl -fsSL https://install.crowdsec.net -o /tmp/crowdsec-repo.sh less /tmp/crowdsec-repo.sh sudo sh /tmp/crowdsec-repo.sh ``` Instala el motor: ```bash sudo apt install crowdsec ``` Durante la instalación, CrowdSec detecta los servicios presentes (SSH, Nginx...) e instala las colecciones correspondientes. Compruébalo: ```bash sudo systemctl status crowdsec --no-pager sudo cscli collections list ``` ```output COLLECTIONS Name Status Version Local Path crowdsecurity/linux enabled ... /etc/crowdsec/collections/linux.yaml crowdsecurity/sshd enabled ... /etc/crowdsec/collections/sshd.yaml ``` Si instalas Nginx más tarde, añade su colección y recarga: `sudo cscli collections install crowdsecurity/nginx` y `sudo systemctl reload crowdsec`. ## Paso 2: Instalar el bouncer de firewall Sin un bouncer, CrowdSec detecta y decide pero no bloquea nada. El bouncer de firewall es el más eficiente porque descarta el tráfico en el kernel, antes de que llegue a SSH o al servidor web. Ubuntu 24.04 usa nftables, así que instala esa variante: ```bash sudo apt install crowdsec-firewall-bouncer-nftables ``` Al instalarse en el mismo servidor que el motor, el paquete se registra solo en la LAPI y guarda su clave en `/etc/crowdsec/bouncers/crowdsec-firewall-bouncer.yaml`. Comprueba que el servicio está activo y que la LAPI lo reconoce: ```bash sudo systemctl status crowdsec-firewall-bouncer --no-pager sudo cscli bouncers list ``` ```output Name IP Address Valid Last API pull Type Version cs-firewall-bouncer-1727260000 127.0.0.1 true 2026-09-25T10:31:02Z crowdsec-firewall-bouncer v0.0.x ``` Una fecha reciente en `Last API pull` indica que el bouncer está consultando decisiones. El bouncer crea sus propias tablas de nftables (`crowdsec` para IPv4 y `crowdsec6` para IPv6), independientes de UFW, así que ambos conviven sin problemas. ## Paso 3: Probar un bloqueo con una decisión manual Añade una decisión de baneo de 5 minutos para una IP de documentación: ```bash sudo cscli decisions add --ip 203.0.113.50 --duration 5m --reason "prueba de bouncer" sudo cscli decisions list ``` ```output ID Source Scope:Value Reason Action Country AS Events expiration Alert ID 1 cscli Ip:203.0.113.50 prueba de bouncer ban 1 4m58s 1 ``` En pocos segundos el bouncer la aplica. Búscala en nftables: ```bash sudo nft list table ip crowdsec | grep 203.0.113.50 ``` ```output elements = { 203.0.113.50 timeout 4m55s expires 4m40s } ``` Elimina la decisión y confirma que desaparece del firewall: ```bash sudo cscli decisions delete --ip 203.0.113.50 ``` Otras variantes útiles: `--range 198.51.100.0/24` para una red completa y `--duration 168h` para una semana. No bloquees rangos amplios sin revisar antes a quién pertenecen. ## Paso 4: Inscribir el servidor en la consola La consola centraliza las alertas de todos tus motores, permite ver el contexto de cada ataque y suscribirse a listas de bloqueo gestionadas. Entra en la consola, pulsa **Add Security Engine** y copia la clave de inscripción que muestra. En el servidor: ```bash sudo cscli console enroll your_enrollment_key ``` ```output Enrolled to the CrowdSec Console Please accept the new instance on the console page. ``` Vuelve a la consola, acepta la instancia pendiente y reinicia el motor para que empiece a enviar datos: ```bash sudo systemctl restart crowdsec ``` Revisa qué información compartes con la consola: ```bash sudo cscli console status ``` La salida lista opciones como `custom` (alertas de escenarios propios), `manual` (decisiones añadidas con `cscli`), `tainted` (escenarios modificados localmente), `context` y `console_management`. Esta última permite gestionar decisiones y listas de bloqueo desde la web; actívala solo si la vas a usar: ```bash sudo cscli console enable console_management sudo systemctl restart crowdsec ``` Cuando te suscribes a una lista de bloqueo en la consola, sus IPs llegan al motor como decisiones con origen `lists` y el bouncer las aplica igual que las locales: ```bash sudo cscli decisions list --origin lists | head ``` ## Paso 5: Evitar bloqueos a tus propias IPs Si tu oficina, tu bastión o el sistema de monitorización generan tráfico que parece un ataque, te acabarás bloqueando. Una **lista blanca de parser** descarta esos eventos antes de que lleguen a los escenarios. Crea el fichero en la etapa de enriquecimiento (`s02-enrich`): ```bash sudo nano /etc/crowdsec/parsers/s02-enrich/mis-ips-confianza.yaml ``` ```yaml name: local/mis-ips-confianza description: "IPs de administración y monitorización" whitelist: reason: "IP de confianza" ip: - "198.51.100.20" cidr: - "10.0.0.0/8" ``` Sustituye las direcciones por las tuyas y recarga el motor: ```bash sudo systemctl reload crowdsec sudo cscli parsers list | grep mis-ips-confianza ``` ```output local/mis-ips-confianza enabled,local /etc/crowdsec/parsers/s02-enrich/mis-ips-confianza.yaml ``` Comprueba que un intento de SSH desde esa IP quedaría ignorado con `cscli explain`, que pasa una línea por todo el proceso de parseo: ```bash sudo cscli explain --log "Sep 25 11:02:10 web01 sshd[3321]: Invalid user test from 198.51.100.20 port 52144" --type syslog ``` En la salida, la etapa `s02-enrich` debe mostrar tu lista con el evento marcado como **whitelisted**. La lista blanca no elimina decisiones que ya existan: si ya te habías bloqueado, bórrala con `cscli decisions delete --ip`. ## Paso 6: Crear un escenario propio Los escenarios de tipo `leaky` funcionan como un cubo que se llena con cada evento y se vacía a un ritmo fijo: si se desborda, se genera una alerta y una decisión. Este ejemplo detecta a quien hace más de 30 peticiones a `/api/` en ráfaga, con la colección `crowdsecurity/nginx` instalada: ```bash sudo nano /etc/crowdsec/scenarios/api-abuse.yaml ``` ```yaml type: leaky name: local/api-abuse description: "Demasiadas peticiones a /api/ desde la misma IP" filter: "evt.Meta.log_type == 'http_access-log' && evt.Meta.http_path startsWith '/api/'" groupby: evt.Meta.source_ip capacity: 30 leakspeed: "1s" blackhole: 5m labels: service: http behavior: "http:scan" label: "Abuso de la API" remediation: true ``` `capacity: 30` con `leakspeed: "1s"` permite ráfagas de 30 peticiones y un ritmo sostenido de una por segundo. `blackhole` evita repetir la alerta para la misma IP durante 5 minutos y `remediation: true` hace que la alerta genere un baneo. ```bash sudo systemctl reload crowdsec sudo cscli scenarios list | grep api-abuse ``` Ajusta `capacity` y `leakspeed` a tu tráfico real antes de dejarlo en producción: una aplicación de página única legítima puede hacer decenas de llamadas a la API al cargar. ## Paso 7: Consultar decisiones desde tus aplicaciones Cualquier programa puede preguntar a la LAPI si una IP está baneada, igual que hace un bouncer. Crea una clave de bouncer para tu integración y guárdala, porque solo se muestra una vez: ```bash sudo cscli bouncers add mi-integracion ``` ```output API key for 'mi-integracion': your_api_key Please keep this key since you will not be able to retrieve it! ``` Consulta una IP: ```bash curl -s -H "X-Api-Key: your_api_key" "http://127.0.0.1:8080/v1/decisions?ip=203.0.113.50" ``` Si la IP no tiene decisiones, la respuesta es `null`; si está baneada, un array JSON con el tipo (`ban`), el ámbito y la duración restante. Las claves de bouncer solo permiten leer decisiones; para crearlas usa `cscli decisions add`. ## Solución de problemas **El bouncer no aparece en `cscli bouncers list` o `Last API pull` está vacío.** Revisa su log con `sudo journalctl -u crowdsec-firewall-bouncer -n 50`. Si la clave no es válida, crea una nueva con `sudo cscli bouncers add firewall-bouncer`, pégala en `api_key` de `/etc/crowdsec/bouncers/crowdsec-firewall-bouncer.yaml` y reinicia el servicio. **CrowdSec no detecta nada.** Comprueba que lee los logs con `sudo cscli metrics`: en la sección de adquisición, cada fichero debe tener líneas leídas y parseadas. Si un fichero no aparece, añádelo en `/etc/crowdsec/acquis.d/` y recarga. **Te has bloqueado a ti mismo.** Entra por la consola VNC del panel, ejecuta `sudo cscli decisions list` para encontrar tu IP, bórrala con `sudo cscli decisions delete --ip tu_ip` y añádela a la lista blanca del paso 5. **Falso positivo de un escenario.** Localiza la alerta con `sudo cscli alerts list` y examínala con `sudo cscli alerts inspect -d ID`. Si el tráfico es legítimo, añade la IP a la lista blanca o ajusta el escenario. ## Conclusión Tu servidor ya bloquea en el firewall las IPs que CrowdSec detecta, reporta a la consola y protege tus direcciones de administración con una lista blanca. Como siguientes pasos, inscribe el resto de tus servidores en la misma consola para ver los ataques de forma conjunta, suscríbete a alguna lista de bloqueo y añade el bouncer de Nginx o de tu proxy si necesitas respuestas en capa 7, como un captcha.