Ir al contenido

Visión general de la configuración

cs-routeros-bouncer se puede configurar mediante un archivo YAML y/o variables de entorno. Las variables de entorno tienen prioridad sobre los valores del archivo de configuración.

Cuando ejecutas el binario directamente, pasa la ruta de configuración con -c, salvo que todos los ajustes obligatorios se proporcionen mediante variables de entorno:

Ventana de terminal
cs-routeros-bouncer -c /path/to/config.yaml

Los asistentes de despliegue eligen sus propias rutas:

Método de despliegueRuta de configuración usada
Servicio systemd setup/etc/cs-routeros-bouncer/cs-routeros-bouncer.yaml
Imagen DockerVariables de entorno por defecto; /etc/cs-routeros-bouncer/config.yaml se carga automáticamente si está montado
Ejecución directa del binarioSin archivo implícito; usa -c

Los valores de cadena YAML pueden contener marcadores explícitos ${VAR}. Solo se expanden los marcadores con llaves; los caracteres $ literales de los secretos se conservan.

En el repositorio se incluye una referencia completa comentada en config/cs-routeros-bouncer.yaml.

Todas las opciones de un vistazo. Consulta las páginas dedicadas para las descripciones detalladas.

Los ajustes esenciales para poner en marcha el bouncer. La mayoría de los despliegues solo necesitan estos.

Clave de configuraciónVariable de entornoValor por defectoDescripción
crowdsec.api_urlCROWDSEC_URLhttp://localhost:8080/URL de la LAPI de CrowdSec
crowdsec.api_keyCROWDSEC_BOUNCER_API_KEY(obligatorio)API key del bouncer
mikrotik.addressMIKROTIK_HOST192.168.0.1:8728Dirección de la API de RouterOS (host:port)
mikrotik.usernameMIKROTIK_USERcrowdsecUsuario de la API
mikrotik.passwordMIKROTIK_PASS(obligatorio)Contraseña de la API
firewall.ipv4.enabledFIREWALL_IPV4_ENABLEDtrueHabilitar el bloqueo IPv4
firewall.ipv6.enabledFIREWALL_IPV6_ENABLEDtrueHabilitar el bloqueo IPv6
firewall.filter.enabledFIREWALL_FILTER_ENABLEDtrueCrear reglas de firewall filter
firewall.raw.enabledFIREWALL_RAW_ENABLEDtrueCrear reglas raw/prerouting
firewall.deny_actionFIREWALL_DENY_ACTIONdropAcción: drop o reject
logging.levelLOG_LEVELinfoNivel de log: debug, info, warn, error

Opciones de ajuste fino para el filtrado de decisiones, TLS, rendimiento, personalización del firewall y observabilidad. Los valores por defecto (sondeo de 10 s, reconciliación de 15 m, pool_size: 4) están dimensionados para un único router con hasta unas 30.000 decisiones activas; ajústalos solo por encima de esa escala o en hardware modesto.

Clave de configuraciónVariable de entornoValor por defectoDescripción
crowdsec.update_frequencyCROWDSEC_UPDATE_FREQUENCY10sIntervalo de sondeo
crowdsec.reconciliation_intervalCROWDSEC_RECONCILIATION_INTERVAL15mReconciliación periódica de address-list (0 = deshabilitada, mínimo 1m)
crowdsec.lapi_metrics_intervalCROWDSEC_LAPI_METRICS_INTERVAL15mIntervalo de envío de métricas de uso (0 = deshabilitado)
crowdsec.originsCROWDSEC_ORIGINS[] (todos)Filtrar por origen
crowdsec.scopesCROWDSEC_SCOPES["ip","range"]Ámbitos de decisión
crowdsec.supported_decisions_typesCROWDSEC_DECISIONS_TYPES["ban"]Tipos de decisión (solo ban está implementado)
crowdsec.scenarios_containingCROWDSEC_SCENARIOS_CONTAINING[]Incluir solo los escenarios coincidentes
crowdsec.scenarios_not_containingCROWDSEC_SCENARIOS_NOT_CONTAINING[]Excluir los escenarios coincidentes
crowdsec.retry_initial_connectCROWDSEC_RETRY_INITIAL_CONNECTtrueReintentar en el arranque
crowdsec.insecure_skip_verifyCROWDSEC_INSECURE_SKIP_VERIFYfalseOmitir la verificación TLS
crowdsec.cert_pathCROWDSEC_CERT_PATHRuta del certificado de cliente
crowdsec.key_pathCROWDSEC_KEY_PATHRuta de la clave de cliente
crowdsec.ca_cert_pathCROWDSEC_CA_CERT_PATHRuta del certificado de la CA

CROWDSEC_ORIGINS se separa con espacios cuando se define como variable de entorno, por ejemplo CROWDSEC_ORIGINS="crowdsec cscli".

Clave de configuraciónVariable de entornoValor por defectoDescripción
mikrotik.tlsMIKROTIK_TLSfalseUsar TLS
mikrotik.tls_insecureMIKROTIK_TLS_INSECUREfalseOmitir la verificación TLS
mikrotik.connection_timeoutMIKROTIK_CONN_TIMEOUT10sTiempo de espera de conexión
mikrotik.command_timeoutMIKROTIK_CMD_TIMEOUT30sTiempo de espera de comando
mikrotik.pool_sizeMIKROTIK_POOL_SIZE4Conexiones API en paralelo (1–20)
Clave de configuraciónVariable de entornoValor por defectoDescripción
firewall.ipv4.address_listFIREWALL_IPV4_ADDRESS_LISTcrowdsec-bannedNombre de la lista IPv4
firewall.ipv6.address_listFIREWALL_IPV6_ADDRESS_LISTcrowdsec6-bannedNombre de la lista IPv6
firewall.filter.chainsFIREWALL_FILTER_CHAINS["input"]Cadenas filter; en los valores de entorno separados por comas se recorta el espacio en blanco alrededor de cada entrada
firewall.raw.chainsFIREWALL_RAW_CHAINS["prerouting"]Cadenas raw; en los valores de entorno separados por comas se recorta el espacio en blanco alrededor de cada entrada
firewall.rule_placementFIREWALL_RULE_PLACEMENTtopForma abreviada de cadena simple para la colocación global
firewall.rule_placement.strategyFIREWALL_RULE_PLACEMENT_STRATEGYtopEstrategia en forma de objeto: top, bottom, position, before_comment o after_comment
firewall.rule_placement.commentFIREWALL_RULE_PLACEMENT_COMMENTComentario ancla para la colocación por comentario
firewall.rule_placement.comment_matchFIREWALL_RULE_PLACEMENT_COMMENT_MATCHexactModo de coincidencia del comentario: exact o contains
firewall.rule_placement.positionFIREWALL_RULE_PLACEMENT_POSITIONPosición print de RouterOS (base cero) obligatoria cuando la estrategia es position
firewall.rule_placement.fallbackFIREWALL_RULE_PLACEMENT_FALLBACKtopAlternativa para la colocación por comentario: top o bottom
firewall.rule_placement.filterSolo YAMLSobrescritura para la tabla filter; hereda los campos no especificados de la colocación global
firewall.rule_placement.rawSolo YAMLSobrescritura para la tabla raw; hereda los campos no especificados de la colocación global
firewall.ipv4.rule_placementSolo YAMLSobrescritura de colocación solo IPv4; hereda los campos no especificados de la colocación global
firewall.ipv4.rule_placement.filterSolo YAMLSobrescritura IPv4 para la tabla filter; hereda de la colocación global y de la IPv4
firewall.ipv4.rule_placement.rawSolo YAMLSobrescritura IPv4 para la tabla raw; hereda de la colocación global y de la IPv4
firewall.ipv6.rule_placementSolo YAMLSobrescritura de colocación solo IPv6; hereda los campos no especificados de la colocación global
firewall.ipv6.rule_placement.filterSolo YAMLSobrescritura IPv6 para la tabla filter; hereda de la colocación global y de la IPv6
firewall.ipv6.rule_placement.rawSolo YAMLSobrescritura IPv6 para la tabla raw; hereda de la colocación global y de la IPv6
firewall.comment_prefixFIREWALL_COMMENT_PREFIXcrowdsec-bouncerPrefijo de comentario
firewall.logFIREWALL_LOGfalseHabilitar el registro de reglas
firewall.log_prefixFIREWALL_LOG_PREFIXcrowdsec-bouncerPrefijo de log global
firewall.reject_withFIREWALL_REJECT_WITHTipo de rechazo cuando deny_action=reject: icmp-network-unreachable, icmp-host-unreachable, icmp-port-unreachable, icmp-protocol-unreachable, icmp-network-prohibited, icmp-host-prohibited, icmp-admin-prohibited, tcp-reset
firewall.filter.log_prefixFIREWALL_FILTER_LOG_PREFIXSobrescribir el prefijo de log para las reglas filter
firewall.filter.connection_stateFIREWALL_FILTER_CONNECTION_STATEEstados separados por comas: new, established, related, invalid, untracked; se recorta el espacio en blanco alrededor de las entradas; solo minúsculas, sin negación
firewall.raw.log_prefixFIREWALL_RAW_LOG_PREFIXSobrescribir el prefijo de log para las reglas raw
firewall.block_input.interfaceFIREWALL_BLOCK_INPUT_INTERFACERestringir las reglas input/raw a una interfaz (vacío = todas)
firewall.block_input.interface_listFIREWALL_BLOCK_INPUT_INTERFACE_LISTRestringir las reglas input/raw a una lista de interfaces (vacío = todas)
firewall.block_input.whitelistFIREWALL_BLOCK_INPUT_WHITELISTAddress-list para la lista blanca de entrada (accept antes de drop)
firewall.block_output.enabledFIREWALL_BLOCK_OUTPUTfalseBloquear el tráfico saliente
firewall.block_output.interfaceFIREWALL_BLOCK_OUTPUT_INTERFACEInterfaz WAN
firewall.block_output.interface_listFIREWALL_BLOCK_OUTPUT_INTERFACE_LISTLista de interfaces WAN
firewall.block_output.log_prefixFIREWALL_BLOCK_OUTPUT_LOG_PREFIXSobrescribir el prefijo de log para las reglas de salida
firewall.block_output.passthrough_v4FIREWALL_BLOCK_OUTPUT_PASSTHROUGH_V4Cliente IPv4 que omite el bloqueo de salida
firewall.block_output.passthrough_v4_listFIREWALL_BLOCK_OUTPUT_PASSTHROUGH_V4_LISTLista IPv4 que omite el bloqueo de salida
firewall.block_output.passthrough_v6FIREWALL_BLOCK_OUTPUT_PASSTHROUGH_V6Cliente IPv6 que omite el bloqueo de salida
firewall.block_output.passthrough_v6_listFIREWALL_BLOCK_OUTPUT_PASSTHROUGH_V6_LISTLista IPv6 que omite el bloqueo de salida

Los alias retrocompatibles como FIREWALL_INPUT_* y FIREWALL_OUTPUT_* se siguen aceptando para despliegues antiguos. Prefiere los nombres explícitos FIREWALL_BLOCK_INPUT_* y FIREWALL_BLOCK_OUTPUT_* en las configuraciones nuevas.

Clave de configuraciónVariable de entornoValor por defectoDescripción
logging.formatLOG_FORMATtextFormato de log: text o json
logging.fileLOG_FILERuta del archivo de log (vacío = solo stdout)
metrics.enabledMETRICS_ENABLEDfalseHabilitar el endpoint /metrics de Prometheus
metrics.listen_addrMETRICS_ADDR0.0.0.0Dirección de escucha
metrics.listen_portMETRICS_PORT2112Puerto de escucha
metrics.routeros_poll_intervalMETRICS_ROUTEROS_POLL_INTERVAL30sIntervalo de sondeo de métricas del sistema RouterOS (0 para deshabilitar)
metrics.track_processedMETRICS_TRACK_PROCESSEDtrueCrear reglas passthrough de conteo para las métricas de tráfico procesado