Cybersécurité

Protéger Vaultwarden, Forgejo, WordPress avec CrowdSec : tutoriel 2026

8 دقائق للقراءة

📍 Article principal de la série : CrowdSec 2026 : guide pratique.

Vos applications auto-hébergées sont exposées : Vaultwarden, Forgejo, WordPress, Coolify. CrowdSec offre des collections dédiées à chacune avec scenarios prêts à détecter brute-force login, enumeration utilisateurs, scan paths sensibles. Ce tutoriel détaille la configuration spécifique pour les 3 apps les plus déployées chez les PME francophones.

Prérequis

  • CrowdSec installé (voir tutoriel installation).
  • Bouncers Caddy/Nginx configurés.
  • Vaultwarden et/ou Forgejo et/ou WordPress en production.
  • Niveau attendu : intermédiaire.
  • Temps estimé : 30-60 minutes.

Protection Vaultwarden

Étape 1 — Collection Vaultwarden

cscli collections install LePresidente/vaultwarden
cscli scenarios list | grep vaultwarden

Scenarios installés :

  • LePresidente/vaultwarden-bf : brute-force login.
  • LePresidente/vaultwarden-enum : enumeration utilisateurs (test multiples emails).

Étape 2 — Pointer parser sur logs Vaultwarden

Vaultwarden logs dans /var/lib/coolify/services/vaultwarden-prod/data/vaultwarden.log. Configuration acquisition :

nano /etc/crowdsec/acquis.yaml
filenames:
  - /var/lib/coolify/services/vaultwarden-prod/data/vaultwarden.log
labels:
  type: vaultwarden
systemctl restart crowdsec

Étape 3 — Test détection

Tenter 6 logins avec mauvais password depuis IP test. CrowdSec doit créer alerte :

cscli alerts list | grep vaultwarden

Protection Forgejo

Étape 1 — Collection Forgejo

cscli collections install crowdsecurity/gitea
# Forgejo est compatible Gitea

Étape 2 — Configuration acquisition Forgejo

cat >> /etc/crowdsec/acquis.yaml << EOF
filenames:
  - /var/lib/coolify/services/forgejo-prod/data/log/gitea.log
labels:
  type: gitea
EOF
systemctl restart crowdsec

Étape 3 — Scenarios Forgejo

  • Brute-force login.
  • Brute-force git push.
  • Enumeration users via API public.

Protection WordPress

Étape 1 — Collection WordPress

cscli collections install crowdsecurity/wordpress

Étape 2 — Acquisition Caddy/Nginx

WordPress n’a pas de log natif utile. CrowdSec parse les logs Caddy/Nginx pour détecter :

  • Brute-force /wp-login.php.
  • Scan /wp-admin/, /xmlrpc.php.
  • Probe plugins vulnérables (XSS, RCE patterns).
  • Enumeration utilisateurs via /?author=N.
filenames:
  - /var/log/caddy/access.log
labels:
  type: caddy

Étape 3 — Whitelist legitimate plugins

Éviter de bloquer Updraft Plus, Wordfence, Yoast SEO qui font des appels API légitimes. Whitelist par user-agent ou path :

# /etc/crowdsec/parsers/s02-enrich/whitelists.yaml
whitelist:
  expression:
    - evt.Parsed.user_agent contains "WordPress/6"

Protection Coolify lui-même

filenames:
  - /var/log/coolify/access.log
labels:
  type: coolify

cscli scenarios install crowdsecurity/http-bf-wordpress_bf
cscli scenarios install crowdsecurity/http-cve-2024-XXXX

Dashboard CrowdSec Console

Une fois connecté à console.crowdsec.net :

  • Vue temps réel des alertes.
  • Top scenarios déclenchés.
  • Géolocalisation attaquants.
  • Top IPs bannies.

Erreurs fréquentes

Erreur Cause Solution
Logs Vaultwarden non parsés Format différent Vérifier EXTENDED_LOGGING=true côté Vaultwarden
Faux positifs WordPress admin Pas de whitelist IP fixe admin Whitelist IP bureau
Scenarios ne match pas Date format log différent Customiser parser format
Forgejo logs path Coolify path différent Vérifier docker inspect volume
Plugin légitime bloqué Pas de whitelist user-agent Ajouter whitelist UA
Caddy logs non lus Permissions logs chmod 644 + adduser crowdsec adm

Réalités locales : ce qui change à Dakar et Abidjan

Trois précisions. WhatsApp Business webhook : si plugin WP envoie webhooks Wave/Orange Money, whitelist leurs IPs. Plugins WordPress français : Yoast, WP Rocket, MonsterInsights tous légitimes, à whitelist par user-agent. Forgejo Actions runners : runners auto-hébergés font multiples appels API, exclure leur IP de la détection.

Tutoriels frères

FAQ

Combien de temps avant détection ? Premier ban dans 5-15 minutes après installation, selon trafic. Communautaire applique immédiatement 4M IPs connues.

Custom scenarios ? Oui, fichiers YAML dans /etc/crowdsec/scenarios/. Documentation détaillée.

Performance VPS petit ? CX23 (4 Go RAM) supporte CrowdSec + 5 apps + bouncers. Aucun lag.

Multi-app sur même VPS ? Oui, parsers détectent type log via labels.

Coolify built-in ? Coolify n’inclut pas CrowdSec par défaut. Installation manuelle sur l’hôte.

Pour creuser ce sujet

Un hébergeur abordable pour vos projets

Hostinger combine prix raisonnable et stabilité. Lien partenaire — pas de surcoût pour vous.

Choisir une offre →

Lien d affiliation. Si vous achetez via ce lien, le blog reçoit une petite commission sans surcoût pour vous.

Étape A — Comprendre le modèle CrowdSec en 2 minutes

CrowdSec v1.6+ fonctionne en deux temps : un parser lit vos logs (Caddy, Nginx, Vaultwarden, Forgejo, WordPress) et normalise chaque ligne ; un scenario détecte un pattern d’attaque (force brute, scan, énumération) et déclenche une decision qui pousse l’IP malveillante dans une base locale. Le bouncer (côté Caddy/Nginx/firewall) consomme ces décisions et bloque le trafic. Sans bouncer, CrowdSec détecte mais ne bloque rien — erreur classique du débutant.

Pour un environnement Coolify type (Caddy reverse proxy + plusieurs applications self-hosted), installez CrowdSec sur l’hôte Docker, montez les sockets logs en lecture, et ajoutez le bouncer Caddy (crowdsec-caddy-bouncer) directement dans la config Caddy. Cette architecture évite de toucher chaque conteneur applicatif.

Étape B — Installer CrowdSec sur Ubuntu 24.04

Sur le VPS Hetzner qui héberge Coolify, installez CrowdSec via le repo officiel :

curl -s https://install.crowdsec.net | sudo sh
sudo apt install -y crowdsec crowdsec-firewall-bouncer-iptables
sudo systemctl enable --now crowdsec
sudo cscli capi register
sudo cscli console enroll YOUR-CONSOLE-TOKEN

Le cscli capi register connecte votre instance au Central API CrowdSec qui partage la blocklist communautaire (≈ 2 millions d’IPs malveillantes en temps réel). Sortie attendue : cscli metrics affiche un tableau avec parsers, scenarios et bouncers actifs. Si la colonne « Read » reste à 0 pour Caddy, le parser ne voit pas vos logs — vérifiez le chemin dans /etc/crowdsec/acquis.yaml.

Étape C — Collection Vaultwarden et règle force brute

Vaultwarden expose des logs JSON dans /var/log/vaultwarden/vaultwarden.log si vous avez activé LOG_FILE dans son env. Installez la collection officielle :

sudo cscli collections install crowdsecurity/vaultwarden
sudo systemctl reload crowdsec

Cette collection charge un parser qui détecte les tentatives Username or password is incorrect, et un scenario qui ban une IP après 5 échecs en 10 minutes. Testez en lançant 6 logins échoués depuis un VPN, puis cscli decisions list doit afficher l’IP avec un timer de bannissement.

Étape D — Collection Forgejo et règle énumération SSH

Forgejo (fork de Gitea) est souvent attaqué via SSH (port 222 ou 2222 si vous l’avez déplacé) et via l’API HTTP. Installez :

sudo cscli collections install crowdsecurity/forgejo
sudo cscli parsers install crowdsecurity/sshd-logs

Déclarez vos sources dans /etc/crowdsec/acquis.yaml en ajoutant le filepath des logs Forgejo (souvent /var/log/forgejo/forgejo.log ou via Docker socket). Sortie attendue : cscli scenarios list liste désormais crowdsecurity/forgejo-bf et crowdsecurity/ssh-bf en mode actif.

Étape E — Collection WordPress et hardening xmlrpc

WordPress reçoit en moyenne 80 % de requêtes malveillantes selon Sucuri. CrowdSec dispose d’une collection dédiée :

sudo cscli collections install crowdsecurity/wordpress
sudo cscli scenarios list | grep wordpress

Cette collection détecte : énumération auteurs (?author=N), brute force wp-login.php, scan plugins via /wp-content/plugins/, abus xmlrpc.php. Pour les sites e-commerce ouest-africains qui acceptent des paiements via plugins WooCommerce Wave/Orange Money, désactivez complètement xmlrpc dans Caddy : respond /xmlrpc.php 403. Vous coupez 90 % des tentatives sans casser le site.

Étape F — Protéger Coolify lui-même

Coolify expose son UI sur le port 8000. Ne l’ouvrez jamais directement. Utilisez plutôt l’authentification Magic Link de Coolify et placez son port derrière un sous-domaine Caddy avec authentification additionnelle si vous voulez le rendre accessible depuis Internet. Pour suivre les tentatives :

sudo cscli parsers install crowdsecurity/caddy-logs
sudo cscli scenarios install crowdsecurity/http-probing

Ces deux modules détectent les scans HTTP génériques (Acunetix, Nikto, Burp). Sortie attendue : après 24h, cscli alerts list affiche typiquement 30 à 200 IPs scannées et bannies, sans intervention manuelle.

Étape G — Bouncer Caddy pour bloquer en amont

Sans bouncer, CrowdSec ne fait que détecter. Installez le bouncer Caddy dans votre Caddyfile :

{
  order crowdsec first
  crowdsec {
    api_url http://localhost:8080
    api_key YOUR-BOUNCER-API-KEY
    ticker_interval 15s
  }
}
votre-domaine.io {
  crowdsec
  reverse_proxy vaultwarden:80
}

Générez la clé via cscli bouncers add caddy-bouncer. Compilez Caddy avec le module github.com/hslatman/caddy-crowdsec-bouncer via xcaddy build ou utilisez l’image Docker ghcr.io/hslatman/caddy-crowdsec-bouncer. Sortie attendue : un curl depuis une IP bannie renvoie HTTP 403 avant même d’atteindre Vaultwarden.

Étape H — Dashboard, backup et plan d’action incident

Activez la Console CrowdSec (gratuite jusqu’à 3 machines) sur app.crowdsec.net pour visualiser les attaques en temps réel et corréler entre vos serveurs. Sauvegardez régulièrement /var/lib/crowdsec/data/crowdsec.db avec vos backups Hetzner Object Storage.

Plan d’incident : si CrowdSec ban votre propre IP (ça arrive en debug), récupérez l’accès via la console Hetzner Rescue puis cscli decisions delete --ip VOTRE-IP. Whitelistez vos IPs admin avec cscli decisions add --type captcha --ip VOTRE-IP --duration 9999h ou créez un fichier /etc/crowdsec/parsers/s02-enrich/whitelist.yaml. Pour la stack complète, voir nos tutoriels Plausible sur Hetzner avec Coolify et Astro sur Cloudflare Pages ou Coolify.

مشاركة