Lorsque votre site web subit une attaque par inondation HTTP, utilisez la fonctionnalité d'atténuation des inondations HTTP pour créer des règles basées sur les caractéristiques des champs des requêtes HTTP, telles que l'adresse IP source, le User-Agent, le Referer ou la fréquence des requêtes, afin de détecter et de bloquer le trafic malveillant. Les cas d'utilisation courants incluent la protection contre le hotlinking, le blocage des robots malveillants et la sécurisation des interfaces d'administration.
Contexte
Une attaque par inondation HTTP (également appelée attaque Challenge Collapsar ou CC) est un type d'attaque par déni de service distribué (DDoS) qui opère au niveau de la couche application. Les attaquants utilisent plusieurs hôtes contrôlés pour envoyer continuellement des requêtes HTTP ou HTTPS falsifiées à un serveur cible, par exemple en demandant répétitivement des pages gourmandes en ressources telles que les pages de recherche ou de connexion. Cela épuise les ressources du serveur ou la bande passante réseau, ce qui ralentit les réponses du site web ou le rend indisponible.
Contrairement aux attaques DDoS traditionnelles au niveau du réseau, les attaques par inondation HTTP sont plus difficiles à détecter car elles imitent le comportement d'utilisateurs légitimes. Alibaba Cloud propose deux produits complémentaires pour s'en protéger :
Anti-DDoS Pro et Anti-DDoS Premium : déployés en périphérie du réseau pour protéger contre les attaques volumétriques. Recommandés lorsque le volume de l'attaque est suffisamment élevé pour rendre votre site web inaccessible.
Web Application Firewall (WAF) : déployé à proximité du serveur pour analyser le trafic de la couche application et se protéger contre les modèles malveillants. Recommandé lorsque le volume de l'attaque est plus faible, par exemple lorsque votre site web répond simplement avec lenteur.
Pour une protection optimale, déployez les deux produits conjointement.
Cette fonctionnalité est prise en charge par les instances Anti-DDoS Pro et Anti-DDoS Premium. Les instances Anti-DDoS Proxy partagent le même chemin d'accès dans la console et la même interface de configuration des règles, mais ne prennent pas en charge les règles personnalisées de contrôle de fréquence.
Fonctionnement
La mitigation des inondations HTTP propose deux types de règles, déterminés selon que l'option Rate Limiting est activée ou non :
Règles de contrôle d'accès précis (Rate Limiting désactivé) : déclenchées immédiatement lorsqu'une requête correspond à toutes les conditions. Utilisez-les pour bloquer ou autoriser le trafic en fonction de caractéristiques fixes, telles que des adresses IP spécifiques, des chaînes User-Agent ou des valeurs Referer.
Règles de contrôle de fréquence (Rate Limiting activé) : déclenchées uniquement lorsqu'un objet statistique (par exemple, une adresse IP source) dépasse un seuil de fréquence de requêtes dans une période définie. Utilisez-les pour bloquer les modèles de requêtes à haute fréquence qui semblent individuellement légitimes.
Le moteur évalue d'abord les règles de contrôle d'accès précis, puis les règles de contrôle de fréquence. Dès qu'une requête correspond à une règle, l'évaluation s'arrête ; les règles suivantes ne sont pas vérifiées.
La protection intelligente génère automatiquement des règles de contrôle d'accès précis préfixées par smartcc_ . Ces règles suivent la même logique de correspondance et sont supprimées automatiquement à leur expiration. Aucune action manuelle n'est nécessaire.
Comportement de correspondance
Règles de contrôle d'accès précis : toutes les règles sont évaluées. Si une requête correspond à plusieurs règles, l'action de la règle ayant la priorité la plus élevée est exécutée.
Règles de contrôle de fréquence : toutes les règles sont évaluées. Si une requête correspond à plusieurs règles, l'action de l'une des règles correspondantes est exécutée de manière aléatoire.
Règles de contrôle de fréquence intégrées
Le moteur de protection inclut deux règles de contrôle de fréquence intégrées :
Built-in HTTP Flood Mitigation Rule - Based on Request Frequency of Clients
Built-in HTTP Flood Mitigation Rule - Based on Response Codes of Origin Servers
Ces règles sont permanentes et visibles dans la zone de configuration Frequency Control Rule. Vous pouvez uniquement les consulter ou les supprimer ; la modification n'est pas prise en charge.
Les règles intégrées supprimées ne peuvent pas être récupérées. Si vous supprimez une règle intégrée, créez des règles de contrôle de fréquence personnalisées basées sur la fréquence des requêtes et les caractéristiques de vos noms de domaine ou interfaces critiques.
Limites de règles par nom de domaine
| Plan | Règles de contrôle d'accès précis | Règles de contrôle de fréquence |
|---|---|---|
| Standard function plan | 20 | 20 |
| Enhanced function plan | 100 | 100 |
Quand utiliser la mitigation des inondations HTTP
Configurez ces règles uniquement lorsque votre site web subit une attaque par inondation HTTP. Cette fonctionnalité ne remplace pas la protection quotidienne ; utilisez-la pour renforcer vos défenses en autorisant ou en filtrant le trafic présentant des caractéristiques spécifiques.
Avant de créer des règles, identifiez les caractéristiques de l'attaque. Recherchez des modèles tels que des adresses IP sources répétitives ou un modèle d'URI spécifique :
Page Attack Analysis : consultez les événements Web Resource Exhaustion, y compris l'adresse IP source, le User-Agent, le Referer, la méthode HTTP et l'empreinte digitale du client.
Page Log Analysis : recherchez dans des champs tels que
real_client_ip,http_user_agent,http_refereretrequest_method. Pour les descriptions des champs, consultez Champs de journal complets.
Insertion de cookies
Pour les services de couche 7, Anti-DDoS Pro et Anti-DDoS Premium insèrent des cookies dans deux scénarios :
Scénario 1 — La protection contre les inondations HTTP est activée dans la politique Protection for Website Services : un cookie est inséré pour différencier et compter les clients. Le service utilise les résultats statistiques pour déterminer si un trafic d'attaque par inondation HTTP est présent et active la politique de nettoyage.
Scénario 2 — L'action de la règle est définie sur JavaScript Challenge : un cookie capture l'empreinte digitale du navigateur client (champ hôte, hauteur et largeur du navigateur). Lorsqu'une requête correspond à la règle, le service initie une sonde de défi et utilise les statistiques d'empreintes digitales du navigateur pour identifier les clients anormaux.
Pour désactiver l'insertion de cookies, accédez à Provisioning > Website Config, cliquez sur Edit et désactivez le commutateur Cookie Settings. La désactivation de ce paramètre désactive également la détection et la protection actives contre les attaques par inondation HTTP.
Prérequis
Avant de commencer, assurez-vous d'avoir :
Ajouté un service de site web à Anti-DDoS Proxy. Consultez Ajouter des sites web.
Créer une règle de mitigation des inondations HTTP
Connectez-vous à la console Anti-DDoS Proxy.console Anti-DDoS Proxy
-
Dans la barre de navigation supérieure, sélectionnez la région de votre instance :
Anti-DDoS Proxy (Chinese Mainland) : sélectionnez Chinese Mainland.
Anti-DDoS Proxy (Outside Chinese Mainland) : sélectionnez Outside Chinese Mainland.
Dans le volet de navigation de gauche, choisissez Mitigation Settings > General Policies.
Sur la page General Policies , cliquez sur l'onglet Protection for Website Services et sélectionnez le nom de domaine à configurer dans la liste de gauche.
Dans la section HTTP Flood Mitigation , cliquez sur Settings , puis sur Create Rule dans le coin supérieur droit.
-
Configurez les paramètres de la règle. Référence des actions :
Lorsque Rate Limiting est activé, Allow n'est pas disponible.
Paramètre Description Rule name Nom de la règle. Prend en charge les lettres, les chiffres et les underscores ( _). Maximum 128 caractères.Match conditions Jusqu'à cinq conditions. Une requête ne correspond que si elle respecte toutes les conditions. La Field value ne peut pas être vide. La correspondance pour les règles de contrôle d'accès précis est sensible à la casse ; celle pour les règles de contrôle de fréquence ne l'est pas. Pour les champs pris en charge, consultez Champs de requête HTTP pris en charge. Rate Limiting Désactivé : crée une règle de contrôle d'accès précis. Activé : crée une règle de contrôle de fréquence. Lorsqu'il est activé, configurez également Statistical Object (prend en charge IP, Custom Header, Session, Custom Cookie, Custom Request Parameter), Statistical Period (s) et Threshold (times). Vous pouvez éventuellement ajouter des conditions basées sur le nombre ou la proportion de codes de réponse. Action Action à exécuter lorsque la règle est déclenchée. Consultez le tableau de référence des actions ci-dessous. Validity Period Pour les règles de contrôle d'accès précis : permanent ou une durée personnalisée de 5 à 120 minutes (la règle est supprimée à son expiration). Pour les règles de contrôle de fréquence : durée pendant laquelle l'action est appliquée après le déclenchement de la règle, de 1 à 1440 minutes. Advanced Settings Disponible lorsque Rate Limiting est activé. Configure la déduplication pour l'objet statistique (IP, Header ou URI). Consultez Déduplication ci-dessous. Action Comportement Quand l'utiliser Allow Autorise la requête. Liste blanche du trafic connu comme sûr pour éviter qu'il ne soit bloqué par d'autres règles. Block Supprime la requête. À utiliser lorsque les caractéristiques de l'attaque sont claires et que vous êtes certain qu'aucun trafic légitime ne correspond. JavaScript Challenge Valide l'adresse IP source à l'aide d'un algorithme de défi. À utiliser lorsque vous ne pouvez pas exclure le trafic légitime ; cela challenge les navigateurs réels tout en bloquant la plupart des robots. Monitor Enregistre la requête et l'autorise. À utiliser en premier lieu pour valider une nouvelle règle sans affecter le trafic en direct. Passez à Block ou JavaScript Challenge après avoir confirmé l'absence de faux positifs. Cliquez sur OK.
-
Revenez à la section HTTP Flood Protection et activez le commutateur Status pour activer les règles.
RemarqueLe commutateur Status est activé par défaut après la création de la règle. L'activation manuelle n'est nécessaire que s'il a été précédemment désactivé.
Déduplication
Lorsque Rate Limiting est activé, la section Advanced Settings vous permet d'activer la déduplication pour l'objet statistique.
Déduplication activée : compte les valeurs uniques de l'objet de déduplication. Par exemple, si l'objet statistique est l'adresse IP et l'objet de déduplication est l'URI, une adresse IP source qui accède à 200 URI différents en 30 secondes déclenche la règle, mais 10 requêtes vers le même URI comptent pour une seule.

Déduplication désactivée : compte le total des requêtes. Par exemple, si la même adresse IP source effectue 200 requêtes ou plus en 30 secondes, la règle se déclenche, y compris les requêtes répétées vers le même URI.

Exemples de configuration
Les exemples suivants sont basés sur des scénarios d'attaque courants. Ajustez les valeurs spécifiques pour qu'elles correspondent à vos modèles de trafic réels.
Bloquer les requêtes POST vers le répertoire racine
Le trafic légitime inclut rarement des requêtes POST vers le répertoire racine (/). Si votre site web subit une attaque et que vous observez de nombreuses requêtes de ce type :
| Champ | Opérateur logique | Valeur du champ |
|---|---|---|
| Http-Method | is | POST |
| URI | is | / |
Action : Block | Rate Limiting : désactivé (règle de contrôle d'accès précis)

Bloquer les robots d'indexation web
Si vous observez un trafic important de robots d'indexation qui peut inclure des robots d'attaque se faisant passer pour des robots légitimes :
| Champ | Opérateur logique | Valeur du champ |
|---|---|---|
| User-Agent | contains | <crawler-user-agent-string> |
Action : Block | Rate Limiting : désactivé (règle de contrôle d'accès précis)

Protection contre le hotlinking
Lorsqu'un navigateur demande une page, il inclut un champ Referer identifiant la page référente. Pour bloquer le hotlinking depuis un domaine spécifique (par exemple, https://example.aliyundoc.com) :
| Champ | Opérateur logique | Valeur du champ |
|---|---|---|
| Referer | contains | https://example.aliyundoc.com |
Action : Block | Rate Limiting : désactivé (règle de contrôle d'accès précis)

Limiter le débit par User-Agent
Pour challenger un User-Agent spécifique qui accède aux URI avec le préfixe /game/all_ plus de 30 fois en 10 secondes :
| Champ | Opérateur logique | Valeur du champ |
|---|---|---|
| User-Agent | is | <target-user-agent-string> |
| URI | prefix matches | /game/all_ |
Rate Limiting : activé | Objet statistique : IP | Période statistique : 10 s | Seuil : 30 | Action : JavaScript Challenge

Protéger l'interface de connexion
Pour bloquer les attaques par dictionnaire sur votre interface de connexion, par exemple plus de 20 requêtes vers /login en 60 secondes depuis la même adresse IP :
| Champ | Opérateur logique | Valeur du champ |
|---|---|---|
| URI | is | /login |
Rate Limiting : activé | Objet statistique : IP | Période statistique : 60 s | Seuil : 20 | Action : Block

Limiter le débit basé sur les codes de réponse du serveur d'origine
L'ajout de conditions de code de réponse aux règles de contrôle de fréquence réduit les faux positifs en déclenchant des actions uniquement lorsque la fréquence des requêtes et le modèle de code de réponse sont dépassés.
200
200 — le serveur d'origine répond normalement sous forte charge
Lorsque le serveur d'origine dispose d'une capacité de traitement élevée et renvoie toujours 200 pour les requêtes des attaquants, limitez le débit des adresses IP qui dépassent la fréquence de requête normale :

404
404 — attaque par balayage d'URI
Lorsque les attaquants demandent répétitivement des chemins inexistants, le serveur d'origine répond par 404. Ajoutez l'adresse IP de l'attaquant à une liste de blocage :

403
403 — le WAF en amont bloque les attaques web
Lorsque Anti-DDoS Pro ou Anti-DDoS Premium est déployé devant le WAF, le WAF répond par 403 pour les attaques web bloquées. Utilisez ce code de réponse pour ajouter proactivement les adresses IP des attaquants à une liste de blocage :

429
429 — la limitation de débit du serveur d'origine est déclenchée
Lorsque le serveur d'origine renvoie 429 (Too Many Requests) pour les requêtes qui dépassent ses propres limites de débit, ajoutez l'adresse IP de l'attaquant à une liste de blocage pour réduire la pression sur le serveur d'origine :

502
502 — surcharge du serveur d'origine
Lorsqu'une augmentation soudaine des requêtes entraîne une lenteur de réponse du serveur d'origine et un retour 502, ajoutez les adresses IP à haute fréquence de requêtes à une liste de blocage pour protéger la disponibilité du serveur d'origine :

555
Codes d'état personnalisés (exemple : 555)
Lorsque le serveur d'origine utilise un code d'état personnalisé pour les requêtes inattendues, utilisez ce code pour identifier et gérer les adresses IP envoyant ces requêtes :

Bloquer par empreinte digitale du client
Les attaquants utilisant le même script ou outil produisent des requêtes avec des empreintes digitales TLS, JA3, JA4 ou HTTP/2,0 identiques. Lors d'une attaque volumétrique par inondation HTTP, la proportion de requêtes partageant une valeur d'empreinte digitale augmente soudainement.
Pour identifier les empreintes digitales suspectes :
Sur la page Security Overview , cliquez sur l'onglet Domain Names et consultez les données principales de Client TLS Fingerprint.
Sur la page Log Analysis , vérifiez la proportion des valeurs principales pour le champ
ssl_client_tls_fingerprinting_md5.
Une fois que vous avez identifié une valeur d'empreinte digitale suspecte, créez une règle de contrôle d'accès précis :
| Champ | Opérateur logique | Valeur du champ |
|---|---|---|
| Tls-Fingerprint | Equal to | <fingerprint-value> |
Action : Block | Rate Limiting : désactivé (règle de contrôle d'accès précis)

Annexe 1 : Champs de requête HTTP pris en charge
| Champ de correspondance | Description | Opérateurs logiques | Exemple |
|---|---|---|---|
| IP | Adresse IP source. Prend en charge les adresses IP individuelles et la notation CIDR. | is, is not, is in list, is not in list | 10.10.10.10 |
| URI | URI de la requête. | contains, does not contain, is, is not, length is less than, length is, length is greater than, prefix matches, is one of, is not one of. Important
Pour "is" et "is not", la valeur doit commencer par |
/action/member/id.php?id=1&td=2 |
| User-Agent | Informations sur le navigateur et le moteur de rendu du client. | contains, does not contain, is, is not, length is less than, length is, length is greater than, is one of, is not one of | Mozilla/5,0 (Windows NT 10.0; Win64; x64) AppleWebKit/537,36 |
| Cookie | Informations de cookie dans la requête. | contains, does not contain, is, is not, length is less than, length is, length is greater than, does not exist, is one of, is not one of | cna=Z87DHXX/jXIBASQBsYAimToU |
| Referer | URL de la page qui a référé la requête. | contains, does not contain, is, is not, length is less than, length is, length is greater than, does not exist, is one of, is not one of | https://example.aliyundoc.com/ |
| Content-Type | Type MIME de la requête. | contains, does not contain, is, is not, length is less than, length is, length is greater than, is one of, is not one of | text/plain;charset=UTF-8 |
| X-Forwarded-For | Adresse IP du client d'origine, avec la chaîne de proxy. Format : <client>, <proxy1>, <proxy2>. |
contains, does not contain, is, is not, length is less than, length is, length is greater than, does not exist, is one of, is not one of | 36.18.XX.XX,192,18.XX.XX |
| Content-Length | Taille du corps de la requête en octets. | value is less than, value is, value is greater than | 806 |
| Post-Body | Contenu du corps de la requête. | contains, does not contain, is, is not, is one of, is not one of | name=John&age=25 |
| Http-Method | Méthode HTTP. Valeurs valides : GET, POST, DELETE, PUT, OPTIONS, CONNECT, HEAD, TRACE. | is, is not, is one of, is not one of | POST |
| Header | Nom du champ d'en-tête HTTP personnalisé et contenu de la correspondance. | contains, does not contain, is, is not, length is less than, length is, length is greater than, does not exist, is one of, is not one of | text/html,application/xhtml+xml |
| Params | Paramètres de la chaîne de requête (la partie après ?). Par exemple, dans example.aliyundoc.com/index.html?action=login, la valeur Params est action=login. |
contains, does not contain, is, is not, length is less than, length is, length is greater than, is one of, is not one of | action=login |
| Raw-URI | URI non encodé qui conserve la séquence de caractères d'origine, y compris les caractères spéciaux et les espaces. | contains, does not contain, is, is not, length is less than, length is, length is greater than, regex matches, byte contains, byte is, is one of, is not one of | GET /images/logo.png HTTP/1,1 |
| Tls-Fingerprint | Empreinte digitale du client dérivée de la négociation TLS à l'aide de l'algorithme propriétaire d'Alibaba Cloud. Consultez les valeurs dans l'onglet Security Overview > Domain Names (Client TLS Fingerprint) ou dans Log Analysis (champ ssl_client_tls_fingerprinting_md5). |
Equal to, Not equal to | 74dcbf6b790160370bb6b7bea98d5978 |
| HTTP/HTTPS | Type de protocole de la requête. | Equal to, Not equal to | HTTP |
| HTTP Version | Version du protocole HTTP. Prend en charge HTTP/1,0, HTTP/1,1 et HTTP/2.0. | is, is not, is one of, is not one of | HTTP/1,0 |
| HTTP/2,0 Fingerprint | Empreinte digitale traitée par MD5 du client HTTP/2. Utilisée pour identifier et différencier les clients. | is, is not | ad8424af1cc590e09f7b0c499bf7fcdb |
| JA3 Fingerprint | Hachage MD5 des paramètres clés de la négociation TLS : version TLS, suites de chiffrement, algorithmes de compression et extensions TLS. Identifie les types de clients TLS tels que les navigateurs, les applications mobiles et les logiciels malveillants. | is, is not, is one of, is not one of | eb6f49e8db7ad1809f885d12232f4855 |
| JA4 Fingerprint | Étend JA3 avec un contexte supplémentaire tel que la version du navigateur et le système d'exploitation, réduisant les valeurs d'empreinte digitale dupliquées et améliorant la précision pour distinguer les utilisateurs réels des usurpateurs. | is, is not, is one of, is not one of | f436b9416f37d134cadd04886327d3e8 |
| Continent/Country | Emplacement géographique de l'adresse IP source. | Location Blacklist selection | Europe |