RousselTMLEARNING

Proxy & réseau

Les plugins Traefik : l'exemple de CrowdSec pour bloquer les attaques

Étendre Traefik avec des plugins (catalogue officiel, interpréteur Yaegi), puis protéger ses applications avec CrowdSec : détection des comportements malveillants, décisions partagées et plugin de blocage (bouncer).

1. Les plugins Traefik #

Ajouter des middlewares et des providers.

Fonctionnement #

Les plugins Traefik sont écrits en Go et exécutés par l'interpréteur Yaegi intégré : pas besoin de recompiler Traefik. Ils sont publiés dans le Plugin Catalog et déclarés dans la configuration statique, puis utilisés comme des middlewares.

# configuration statique
experimental:
  plugins:
    crowdsec:
      moduleName: github.com/maxlerebourg/crowdsec-bouncer-traefik-plugin
      version: v1.3.5        # fixez une version testée
Erreur Courante : Un plugin s'exécute dans le processus Traefik : choisissez des plugins maintenus, fixez leur version et testez-les avant la production.

2. CrowdSec #

Une détection collaborative.

Architecture #

Traefik et CrowdSec
Le blocage se fait dans Traefik, avant que la requête n'atteigne l'application.
  1. Traefik écrit ses access logs dans un fichier partagé.
  2. L'agent CrowdSec les analyse avec des scénarios (force brute, scans, exploitation de vulnérabilités connues) et envoie des alertes.
  3. L'API locale crée des décisions (bannir une IP pendant 4 h) et reçoit aussi les listes partagées par la communauté.
  4. Le plugin bouncer interroge l'API locale et répond 403 aux IP bannies.

3. Mise en place avec Docker Compose #

Les éléments essentiels.

Configuration #

services:
  crowdsec:
    image: crowdsecurity/crowdsec
    environment:
      COLLECTIONS: "crowdsecurity/traefik crowdsecurity/http-cve"
    volumes:
      - ./acquis.yaml:/etc/crowdsec/acquis.yaml:ro
      - traefik-logs:/var/log/traefik:ro
  traefik:
    image: traefik:v3
    command:
      - --accesslog.filepath=/var/log/traefik/access.log
      - --experimental.plugins.crowdsec.modulename=github.com/maxlerebourg/crowdsec-bouncer-traefik-plugin
      - --experimental.plugins.crowdsec.version=v1.3.5
    volumes: [traefik-logs:/var/log/traefik]
# middleware dynamique : crowdsecLapiKey = clé créée par « cscli bouncers add traefik »
docker compose exec crowdsec cscli bouncers add traefik   # clé pour le plugin
docker compose exec crowdsec cscli metrics                 # lignes lues, scénarios déclenchés
docker compose exec crowdsec cscli decisions list          # IP bloquées
docker compose exec crowdsec cscli decisions add --ip 203.0.113.7 --duration 1h   # test
Bonne Pratique : Ajoutez vos propres adresses (supervision, bureaux) dans une liste blanche CrowdSec pour ne jamais vous bloquer vous-même.

Articles liés

Traefik : sécuriser et transformer les requêtes avec les middlewares (BasicAuth, ForwardAuth…)

Les middlewares Traefik modifient les requêtes et réponses entre le routeur et le service : authentification …

Traefik : les providers (Docker, Kubernetes, Nomad, Consul, fichiers, clés-valeurs)

Les providers alimentent la configuration dynamique de Traefik : découverte des services Docker, Swarm, Kuber…

Traefik comme Ingress Controller pour Kubernetes (Helm, IngressRoute, Gateway API)

Installer Traefik dans Kubernetes avec Helm et publier des applications avec Ingress, les CRD IngressRoute et…

Pour aller plus loin

Soutenir

♥ SOUTENIR

Soutenez RousselTM Learning

Les formations, articles, TP et attestations restent gratuits et sans publicité intrusive. Une contribution libre, du montant de votre choix, finance l’hébergement, les environnements de TP et l’écriture de nouveaux contenus.

Contribuer avec PayPal Montant libre · carte bancaire ou compte PayPalEn savoir plus
QR code PayPal
Ou scannez ce QR code avec votre téléphone

Merci, chaque contribution compte !