Changer le thème

Guide de configuration du rate limiting Cloudflare : bloquer les attaques CC en 5 minutes, même en version gratuite

Easton editorial illustration: fault-isolation scanner

3 heures du matin. L’alerte monitoring réveille : CPU à 100 %, site inaccessible. Les logs montrent des dizaines d’IP qui martèlent les API — attaque CC.

Bloquer les IP une par une, de nouvelles arrivent aussitôt. Deux heures perdues avant de penser à Cloudflare. Rate Limiting : la version gratuite suffit ! Une règle — 20 requêtes par minute par IP, blocage 10 minutes — configurée en 5 minutes. L’attaque reste dehors.

Défendre contre le CC n’est pas si compliqué : configurez le rate limiting à l’avance. Ce guide couvre la version gratuite, les seuils, les scénarios et les pièges.

Qu’est-ce qu’une attaque CC ? Pourquoi le rate limiting la bloque-t-il

CC signifie Challenge Collapsar : simuler de nombreux utilisateurs normaux pour épuiser les ressources du serveur.

Ce n’est pas exactement un DDoS classique. Le DDoS envoie des paquets massifs, facilement repérables ; la protection DDoS Cloudflare les intercepte. Le CC envoie des requêtes HTTP normales, comme un vrai visiteur ; la protection DDoS peut passer à côté.

Un utilisateur normal : quelques pages par minute, 5 à 10 requêtes. En CC : plus de 1 000 requêtes en 30 secondes depuis une IP — anormal. Souvent des machines ou des IP proxy en masse, trafic dispersé, difficile à filtrer.

Le rate limiting cible précisément ce comportement : surveiller la fréquence par IP (session, clé API, etc.) ; au-delà du seuil, CAPTCHA ou blocage temporaire.

Lors de mon attaque, l’IP envoyait 200 à 300 req/s ; mon seuil : 20/min. Déclenchement en 1 à 2 secondes ; le reste bloqué. Les utilisateurs normaux ne touchaient pas la limite.

Donnée utile : la doc WAF d’Alibaba Cloud indique qu’une machine zombie peut dépasser 1 000 requêtes en 30 secondes ; un utilisateur normal reste sous 10/min.

1000+
Requêtes en 30 s par machine zombie en CC
Utilisateur normal : moins de 10/min — l’écart est net ; le rate limiting agit dès que la fréquence dépasse le seuil

L’écart est flagrant.

Vous vous demandez peut-être : et si un utilisateur légitime va vite, par exemple en rafraîchissant une API ? C’est pour cela que le seuil compte — voir les recommandations par scénario plus bas.

Version gratuite : panorama du rate limiting Cloudflare

Beaucoup pensent encore que c’est payant. Depuis octobre 2022, Cloudflare l’a ouvert à tous, Free, Pro et Business.

Avant 2022 : facturation au trafic, 5 $ par million de requêtes — j’avais évité de l’activer pour cette raison.

Aujourd’hui : annonce officielle, règles incluses sans surcoût. Free : 1 règle ; Pro et Business : plus.

Une seule règle suffit-elle ? Pour les PME, souvent oui. Placez-la sur la cible la plus exposée : login, inscription ou API critique.

Mes petits projets : 1 règle sur le login, près d’un an sans souci ; scans occasionnels bloqués.

Plusieurs interfaces sensibles ? Pro (20 $/mois, 10 règles) ou Business (200 $/mois, 15 règles). Pour un site perso ou une PME, 1 règle Free couvre l’essentiel.

Rappel : la protection DDoS de base Cloudflare est incluse sans limite de trafic. Le rate limiting cible surtout le CC discret et l’abus d’API.

Free vs payant :

1
Règles en Free
Pro : 10, Business : 15
Payant
Fonctions avancées
Bot Score, empreinte JA3, etc.
Payant
Temps de réponse
Plus rapide sous forte charge
  • Nombre de règles : Free 1, Pro 10, Business 15
  • Fonctions avancées : Bot Score, JA3, etc.
  • Temps de réponse : plans payants plus réactifs sous charge

Débutants : testez en Free sur votre interface la plus critique ; upgradez si besoin.

Seuils : recommandations par scénario

Ma première config : fixer « Requests per period » — 10 ou 100 ? Trop bas, faux positifs ; trop haut, protection faible.

Après doc Cloudflare, bonnes pratiques et tests, voici des repères. À adapter à votre trafic réel.

Login / inscription (cible privilégiée)

Zone de brute force et credential stuffing : trafic utilisateur faible, pic d’attaque élevé.

Recommandation (trois niveaux) :

Cloudflare recommande trois règles :

  • Niveau 1 : 4 req/min → JavaScript Challenge
  • Niveau 2 : 10 req/10 min → CAPTCHA
  • Niveau 3 : 20 req/heure → blocage 1 jour

En Free, simplifiez :

  • Une règle : 20 req/60 s → blocage 10 min

D’après mes logs : même avec mots de passe erronés, moins de 5 tentatives/min ; les scripts en envoient des centaines. 20/min équilibre protection et UX.

Sécurité stricte :

  • Mode strict : 10 req/60 s → blocage 1 heure

API (selon le métier)

API de requête simple :

  • Recommandé : 30 req/10 s → JavaScript Challenge

~3 req/s — suffisant pour la plupart des frontends ; rafraîchissement rapide sans blocage immédiat.

API intensive (images, analytics) :

  • Recommandé : 10 req/60 s → limitation

Consommation serveur élevée ; 10/min suffit à l’usage normal et limite l’abus.

API publique :

  • Recommandé : selon facturation et capacité

Gratuit : ex. 100 req/heure ; payant : paliers par offre.

Google Cloud Armor suggère parfois 2 000 req/20 min puis limitation à 20 % — approche progressive intéressante.

Pages web (anti-scraping)

Recommandé :

  • Pages courantes : 100 req/30 s → JavaScript Challenge
  • Pages spéciales (recherche, téléchargement) : 50 req/60 s → CAPTCHA

Seuil élevé car navigation + assets (CSS, JS, images) = plusieurs requêtes par page. 100/30 s ne gêne pas un visiteur ; un crawler à cette cadence est bloqué.

Attention : pas de limite stricte sur la home ! J’avais serré la page d’accueil ; Google et Bing bloqués, SEO en chute. Règle supprimée, récupération.

Cas de référence

Alibaba Cloud WAF — config préventive PME :

  • Plus de 1 000 requêtes en 30 s depuis une IP → blocage 10 heures

Filet de sécurité souple ; point de départ si vous hésitez.

Astuce : commencez par Managed Challenge, pas Block ; les humains passent le défi si le seuil est un peu bas. Passez à Block après validation.

Tutoriel en 5 minutes (pas à pas)

Étape 1 : page Rate Limiting

Connexion Cloudflare, choisir le domaine :

Security → WAF → Rate limiting rules

Bouton Create rule ; en Free : 0/1 rules.

Étape 2 : informations de base

Rule name : ex. Login-Rate-Limit ou API-Protection.

Étape 3 : conditions (Expression)

Protéger le login :

Field: URI Path
Operator: equals
Value: /api/login

Surveille uniquement /api/login.

Protéger toute l’API :

Field: URI Path
Operator: contains
Value: /api/

Tous les chemins /api/....

Exclure un User-Agent (ex. script de monitoring) : And

Field: User Agent
Operator: does not equal
Value: MyMonitorBot

Étape 4 : paramètres de rate limiting

Characteristics :

  • IP Address : comptage par IP (recommandé contre le CC)
  • Session : cookie de session (utilisateurs connectés)
  • Headers : ex. clé API

Pour le login : IP Address.

Period : 10 s, 30 s, 60 s… J’utilise 60 s — 10 s risque les faux positifs ; 10 min affaiblit la protection.

Requests per period : login 20, API 30.

Duration : 1 min à 24 h. J’utilise 10 min.

Exemple login :

  • Characteristics: IP Address
  • Period: 60 seconds
  • Requests: 20
  • Duration: 10 minutes

Plus de 20 accès login/min depuis la même IP → blocage 10 min.

Étape 5 : action (Action)

Managed Challenge — recommandé :

Cloudflare distingue humain et bot ; page de vérification ou passage direct ; impact minimal si erreur.

Block :

403 ; efficace mais gênant si faux positif ; après validation.

Legacy CAPTCHA :

Code à saisir ; UX moyenne, efficace contre les bots.

JS Challenge :

JavaScript côté client ; efficace contre les crawlers, transparent pour les navigateurs.

Commencez par Managed Challenge, puis Block si besoin.

Étape 6 : Deploy

Bouton Deploy en bas — effet immédiat.

Étape 7 : vérification

for i in {1..30}; do curl https://yourdomain.com/api/login; done

20 premières OK ; à partir de la 21e : 429 ou défi.

Consultez Security → Events pour les logs d’interception.

Exemple complet

Interface /api/auth/login :

Informations :

  • Rule name: Login-Rate-Limit

Conditions :

  • URI Path equals /api/auth/login

Paramètres :

  • Characteristics: IP Address
  • Period: 60 seconds
  • Requests: 20
  • Duration: 10 minutes

Action :

  • Managed Challenge

Deploy — 5 minutes.

Astuces avancées et pièges courants

Piège 1 : crawlers SEO

Ne serrez pas la home ni tout le site !

Règle globale 50 req/30 s : erreurs Google Search Console en hausse ; crawlers + assets = déclenchement fréquent.

Limitez login et API ; pages de contenu souples ou sans limite.

Recommandations :

  • Login, inscription, API : strict
  • Contenu : souple ou sans limite
  • Home : éviter les limites strictes

Anti-scraping avancé : Bot Management (payant) pour crawlers légitimes vs malveillants.

Piège 2 : contournement Cloudflare

Un ami avait configuré le rate limiting ; l’attaque passait quand même — accès direct à l’IP d’origine.

Pourquoi ?

Cloudflare est un reverse proxy. IP d’origine connue = bypass.

Solutions :

  1. Pare-feu : IP Cloudflare uniquement

Listes officielles IPv4/IPv6 ; ports 80 et 443.

Linux :

# N'autoriser que les IP Cloudflare
for i in `curl https://www.cloudflare.com/ips-v4`; do
  ufw allow from $i to any port 443 proto tcp
  ufw allow from $i to any port 80 proto tcp
done
  1. Renouveler l’IP d’origine si exposée ; ne pas la publier en DNS.

  2. Authenticated Origin Pulls — certificat Cloudflare requis côté origine.

Piège 3 : oublier le suivi

Règles figées :

  • Seuil trop bas → plaintes utilisateurs
  • Trafic en hausse → seuil obsolète
  • Nouvelle tactique d’attaque → protection affaiblie

Recommandation :

Mensuellement, Security Analytics :

  • Volume bloqué
  • Faux positifs
  • Taux 429 anormal

Ajustements :

  • Peu de 429 → seuil plus bas possible
  • Beaucoup de 429 → relever le seuil ou affiner la règle

Astuce 1 : attaques distribuées

Nombreuses IP proxy, chacune sous le seuil — le plafond par IP seul ne suffit pas.

Méthodes :

  1. Session/Cookie (pas IP)

Session ID stable ; Characteristics Cookie + nom du cookie.

  1. Filtre User-Agent

Scripts avec Python, curl, etc. — condition User-Agent.

  1. Bot Management (payant)

Score 1-100 ; règle sur Bot Score < 30. Business ou Enterprise.

Astuce 2 : réponse progressive (payant)

Trois niveaux (payant) :

Niveau 1 (souple) :

  • Seuil : ex. 30/min
  • Action : JS Challenge

Niveau 2 (moyen) :

  • Seuil : ex. 50/10 min
  • Action : Managed Challenge

Niveau 3 (strict) :

  • Seuil : ex. 100/heure
  • Action : Block 24 h

Plus de marge pour les humains ; sanctions croissantes pour les attaquants.

Astuce 3 : protection géographique

Trafic surtout en Chine — limite stricte à l’étranger :

(ip.geoip.country ne "CN") and (http.request.uri.path eq "/api/login")

Attention aux VPN. Préférez Challenge à Block.

En conclusion

L’essentiel : le rate limiting n’est pas compliqué — configurez-le avant l’attaque, pas après l’alerte à 3 h du matin.

Trop de sites réagissent seulement quand l’alarme sonne. Cinq minutes de config valent des nuits tranquilles.

Actions :

  1. Configurez une règle maintenant, même sans attaque passée.
  2. Commencez par le login — avec 1 règle Free, c’est la priorité.
  3. Testez — curl ou rafraîchissements ; vérifiez Security Events.
  4. Revoyez chaque mois — Security Analytics, ajustez les seuils.

Dernier rappel : pare-feu origine = IP Cloudflare uniquement ; sinon bypass et règles inutiles.

Questions : documentation Cloudflare ou forums communautaires — la plupart des cas sont déjà documentés.

Que ce guide vous aide à configurer le rate limiting et à tenir le CC à distance.

Configurer le rate limiting Cloudflare contre les attaques CC

Du CC au rate limiting : étapes complètes, protection en 5 minutes, seuils recommandés et pièges à éviter

Estimated time: PT5M

  1. 1

    Step 1: Comprendre le CC et le principe du rate limiting

    Caractéristiques du CC :
  2. 2

    Step 2: • DDoS

    paquets massifs, facilement détectables
  3. 3

    Step 3: • CC

    requêtes HTTP normales, comme un visiteur
  4. 4

    Step 4: • Machine zombie

    plus de 1 000 requêtes en 30 s
  5. 5

    Step 5: • Utilisateur normal

    moins de 10/min
  6. 6

    Step 6: • Au-delà du seuil

    CAPTCHA ou blocage
  7. 7

    Step 7: • Attaquant

    200 à 300 req/s
  8. 8

    Step 8: • Seuil

    20/min
  9. 9

    Step 9: Version gratuite et limites de règles

    Gratuit depuis octobre 2022 :
  10. 10

    Step 10: • Règles

    Free 1, Pro 10, Business 15
  11. 11

    Step 11: • Fonctions avancées

    Bot Score, JA3, etc.
  12. 12

    Step 12: • Temps de réponse

    payant plus rapide sous charge
  13. 13

    Step 13: • Cible

    login, inscription ou API critique
  14. 14

    Step 14: • Mes projets

    1 règle login, près d’un an sans problème
  15. 15

    Step 15: Seuils recommandés par scénario

    Login / inscription :
  16. 16

    Step 16: • Niveau 1

    4 req/min → JavaScript Challenge
  17. 17

    Step 17: • Niveau 2

    10 req/10 min → CAPTCHA
  18. 18

    Step 18: • Niveau 3

    20 req/heure → blocage 1 jour
  19. 19

    Step 19: • Gratuit

    ex. 100 req/heure
  20. 20

    Step 20: • Payant

    paliers par offre
  21. 21

    Step 21: Tutoriel 5 min : créer une règle

    Étape 1 : Security → WAF → Rate limiting rules
  22. 22

    Step 22: • Create rule ; Free

    0/1 rules
  23. 23

    Step 23: Étape 2

    Rule name — ex. Login-Rate-Limit
  24. 24

    Step 24: Étape 3

    Expression
  25. 25

    Step 25: • Login

    URI Path equals /api/login
  26. 26

    Step 26: • API

    URI Path contains /api/
  27. 27

    Step 27: • Option

    exclure User-Agent MyMonitorBot
  28. 28

    Step 28: Étape 4

    paramètres
  29. 29

    Step 29: • Characteristics

    IP Address (login)
  30. 30

    Step 30: • Period

    60 s
  31. 31

    Step 31: • Requests

    20 (login) ou 30 (API)
  32. 32

    Step 32: • Duration

    10 min
  33. 33

    Step 33: Étape 5

    Managed Challenge recommandé ; Block après validation
  34. 34

    Step 34: Étape 6

    Deploy
  35. 35

    Step 35: Étape 7

    curl en boucle ; 429 à partir de la 21e requête ; Security → Events
  36. 36

    Step 36: Paramètres, action et pièges

    Characteristics, Period, Requests, Duration — détails ci-dessus
  37. 37

    Step 37: Piège SEO

    ne pas limiter toute la home
  38. 38

    Step 38: Piège bypass

    pare-feu origine = IP Cloudflare
  39. 39

    Step 39: Piège suivi

    Security Analytics mensuel, ajuster les seuils

FAQ

Le rate limiting Cloudflare est-il disponible en version gratuite ? Quelles sont les limites de règles ?
Depuis octobre 2022, Cloudflare a rendu le rate limiting gratuit pour tous les utilisateurs, y compris les plans Free, Pro et Business.

Avant :
• Avant 2022, le rate limiting était facturé au trafic : 5 dollars par million de requêtes
• Pour les sites à fort trafic, la facture pouvait être conséquente

Aujourd'hui, plus de souci : Cloudflare a annoncé sur son blog officiel que les règles de rate limiting sont incluses dans tous les plans, sans frais supplémentaires.

Les utilisateurs Free peuvent créer 1 règle ; Pro et Business en autorisent davantage.

Principales différences Free vs payant :
• Nombre de règles (Free 1, Pro 10, Business 15)
• Fonctions avancées (plans payants : conditions plus complexes, Bot Score, empreinte JA3, etc.)
• Temps de réponse (plans payants plus rapides sous forte charge)

Pour les PME, 1 règle suffit souvent. L'essentiel : l'appliquer là où l'attaque est la plus probable — login, inscription ou API critique. Sur mes petits projets, une seule règle protège le login ; après près d'un an, aucun problème majeur.

Même avec 1 seule règle en Free, la protection DDoS de base Cloudflare est incluse dans tous les plans, sans limite de trafic. Les DDoS évidents sont interceptés automatiquement. Le rate limiting cible surtout les attaques CC plus discrètes et l'abus d'API.
Qu'est-ce qu'une attaque CC ? Pourquoi le rate limiting la bloque-t-il ?
Caractéristiques des attaques CC :
• CC signifie Challenge Collapsar : simuler de nombreux utilisateurs normaux qui saturent votre site

Différence CC vs DDoS :
• Le DDoS classique envoie des paquets massifs, facilement détectables ; la protection DDoS automatique de Cloudflare les bloque en général
• Le CC est plus insidieux : des requêtes HTTP normales, comme un vrai visiteur ; la protection DDoS peut ne pas les repérer

Exemple : un utilisateur normal consulte quelques pages par minute, soit 5 à 10 requêtes. En CC, une IP peut lancer plus de 1 000 requêtes en 30 secondes — clairement anormal. Les attaquants utilisent souvent de nombreuses machines ou des IP proxy, rendant le trafic dispersé et difficile à filtrer.

Données d'attaque :
• La documentation de bonnes pratiques WAF d'Alibaba Cloud indique qu'une machine zombie typique peut dépasser 1 000 requêtes en 30 secondes
• Un utilisateur normal reste en général sous 10 requêtes par minute
• L'écart est net

Principe du rate limiting :
• Surveiller la fréquence des requêtes par IP (ou session, clé API, etc.) ; au-delà du seuil, action
• CAPTCHA pour prouver qu'on est humain, ou blocage temporaire

Lors de l'attaque que j'ai subie, l'IP de l'attaquant envoyait 200 à 300 requêtes par seconde ; mon seuil était 20 par minute. Le trafic malveillant déclenchait la limite en 1 à 2 secondes ; le reste était bloqué. Les utilisateurs normaux ne la touchaient pas.
Quels seuils selon le scénario ? Login, API et pages web ?
Login / inscription (cible privilégiée) :

Configuration progressive en trois niveaux (recommandation Cloudflare) :
• Niveau 1 : 4 req/min → JavaScript Challenge
• Niveau 2 : 10 req/10 min → CAPTCHA
• Niveau 3 : 20 req/heure → blocage 1 jour

En Free (1 règle), simplifiez. Ma config : 20 req/60 s → blocage 10 min.

Comment j'ai fixé ce seuil : dans les logs, même avec des mots de passe erronés, les utilisateurs ne dépassent pas 5 tentatives par minute. Les scripts d'attaque en envoient des centaines. 20/min bloque la plupart des attaques sans faux positifs.

Sécurité stricte : 10 req/60 s → blocage 1 heure.

API (selon le métier) :
• API de requête simple : 30 req/10 s → JavaScript Challenge (~3 req/s, suffisant pour la plupart des frontends)
• API intensive (images, analytics) : 10 req/60 s → limitation de débit
• API publique : selon facturation et capacité (ex. 100 req/heure en gratuit ; paliers selon l'offre payante)

Pages web (anti-scraping) :
• Pages courantes : 100 req/30 s → JavaScript Challenge
• Pages spéciales (recherche, téléchargement) : 50 req/60 s → CAPTCHA

Pourquoi un seuil élevé sur les pages ? Navigation rapide + CSS, JS, images = plusieurs requêtes par page. 100 req/30 s ne gêne pas un visiteur ; un crawler à cette cadence est facilement bloqué.

Attention : ne serrez pas la page d'accueil ! J'avais limité la home ; Google et Bing ont été bloqués et le SEO a chuté.
Comment configurer une règle de rate limiting Cloudflare ? Étapes détaillées ?
Étape 1 : page Rate Limiting
• Connexion au tableau de bord Cloudflare, choisir le domaine
• Chemin : Security → WAF → Rate limiting rules
• Bouton Create rule ; en Free : 0/1 rules (1 règle restante)

Étape 2 : informations de base
• Rule name : ex. Login-Rate-Limit ou API-Protection

Étape 3 : conditions (Expression)
• Protéger le login :
- Field: URI Path
- Operator: equals
- Value: /api/login
• Protéger toute l'API :
- Field: URI Path
- Operator: contains
- Value: /api/

Étape 4 : paramètres de rate limiting
• Characteristics : IP Address (recommandé contre le CC)
• Period : 60 secondes
• Requests per period : 20 (login) ou 30 (API)
• Duration : 10 minutes

Exemple login : IP Address, 60 s, 20 requêtes, blocage 10 min si dépassement.

Étape 5 : action
• Managed Challenge (recommandé) : Cloudflare distingue humain et bot ; impact minimal en cas d'erreur
• Block : 403 direct ; efficace mais risqué si faux positif ; à utiliser après validation

Commencez par Managed Challenge, puis Block si besoin.

Étape 6 : Deploy — effet immédiat

Étape 7 : vérification
• for i in {1..30}; do curl https://yourdomain.com/api/login; done
• Les 20 premières OK ; à partir de la 21e : 429 ou page de défi
Pièges courants ? Éviter les faux positifs et bloquer les crawlers SEO ?
Piège 1 : crawlers SEO
• Ne serrez pas la home ni tout le site !
• Règle globale 50 req/30 s : erreurs de crawl Google Search Console en hausse
• Les crawlers chargent CSS, JS, images — déclenchent facilement la limite
• Solution : limiter login et API ; pages de contenu souples ou sans limite

Recommandations :
• Login, inscription, API : strict
• Contenu : souple ou sans limite
• Home : éviter les limites strictes
• Bot Management (payant) pour distinguer crawlers légitimes et malveillants

Piège 2 : contournement Cloudflare
• Attaque directe sur l'IP d'origine, bypass du proxy
• Cloudflare est un reverse proxy ; si l'IP réelle fuit, l'attaquant contourne les règles

Solutions :
1) Pare-feu serveur : n'autoriser que les IP Cloudflare (listes IPv4/IPv6) sur 80/443
2) Renouveler l'IP d'origine si exposée ; ne pas la publier en DNS
3) Authenticated Origin Pulls (certificat Cloudflare côté origine)

Piège 3 : oublier le suivi
• Vérifier mensuellement Security Analytics : volume bloqué, faux positifs, taux 429
• Peu de 429 : seuil peut baisser ; trop de 429 : relever le seuil ou ajuster la règle
Attaques distribuées ? Techniques avancées ?
Attaques distribuées :
• De nombreuses IP proxy, chacune sous le seuil ; le simple plafond par IP ne suffit pas

Méthodes :

1) Comptage Session/Cookie (pas IP) :
• Session ID stable même si l'IP change
• Characteristics : Cookie + nom du cookie de session

2) Filtre User-Agent :
• Scripts souvent avec Python, curl, etc. dans le UA
• Ajouter une condition User-Agent

3) Bot Management (payant) :
• Score 1-100 par requête ; règle sur Bot Score < 30
• Plans Business ou Enterprise

Stratégie progressive (payant) :
• Niveau 1 : seuil haut (ex. 30/min), JS Challenge
• Niveau 2 : seuil moyen (50/10 min), Managed Challenge
• Niveau 3 : seuil bas (100/heure), Block 24 h

Protection géographique :
• Expression : (ip.geoip.country ne "CN") and (http.request.uri.path eq "/api/login")
• Limite stricte hors Chine ; attention aux VPN
• Préférer Challenge à Block

10 min de lecture · Publié le: 1 déc. 2025 · Mis à jour le: 27 juil. 2026

Commentaires

Connectez-vous avec GitHub pour laisser un commentaire

Easton BlogEaston Blog