Ejemplos
Ejemplos de configuración completos para escenarios de despliegue habituales.
La configuración más simple: bloquea tráfico IPv4 usando solo reglas filter.
crowdsec: api_url: "http://localhost:8080/" api_key: "your-key"
mikrotik: address: "192.168.0.1:8728" username: "crowdsec" password: "your-password"
firewall: ipv6: enabled: false raw: enabled: falseProtección máxima con todas las funciones activadas. Las reglas input se restringen al tráfico WAN.
crowdsec: api_url: "http://localhost:8080/" api_key: "your-key"
mikrotik: address: "192.168.0.1:8729" username: "crowdsec" password: "your-password" tls: true
firewall: ipv4: enabled: true ipv6: enabled: true filter: enabled: true chains: ["input"] raw: enabled: true chains: ["prerouting"] deny_action: "drop" rule_placement: "top" block_input: interface_list: "WAN" block_output: enabled: true interface_list: "WAN"
metrics: enabled: true listen_port: 2112 track_processed: true
logging: level: "info"Todas las funciones activadas con personalización avanzada de reglas de firewall: acción reject, filtrado por connection-state, prefijos de log, whitelist de entrada y passthrough de salida.
crowdsec: api_url: "http://localhost:8080/" api_key: "your-key"
mikrotik: address: "192.168.0.1:8729" username: "crowdsec" password: "your-password" tls: true
firewall: ipv4: enabled: true ipv6: enabled: true filter: enabled: true chains: ["input"] connection_state: "new" log_prefix: "CS-FILTER" raw: enabled: true chains: ["prerouting"] log_prefix: "CS-RAW" deny_action: "reject" reject_with: "icmp-host-prohibited" rule_placement: "top" log: true log_prefix: "CS" block_input: interface_list: "WAN" whitelist: "crowdsec-whitelist" block_output: enabled: true interface_list: "WAN" log_prefix: "CS-OUT" passthrough_v4: "10.0.0.100"
metrics: enabled: true listen_port: 2112
logging: level: "info"Configuración equilibrada para listas locales grandes o uso parcial de CAPI en hardware RouterOS con capacidad suficiente.
crowdsec: api_url: "http://localhost:8080/" api_key: "your-key" origins: ["crowdsec", "cscli"] reconciliation_interval: "30m"
mikrotik: address: "192.168.0.1:8729" username: "crowdsec" password: "your-password" tls: true command_timeout: "60s" pool_size: 6
metrics: enabled: true routeros_poll_interval: "30s" track_processed: trueUsa pool_size: 1 o 2 en routers pequeños. Consulta Ajuste de rendimiento para las recomendaciones de dimensionado.
Acepta decisiones de CAPI pero mantiene un filtrado de escenarios estrecho mientras mides el impacto en el router.
crowdsec: api_url: "http://localhost:8080/" api_key: "your-key" origins: ["crowdsec", "cscli", "CAPI"] scenarios_containing: ["ssh", "http"] scenarios_not_containing: ["test"]
mikrotik: address: "192.168.0.1:8729" username: "crowdsec" password: "your-password" tls: true command_timeout: "60s" pool_size: 6
metrics: enabled: true track_processed: trueEmpieza con el modo solo local en routers pequeños y activa CAPI después de comprobar el tiempo de reconciliación y la CPU. Consulta Listas de bloqueo CAPI.
Coloca las reglas filter gestionadas por el bouncer después de una regla existente del router, manteniendo las reglas raw cerca de la parte superior:
firewall: filter: enabled: true chains: ["input"] raw: enabled: true chains: ["prerouting"] rule_placement: strategy: "top" filter: strategy: "after_comment" comment: "defconf: drop invalid" comment_match: "exact" fallback: "top" raw: strategy: "position" position: 2Usa before_comment cuando el bloque del bouncer deba mantenerse por delante de una regla de descarte conocida:
firewall: rule_placement: strategy: "before_comment" comment: "PortScanners: Filter Drop Input" comment_match: "exact" fallback: "bottom"La misma estrategia global puede configurarse con variables de entorno. Los overrides específicos por tabla filter y raw, así como la colocación específica para IPv4/IPv6, requieren YAML.
FIREWALL_RULE_PLACEMENT="after_comment"FIREWALL_RULE_PLACEMENT_COMMENT="drop invalid"FIREWALL_RULE_PLACEMENT_COMMENT_MATCH="contains"FIREWALL_RULE_PLACEMENT_FALLBACK="top"Divide la colocación por familia de direcciones cuando las reglas IPv4 e IPv6 necesiten ubicaciones distintas. Los overrides por protocolo heredan primero de la colocación global y después aplican los overrides locales del protocolo para filter o raw.
firewall: rule_placement: strategy: "top" ipv4: rule_placement: strategy: "before_comment" comment: "IPv4 production anchor" fallback: "bottom" ipv6: rule_placement: strategy: "bottom" raw: strategy: "position" position: 4Sincroniza únicamente decisiones generadas localmente (de tu motor CrowdSec y baneos manuales con cscli). Sin listas de bloqueo comunitarias de CAPI.
crowdsec: api_url: "http://localhost:8080/" api_key: "your-key" origins: ["crowdsec", "cscli"]
mikrotik: address: "192.168.0.1:8728" username: "crowdsec" password: "your-password"Toda la configuración mediante variables de entorno — sin necesidad de archivo de configuración.
services: cs-routeros-bouncer: image: ghcr.io/jmrplens/cs-routeros-bouncer:latest container_name: cs-routeros-bouncer restart: unless-stopped ports: - "2112:2112" environment: # CrowdSec CROWDSEC_URL: "http://crowdsec:8080/" CROWDSEC_BOUNCER_API_KEY: "your-bouncer-api-key" CROWDSEC_UPDATE_FREQUENCY: "10s" CROWDSEC_ORIGINS: "crowdsec cscli"
# MikroTik MIKROTIK_HOST: "192.168.0.1:8728" MIKROTIK_USER: "crowdsec" MIKROTIK_PASS: "your-password"
# Firewall FIREWALL_IPV4_ENABLED: "true" FIREWALL_IPV6_ENABLED: "true" FIREWALL_DENY_ACTION: "drop" FIREWALL_RULE_PLACEMENT: "top" # Ejemplo avanzado de colocación global: # FIREWALL_RULE_PLACEMENT: "after_comment" # FIREWALL_RULE_PLACEMENT_COMMENT: "drop invalid" # FIREWALL_RULE_PLACEMENT_COMMENT_MATCH: "contains" # FIREWALL_RULE_PLACEMENT_FALLBACK: "top"
# Registro LOG_LEVEL: "info" LOG_FORMAT: "json"
# Métricas METRICS_ENABLED: "true" METRICS_PORT: "2112"Conexión segura con el registro de reglas activado.
crowdsec: api_url: "https://crowdsec.example.com:8080/" api_key: "your-key" cert_path: "/etc/cs-routeros-bouncer/tls/cert.pem" key_path: "/etc/cs-routeros-bouncer/tls/key.pem" ca_cert_path: "/etc/cs-routeros-bouncer/tls/ca.pem"
mikrotik: address: "192.168.0.1:8729" username: "crowdsec" password: "your-password" tls: true
firewall: log: true log_prefix: "crowdsec-bouncer" deny_action: "drop"
logging: level: "info" format: "json" file: "/var/log/cs-routeros-bouncer.log"
metrics: enabled: true