Ir al contenido

Procesamiento de decisiones

Cómo procesa el bouncer las decisiones entrantes de CrowdSec.

  1. Recibir la decisión de la LAPI

    El bouncer obtiene las decisiones nuevas y expiradas de la Local API de CrowdSec.

  2. Comprobar el ámbito

    ÁmbitoAcciónEjemplo
    IpSe añade directamente a la address-list192.168.1.1
    RangeSe añade como CIDR a la address-list10.0.0.0/24
    OtroSe registra como advertencia y se omite

    Ip y Range son los valores de ámbito tal como CrowdSec los envía en las decisiones; el filtro de configuración crowdsec.scopes usa las formas en minúscula ip y range.

  3. Filtrar por origen

    Si origins está configurado, solo pasan las decisiones de los orígenes permitidos. Las decisiones que no coinciden se descartan.

  4. Filtrar por escenario

    Si scenarios_containing o scenarios_not_containing están configurados, solo se procesan las decisiones cuyo nombre de escenario supera esos filtros de subcadena.

  5. Aplicar la acción

    • Ban → Añadir la IP/rango a la address-list de MikroTik
    • Unban → Eliminar la IP/rango de la address-list

Cuando origins está configurado, el bouncer solo procesa las decisiones de los orígenes especificados:

OrigenFuente
crowdsecDetecciones del motor local de CrowdSec
cscliBans manuales mediante cscli decisions add
CAPIBlocklists comunitarias de la Central API de CrowdSec
lists:*Suscripciones a blocklists de terceros
crowdsec:
origins: ["crowdsec", "cscli"] # Ignorar las listas comunitarias de CAPI

Cuando origins está vacío (valor por defecto), se aceptan todos los orígenes.

Los filtros de escenario usan los campos scenarios_containing y scenarios_not_containing de CrowdSec. Buscan subcadenas literales en el nombre del escenario, como ssh, http o crowdsecurity/ssh-bf.

crowdsec:
scenarios_containing:
- "ssh"
- "http"
scenarios_not_containing:
- "test"

Usa scenarios_containing para quedarte solo con los escenarios que coinciden. Usa scenarios_not_containing para excluir escenarios ruidosos o no deseados cuando el bouncer procesa las decisiones recibidas de la LAPI de CrowdSec.

Cuando la misma IP aparece en varias decisiones (por ejemplo, con distintos escenarios u orígenes), el bouncer lo gestiona de forma eficiente:

  1. Durante los bans: consulta primero la caché en memoria. Si ya se sabe que la dirección está presente, la llamada a la API de RouterOS se omite.
  2. Durante los unbans: consulta primero la caché en memoria y solo elimina de MikroTik si la IP está realmente presente
  3. Al arrancar y en la reconciliación periódica: el recolector de decisiones deduplica las IPs antes de la reconciliación
  4. Tras fallos de caché: si RouterOS aun así responde con already have such entry, el bouncer lo trata como un conflicto a nivel de dispositivo, mantiene la sesión de API abierta, localiza la entrada existente, actualiza su timeout/comentario y registra la dirección en la caché. Esta ruta de escritura solo ocurre cuando la dirección faltaba en la caché local.