Tutoriel Traefik et CrowdSec : Bloquer les attaques Web

Tutoriel Traefik et CrowdSec : Bloquer les attaques Web

Dans le paysage actuel des menaces en ligne, la sécurité des applications web est une priorité absolue. Un reverse proxy comme Traefik est une première ligne de défense, mais il peut être renforcé davantage. Ce tutoriel vous guide pas à pas pour intégrer CrowdSec à votre instance Traefik, vous permettant de bloquer les adresses IP malveillantes et de protéger vos services web contre les attaques.

En bref

Vous cherchez à renforcer la sécurité de vos applications web exposées via Traefik ? Ce tutoriel détaille comment intégrer CrowdSec à votre reverse proxy Traefik. En combinant ces deux outils, vous pourrez détecter et bloquer automatiquement les adresses IP malveillantes qui tentent d’attaquer vos services web, améliorant ainsi considérablement votre posture de sécurité.

tutoriel traefik crowdsec bloquer attaques

Ce guide est conçu pour les utilisateurs ayant des connaissances de base de Traefik et Docker, mais aucune expertise approfondie n’est requise. Vous apprendrez à configurer CrowdSec pour surveiller les logs de Traefik, identifier les comportements suspects, et bloquer automatiquement les adresses IP associées à ces comportements. Le but est de créer une défense proactive contre les menaces.

Prérequis

Avant de commencer, assurez-vous d’avoir les éléments suivants :

  • Une instance Traefik opérationnelle, configurée comme reverse proxy pour vos applications web.
  • Docker et Docker Compose installés sur votre serveur.
  • Une connaissance de base de la configuration de Traefik (fichiers docker-compose.yml et traefik.yml).
  • Un accès à la ligne de commande (terminal) de votre serveur.

Installation et configuration de CrowdSec

La première étape consiste à installer CrowdSec. Nous utiliserons Docker Compose pour simplifier le déploiement.

  1. Créer un fichier docker-compose.yml : Créez un nouveau fichier nommé docker-compose.yml dans un répertoire de votre choix. Ce fichier définira les services CrowdSec et leurs dépendances.
  2. Ajouter la configuration Docker Compose : Copiez et collez le code suivant dans votre fichier docker-compose.yml. Assurez-vous de remplacer les chemins de volumes si nécessaire.
    tutoriel traefik crowdsec bloquer attaques
    version: "3.7"
    services:
     crowdsec:
     image: crowdsecurity/crowdsec:latest
     container_name: crowdsec
     volumes:
     - ./data:/var/lib/crowdsec/
     - ./config:/etc/crowdsec/
     ports:
     - "8080:8080" # Pour l'UI (optionnel)
     networks:
     - traefik_net
    
     crowdsec-firewall-bouncer:
     image: crowdsecurity/cs-firewall-bouncer:latest
     container_name: crowdsec-firewall-bouncer
     environment:
     - CROWDSEC_API_URL=http://crowdsec:8080
     - CROWDSEC_API_KEY=
     - CROWDSEC_MODE=docker
     volumes:
     - /var/run/docker.sock:/var/run/docker.sock:ro
     depends_on:
     - crowdsec
     networks:
     - traefik_net
    
    networks:
     traefik_net:
     external: true
    

    Important : Remplacez <remplacer_par_votre_clé> par une clé API générée par CrowdSec. Consultez la documentation CrowdSec pour savoir comment obtenir une clé API.

  3. Créer les dossiers de données et de configuration : Créez les dossiers data et config dans le même répertoire que votre fichier docker-compose.yml. Ces dossiers seront utilisés pour stocker les données de CrowdSec et sa configuration.
  4. Démarrer les conteneurs Docker : Dans le répertoire contenant votre fichier docker-compose.yml, exécutez la commande docker-compose up -d. Cela téléchargera les images Docker nécessaires et démarrera les conteneurs CrowdSec et cs-firewall-bouncer en mode détaché.

Configuration de Traefik pour CrowdSec

Maintenant que CrowdSec est installé, il faut configurer Traefik pour qu’il transmette les logs à CrowdSec et qu’il bloque les adresses IP signalées par CrowdSec.

  1. Configurer le logging de Traefik : Modifiez votre fichier traefik.yml (ou la section de configuration Traefik correspondante) pour activer le logging au format JSON. Ceci est essentiel pour que CrowdSec puisse analyser les logs. Ajoutez ou modifiez la section accesslog comme suit :
    tutoriel traefik crowdsec bloquer attaques
    accesslog:
     filepath: "/path/to/traefik_access.log"
     format: json
    

    Remplacez /path/to/traefik_access.log par le chemin où vous souhaitez stocker les logs de Traefik. Important : assurez-vous que le conteneur CrowdSec a accès à ce fichier de logs.

  2. Installer le parser Traefik pour CrowdSec : CrowdSec a besoin d’un parser spécifique pour comprendre les logs de Traefik. Exécutez la commande suivante dans le conteneur CrowdSec (par exemple, en utilisant docker exec -it crowdsec bash) :
    crowdsec-cli parsers install crowdsecurity/traefik-logs
    
  3. Installer le scenario de détection d’attaques web : CrowdSec utilise des scénarios pour détecter les attaques. Installez le scénario de base pour la détection d’attaques web en exécutant la commande suivante dans le conteneur CrowdSec :
    crowdsec-cli scenarios install crowdsecurity/http-probing
    
  4. Configurer le middleware Traefik pour bloquer les IPs : Définissez un middleware Traefik qui utilise le bouncer CrowdSec pour bloquer les IPs signalées. Ajoutez la configuration suivante à votre fichier traefik.yml (ou à votre provider de configuration Traefik) :
    http:
     middlewares:
     crowdsec-bouncer:
     plugin:
     crowdsec-bouncer-traefik:
     apiURL: http://crowdsec-firewall-bouncer:8080
     apiKey: 
    

    Remplacez <remplacer_par_votre_clé> par la même clé API que vous avez utilisée dans le fichier docker-compose.yml.

  5. Appliquer le middleware à vos routes Traefik : Ajoutez le middleware crowdsec-bouncer à vos routes Traefik pour activer la protection. Par exemple :
    http:
     routers:
     my-router:
     rule: "Host(`example.com`)"
     service: my-service
     middlewares: ["crowdsec-bouncer"]
    

Vérification du fonctionnement

Pour vérifier que l’intégration fonctionne correctement, vous pouvez simuler une attaque en envoyant un grand nombre de requêtes à votre serveur web. CrowdSec devrait détecter l’activité suspecte et bloquer l’adresse IP de l’attaquant.

  1. Surveiller les logs de CrowdSec : Utilisez la commande docker logs crowdsec pour afficher les logs de CrowdSec. Vous devriez voir des messages indiquant que des adresses IP ont été bloquées.
  2. Vérifier le blocage : Essayez d’accéder à votre site web depuis l’adresse IP que vous avez utilisée pour simuler l’attaque. Vous devriez être bloqué.

Dépannage

Voici quelques problèmes courants et leurs solutions :

  • CrowdSec ne détecte pas les attaques : Assurez-vous que le logging de Traefik est correctement configuré au format JSON et que le parser Traefik est installé dans CrowdSec. Vérifiez également que le scénario de détection d’attaques web est installé.
  • Le middleware Traefik ne fonctionne pas : Vérifiez que l’URL de l’API du bouncer CrowdSec et la clé API sont correctement configurées dans le middleware Traefik. Assurez-vous également que le middleware est correctement appliqué à vos routes Traefik.
  • Erreurs de connexion entre les conteneurs Docker : Vérifiez que les conteneurs CrowdSec, cs-firewall-bouncer et Traefik sont sur le même réseau Docker (ici, traefik_net).

Bonnes pratiques et sécurité

  • Mettez à jour régulièrement CrowdSec et ses scénarios : Pour bénéficier des dernières protections contre les nouvelles menaces, mettez à jour régulièrement CrowdSec et ses scénarios. Vous pouvez utiliser la commande crowdsec-cli update dans le conteneur CrowdSec.
  • Utilisez une clé API forte et sécurisée : Protégez votre clé API CrowdSec, car elle permet de contrôler votre instance CrowdSec. Ne la partagez pas et ne la stockez pas en clair dans vos fichiers de configuration.
  • Surveillez régulièrement les logs de CrowdSec : Surveillez les logs de CrowdSec pour identifier les attaques et les faux positifs. Si vous constatez des faux positifs, vous pouvez ajuster les scénarios de détection ou ajouter des exceptions.

En intégrant CrowdSec à votre reverse proxy Traefik, vous ajoutez une couche de sécurité essentielle à vos applications web. Cette approche proactive permet de détecter et de bloquer les attaques avant qu’elles ne causent des dommages. N’hésitez pas à explorer les nombreuses options de configuration de CrowdSec pour l’adapter à vos besoins spécifiques.

Questions frequentes

Comment installer CrowdSec avec Traefik ?

Pour installer CrowdSec avec Traefik, utilisez Docker Compose pour déployer les conteneurs CrowdSec et cs-firewall-bouncer. Configurez ensuite Traefik pour envoyer ses logs à CrowdSec et appliquez le middleware CrowdSec pour bloquer les adresses IP malveillantes. Le tutoriel détaille chaque étape.

Pourquoi utiliser CrowdSec avec un reverse proxy comme Traefik ?

CrowdSec, combiné à un reverse proxy comme Traefik, offre une protection proactive contre les attaques web. CrowdSec analyse les logs de Traefik pour détecter les comportements suspects et bloque automatiquement les adresses IP malveillantes, renforçant ainsi la sécurité de vos applications.

Comment vérifier que CrowdSec bloque bien les adresses IP malveillantes ?

Pour vérifier le blocage, simulez une attaque en envoyant un grand nombre de requêtes à votre serveur web. Surveillez ensuite les logs de CrowdSec pour confirmer que l’adresse IP de l’attaquant a été bloquée. Essayez ensuite d’accéder au site web depuis cette adresse IP, vous devriez être bloqué.