RousselTMLEARNING

Proxy & réseau

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 BasicAuth et ForwardAuth, en-têtes de sécurité, limitation de débit, liste d'adresses autorisées, redirections et chaînes de middlewares.

1. Le rôle des middlewares #

Entre le routeur et le service.

Principe #

Un routeur choisit le service selon la requête (hôte, chemin, en-têtes). Avant d'atteindre le service, la requête peut traverser des middlewares qui l'authentifient, la filtrent ou la transforment. Ils se déclarent une fois et se réutilisent sur plusieurs routeurs.

Chaîne de middlewares Traefik
L'ordre compte : limiter le débit avant d'authentifier protège aussi le service d'authentification.

2. L'authentification #

BasicAuth pour un outil interne, ForwardAuth pour un vrai SSO.

BasicAuth avec Docker #

# Générer l'empreinte du mot de passe (les $ sont doublés dans un fichier Compose)
htpasswd -nbB admin 'MotDePasse-Solide' | sed -e 's/\$/\$\$/g'
services:
  whoami:
    image: traefik/whoami
    labels:
      - traefik.http.routers.whoami.rule=Host(`whoami.exemple.fr`)
      - traefik.http.routers.whoami.middlewares=auth@docker
      - traefik.http.middlewares.auth.basicauth.users=admin:$$2y$$05$$…

ForwardAuth : déléguer à un service d'authentification #

Avec ForwardAuth, Traefik envoie chaque requête à un service externe (Authelia, oauth2-proxy, Authentik). Une réponse 2xx autorise la requête, toute autre réponse est renvoyée au client (souvent une redirection vers la page de connexion).

http:
  middlewares:
    sso:
      forwardAuth:
        address: "http://authelia:9091/api/authz/forward-auth"
        trustForwardHeader: true
        authResponseHeaders: ["Remote-User", "Remote-Groups", "Remote-Email"]
Erreur Courante : BasicAuth transmet le mot de passe à chaque requête : ne l'utilisez qu'en HTTPS, et préférez un SSO avec MFA pour les outils sensibles.

3. Les autres middlewares utiles #

Filtrer, protéger, transformer.

Sélection #

MiddlewareRôleExemple
headersEn-têtes de sécurité et CORSstsSeconds: 31536000, contentTypeNosniff: true
rateLimitLimiter le débit par clientaverage: 100, burst: 50
ipAllowListN'autoriser que certaines adressessourceRange: ["10.0.0.0/8"]
redirectSchemeRediriger HTTP vers HTTPSscheme: https, permanent: true
stripPrefixRetirer un préfixe de chemin/api → /
retry, circuitBreakerRésilience vers le backendattempts: 3, expression: NetworkErrorRatio() > 0.3
compressCompression gzip, brotliréponses texte
chainRegrouper plusieurs middlewaresune chaîne « sécurité » réutilisable

Une chaîne réutilisable #

http:
  middlewares:
    securite:
      chain:
        middlewares: [limite, entetes]
    limite:
      rateLimit: { average: 100, burst: 50 }
    entetes:
      headers:
        stsSeconds: 31536000
        stsIncludeSubdomains: true
        contentTypeNosniff: true
        frameDeny: true
        referrerPolicy: strict-origin-when-cross-origin
Migration v2 → v3 : En Traefik v3, ipWhiteList est devenu ipAllowList. Vérifiez les noms lors d'une migration depuis la v2.

Articles liés

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…

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 ave…

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 !