Configuración de CrowdSec
Ajustes de la conexión a la Local API (LAPI) de CrowdSec y del filtrado de decisiones.
Conexión
Sección titulada «Conexión»crowdsec.api_url Obligatorio
Sección titulada «crowdsec.api_url »Env: CROWDSEC_URL · Por defecto: http://localhost:8080/
La URL de la Local API (LAPI) de CrowdSec. Incluye la barra final.
crowdsec: api_url: "http://localhost:8080/"crowdsec.api_key Obligatorio
Sección titulada «crowdsec.api_key »Env: CROWDSEC_BOUNCER_API_KEY · Por defecto: — (obligatorio)
La API key del bouncer. Genera una con:
sudo cscli bouncers add cs-routeros-bouncercrowdsec.retry_initial_connect Opcional
Sección titulada «crowdsec.retry_initial_connect »Env: CROWDSEC_RETRY_INITIAL_CONNECT · Por defecto: true
Cuando está habilitado, el bouncer reintenta la conexión a la LAPI en el arranque si la conexión inicial falla, cada 10 s, y registra por qué falló cada intento. Útil cuando el bouncer arranca antes de que CrowdSec esté listo. Hasta que la LAPI responde, la primera reconciliación espera y las address-lists del router se dejan como están, así que las entradas de la ejecución anterior siguen bloqueando. Cuando está deshabilitado, una primera conexión fallida hace que el bouncer termine, y al salir retira sus reglas de firewall.
crowdsec.update_frequency Opcional
Sección titulada «crowdsec.update_frequency »Env: CROWDSEC_UPDATE_FREQUENCY · Por defecto: 10s
Con qué frecuencia se sondea la LAPI en busca de decisiones nuevas o expiradas. Usa el formato de duración de Go (p. ej., 10s, 1m, 30s).
crowdsec.reconciliation_interval Opcional
Sección titulada «crowdsec.reconciliation_interval »Env: CROWDSEC_RECONCILIATION_INTERVAL · Por defecto: 15m
Con qué frecuencia se obtiene de la LAPI una instantánea completa de las decisiones activas y se reconcilia con la pertenencia a las address-list de MikroTik. Esto repara la desviación cuando una entrada de address-list se elimina manualmente o expira en el router mientras CrowdSec sigue considerando activa la decisión.
crowdsec.reconciliation_interval / CROWDSEC_RECONCILIATION_INTERVAL usa el formato de duración de Go, como 1m, 15m o 1h.
Establécelo en 0 para deshabilitar la reconciliación periódica. Cualquier valor distinto de cero debe ser de al menos 1m. RouterOS mantiene una entrada de address-list como mucho 35w3d13h13m56s; la entrada de una decisión más larga termina entonces y la vuelve a añadir la siguiente pasada, así que con 0 queda fuera del router el resto de la decisión. Con independencia de ello, el bouncer lee el uptime del router antes de la primera reconciliación y luego cada minuto, y reconcilia en el acto tras un reinicio, que elimina del router todas las entradas dinámicas. Una reconciliación que falla se reintenta hasta que una sale bien, tras un minuto y luego tras el doble de la última espera: como mucho cinco minutos mientras la LAPI no responde, como mucho una hora tras una pasada que falló en el router. Esto vale para toda reconciliación, al arrancar, tras un reinicio y periódica, y una pasada también falla cuando fallan adiciones que hizo. Un ban en vivo cuya adición puede no haber llegado al router, como mientras el router no responde, va seguido de una reconciliación un minuto después.
crowdsec: reconciliation_interval: "15m"crowdsec.lapi_metrics_interval Opcional
Sección titulada «crowdsec.lapi_metrics_interval »Env: CROWDSEC_LAPI_METRICS_INTERVAL · Por defecto: 15m
Con qué frecuencia se envían métricas de uso al endpoint /v1/usage-metrics de la LAPI de CrowdSec. Establécelo en 0 para deshabilitarlo.
Cada envío incluye:
- Decisiones activas — por origen (p. ej.,
crowdsec,cscli,CAPI) y por tipo de IP (ipv4,ipv6) - Tráfico descartado — bytes y paquetes bloqueados por las reglas del firewall de MikroTik (delta desde el último envío)
- Tráfico procesado — bytes y paquetes evaluados por todas las cadenas del bouncer (delta desde el último envío)
- Metadatos del bouncer — tipo, versión, información del sistema operativo, tiempo de actividad
Estos datos aparecen en la CrowdSec Console y ayudan a hacer seguimiento de la eficacia del bouncer.
crowdsec: lapi_metrics_interval: "15m"Filtrado de decisiones
Sección titulada «Filtrado de decisiones»crowdsec.origins Opcional
Sección titulada «crowdsec.origins »Env: CROWDSEC_ORIGINS · Por defecto: [] (todos los orígenes)
Filtra las decisiones por su origen. Vacío significa que se procesan todas las decisiones.
| Origen | Descripción |
|---|---|
crowdsec | Decisiones del motor de detección de CrowdSec |
cscli | Decisiones manuales mediante cscli decisions add |
CAPI | Blocklists comunitarias de la Central API de CrowdSec |
lists | Suscripciones a blocklists de terceros |
# Solo decisiones locales (sin blocklists comunitarias)crowdsec: origins: ["crowdsec", "cscli"]Cuando se define como variable de entorno, CROWDSEC_ORIGINS se separa con espacios:
CROWDSEC_ORIGINS="crowdsec cscli"Dejar origins vacío acepta todos los orígenes, incluidos CAPI y lists. La LAPI compara estos valores de forma exacta: no expande comodines, así que un patrón como lists:* no coincide con nada y no devuelve ninguna decisión, sin avisar. Usa el literal lists, que es el origen que CrowdSec asigna a toda suscripción de blocklist, se llame como se llame la lista. Consulta Blocklists de CAPI para las recomendaciones de escala y dimensionamiento del router.
crowdsec.scopes Opcional
Sección titulada «crowdsec.scopes »Env: CROWDSEC_SCOPES · Por defecto: ["ip", "range"]
Ámbitos de decisión a procesar. Valores admitidos: ip, range.
crowdsec.supported_decisions_types Opcional
Sección titulada «crowdsec.supported_decisions_types »Env: CROWDSEC_DECISIONS_TYPES · Por defecto: ["ban"]
Tipos de decisión que aplica este bouncer. Todos los tipos listados se tratan igual: la dirección va a la address-list y las reglas de firewall gestionadas actúan sobre ella.
El tipo de decisión de CrowdSec es un string libre —solo ban está definido como constante, y cscli decisions add --type loquesea se acepta— así que un escenario propio que emita un tipo personalizado puede aplicarse nombrándolo aquí.
crowdsec.scenarios_containing Opcional
Sección titulada «crowdsec.scenarios_containing »Env: CROWDSEC_SCENARIOS_CONTAINING · Por defecto: [] (sin filtro)
Solo se procesan las decisiones de escenarios cuyo nombre contenga una de estas subcadenas literales. Vacío significa que no hay filtrado de inclusión.
crowdsec: scenarios_containing: ["ssh", "http"]Por ejemplo, "ssh" coincide con crowdsecurity/ssh-bf y con cualquier otro nombre de escenario que contenga ssh.
crowdsec.scenarios_not_containing Opcional
Sección titulada «crowdsec.scenarios_not_containing »Env: CROWDSEC_SCENARIOS_NOT_CONTAINING · Por defecto: [] (sin filtro)
Excluye las decisiones de escenarios cuyo nombre contenga una de estas subcadenas literales.
crowdsec: scenarios_not_containing: ["test", "honeypot"]Usa los filtros de inclusión y exclusión juntos cuando quieras un subconjunto reducido de decisiones. Si no aparece ninguna decisión, comprueba primero que las subcadenas coinciden con los nombres de escenario que muestra cscli decisions list -o json.
Autenticación TLS
Sección titulada «Autenticación TLS»Para la autenticación TLS mutua con la LAPI:
crowdsec.cert_path Opcional
Sección titulada «crowdsec.cert_path »Env: CROWDSEC_CERT_PATH · Por defecto: —
Ruta al certificado TLS de cliente (formato PEM).
crowdsec.key_path Opcional
Sección titulada «crowdsec.key_path »Env: CROWDSEC_KEY_PATH · Por defecto: —
Ruta a la clave TLS de cliente (formato PEM).
crowdsec.ca_cert_path Opcional
Sección titulada «crowdsec.ca_cert_path »Env: CROWDSEC_CA_CERT_PATH · Por defecto: —
Ruta al certificado de la CA (formato PEM) para verificar el certificado del servidor LAPI.
crowdsec.insecure_skip_verify Opcional
Sección titulada «crowdsec.insecure_skip_verify »Env: CROWDSEC_INSECURE_SKIP_VERIFY · Por defecto: false
Omite la verificación del certificado TLS en las conexiones a la LAPI.