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.
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é.

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.ymlettraefik.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.
- Créer un fichier
docker-compose.yml: Créez un nouveau fichier nommédocker-compose.ymldans un répertoire de votre choix. Ce fichier définira les services CrowdSec et leurs dépendances. - 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.
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. - Créer les dossiers de données et de configuration : Créez les dossiers
dataetconfigdans le même répertoire que votre fichierdocker-compose.yml. Ces dossiers seront utilisés pour stocker les données de CrowdSec et sa configuration. - Démarrer les conteneurs Docker : Dans le répertoire contenant votre fichier
docker-compose.yml, exécutez la commandedocker-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.
- 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 sectionaccesslogcomme suit :
accesslog: filepath: "/path/to/traefik_access.log" format: jsonRemplacez
/path/to/traefik_access.logpar le chemin où vous souhaitez stocker les logs de Traefik. Important : assurez-vous que le conteneur CrowdSec a accès à ce fichier de logs. - 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 - 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 - 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 fichierdocker-compose.yml. - 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.
- Surveiller les logs de CrowdSec : Utilisez la commande
docker logs crowdsecpour afficher les logs de CrowdSec. Vous devriez voir des messages indiquant que des adresses IP ont été bloquées. - 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 updatedans 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é.