Настройка Crowdsec в связке с Traefik

Для работы с Traefik можно использовать вариант настройки как через внешний bouncer контейнер так и с использованием плагина traefik. Вариант с плагином является более предпочтительным так как этот вариант регулярно обновляется и развивается.

Плагин: Plugin

Для настройки необходимо дополнить конфигурацию блоком:

---
listen_addr: 0.0.0.0:7422
appsec_config: crowdsecurity/virtual-patching
name: Traefik
source: appsec
labels:
  type: appsec

Пример итоговой конфигурации: Crowdsek acquis

А так же установить плагин в traefik путем добавления в статическую конфигурацию запись:

experimental:
  plugins:
    crowdsec-bouncer-traefik-plugin:
      moduleName: "github.com/maxlerebourg/crowdsec-bouncer-traefik-plugin"
      version: "v1.3.4-beta1"

version - необходимо изменять руками, нет возможности использовать latest.

Для подключения к Traefik bouncer необходимо сгенерировать LAPI_KEY командой:

docker exec crowdsec cscli bouncers add bouncer-traefik

И добавить промежуточную обработку:

Конфигурация traefik для crowdsek

Позволяет использовать crowdsek вместе с Traefik. Необходимо создать отдельный файл в папке traefik/dynamic

http:
    middlewares:
        crowdsec:
            plugin:
                crowdsec-bouncer-traefik-plugin:
                    enabled: true
                    logLevel: INFO
                    updateIntervalSeconds: 15
                    updateMaxFailure: 0
                    defaultDecisionSeconds: 15
                    httpTimeoutSeconds: 10
                    crowdsecMode: stream
                    crowdsecAppsecEnabled: true
                    crowdsecAppsecHost: crowdsec:7422
                    crowdsecAppsecFailureBlock: true
                    crowdsecAppsecUnreachableBlock: true
                    crowdsecLapiKey: <LAPI_KEY>     
                    crowdsecLapiHost: crowdsec:8080
                    crowdsecLapiScheme: http
                    forwardedHeadersTrustedIPs:
                      - 172.21.0.0/16                                                            # Reverse Proxy IP address 
                    clientTrustedIPs:
                      - 192.168.0.0/24

А так же добавить обращение к middlewares в статическую конфигурацию

...
entryPoints:
  http:
    address: ":80"
    http:
      middlewares:
        - crowdsec@file
      redirections:
        entryPoint:
          to: https
          scheme: https
  https:
    address: ":443"
    http:
      middlewares:
        - crowdsec@file
...