Comment puis-je limiter les attaques DDoS à l'aide d'AWS WAF ?

Dernière mise à jour : 27/07/2022

Comment puis-je utiliser AWS WAF pour aider à prévenir les attaques par déni de service distribué (DDoS) ?

Brève description

Les attaques DDoS sont des tentatives par un attaquant de perturber la disponibilité des systèmes ciblés.

Pour les attaques de la couche infrastructure, vous pouvez utiliser les services AWS tels qu'Amazon CloudFront et Elastic Load Balancing (ELB) pour fournir une protection automatique contre les attaques DDoS. Pour plus d'informations, consultez Bonnes pratiques AWS en matière de résilience DDoS.

Pour les attaques de la couche application, vous pouvez utiliser AWS WAF comme principal moyen d'atténuation. Les listes de contrôle d'accès Web (ACL Web) d'AWS WAF minimisent les effets d'une attaque DDoS au niveau de la couche application, procédez comme suit :

  • Utilisez des règles basées sur le débit.
  • Examinez les règles existantes basées sur le débit et envisagez d'abaisser le seuil de limite de débit pour bloquer les mauvaises demandes.
  • Interrogez les journaux AWS WAF pour recueillir des informations spécifiques sur les activités non autorisées.
  • Créez une règle de correspondance géographique pour bloquer les mauvaises demandes provenant d'un pays qui n'est pas prévu pour votre entreprise.
  • Créez une règle de correspondance de jeu d'adresses IP pour bloquer les mauvaises demandes basées sur les adresses IP.
  • Créez une règle de correspondance regex pour bloquer les mauvaises demandes.

Solution

Utilisation de règles basées sur le débit

Vous pouvez créer des règles basées sur le débit globales ou spécifiques à une URI pour protéger votre application Web contre les attaques DDoS. Pour plus d'informations, consultez Les trois règles basées sur le débit les plus importantes d'AWS WAF.

Créer une règle basée sur le débit globale à partir de la console AWS WAF

Une règle basée sur le débit globale vous permet de définir un seuil pour le nombre de demandes que les IP peuvent faire à votre application Web.

  1. Ouvrez la console AWS WAF.
  2. Sélectionnez la liste ACL Web pour laquelle aucun RBR n'est défini, puis sélectionnez Rate-based rule (Règle basée sur le débit).
  3. Saisissez un Name (Nom) pour votre règle.
  4. Saisissez une Rate limit (Limite de débit). La limite de débit est le nombre maximum de demandes autorisées dans une période de cinq minutes à partir d'une seule adresse IP. Lorsque cette limite est atteinte, l'action de la règle basée sur le débit est appliquée à l'adresse IP. Lorsque les demandes provenant de l'adresse IP tombent en dessous de la limite, l'action est interrompue.
    Remarque : le seuil de la limite de débit est une représentation du nombre de demandes provenant d'une seule adresse IP qui est considéré comme trop important et potentiellement malveillant. Sinon, vous risquez de bloquer les bonnes demandes. Si vous n'êtes pas sûr de la limite à fixer, une bonne pratique consiste à définir l'action de la règle pour compter et surveiller votre rythme de demande.
  5. Pour IP address to use for rate limiting (Adresse IP à utiliser pour la limitation du débit), sélectionnez Source IP address (Adresse IP source) ou IP address in header (Adresse IP dans l'en-tête).

    IP address in header (Adresse IP dans l'en-tête) : lorsqu'une demande provient d'un CDN ou d'un autre réseau proxy, l'adresse IP source identifie le proxy et l'adresse IP d'origine est envoyée dans un en-tête. Soyez prudent lorsque vous utilisez l'option IP address in header (Adresse IP dans l'en-tête) car les en-têtes peuvent être traités de manière incohérente par les proxys. De plus, les en-têtes peuvent être modifiés pour contourner l'inspection.

    Source IP address (Adresse IP source) : pour Criteria to count request towards rate limit (Critères de comptage des demandes pour la limite de débit), choisissez Count requests that match the criteria of a rule statement (Compter les demandes qui correspondent aux critères d'un énoncé de la règle).
  6. Définissez l'action de la règle pour count or block (compter ou bloquer) les demandes provenant d'adresses IP lorsque leur nombre de demandes dépasse la limite. L'application et la suppression de l'action de la règle peuvent prendre effet une minute ou deux après la modification du débit de demandes de l'adresse IP.
  7. Sélectionnez Add Rule (Ajouter une règle).
  8. Sélectionnez Next (Suivant).

Pour plus d'informations sur la création d'un énoncé de la règle basé sur le débit, consultez énoncé de la règle basé sur le débit.

Créez une règle basée sur le débit spécifique à l'URI à partir de la console AWS WAF

  1. Ouvrez la console AWS WAF.
  2. Sélectionnez la liste ACL Web pour laquelle aucune règle basée sur le débit n'est définie, puis sélectionnez Rate-based rule (Règle basée sur le débit).
  3. Saisissez un Name (Nom) pour votre règle.
  4. Saisissez une Rate limit (Limite de débit).
  5. Pour IP address to use for rate limiting (Adresse IP à utiliser pour la limitation du débit), sélectionnez Source IP address (Adresse IP source) ou IP address in header (Adresse IP dans l'en-tête).
  6. Pour Criteria to count request towards rate limit (Critères de prise en compte des demandes dans la limite de débit), sélectionnez Only consider requests that match the criteria in a rule statement (Ne prendre en compte que les demandes qui correspondent aux critères d'un énoncé de la règle).
  7. Créez le Statement (Énoncé) avec les variables suivantes :
    Pour Inspect (Inspecter), sélectionnez URI path (Chemin d'accès URI).
    Pour Match type (Type de correspondance), sélectionnez Exactly matches string (Correspondance exacte de la chaîne).
    Pour String to match (Chaîne à correspondre), saisissez /login. Vous pouvez sélectionner l'URI qui est spécifique à votre application.
    Pour Text transformation (Transformation de texte), laissez la valeur None (Aucune).
  8. Définissez l'action de la règle pour count or block (compter ou bloquer) les demandes provenant d'adresses IP lorsque leur nombre de demandes dépasse la limite.
  9. Choisissez Add rule (Ajouter une règle).
  10. Choisissez Next (Suivant).

Examinez les règles existantes basées sur le débit et envisagez d'abaisser le seuil de limite de débit pour bloquer les mauvaises demandes

Pour modifier une règle basée sur le débit existante dans la console :

  1. Ouvrez la console AWS WAF.
  2. Sélectionnez la liste ACL Web et sélectionnez la règle existante basée sur le débit.
  3. Abaissez le Rate limit threshold (Seuil de limite de débit) si nécessaire.
  4. Définissez la Rule action (Action de la règle) sur Block (Bloquer).
  5. Choisissez Save rule (Enregistrer la règle).
  6. Choisissez Next (Suivant).

Pour plus d'informations, consultez Énoncé de la règle basée sur le débit.

Envisager de réduire la portée des demandes qui sont suivies et comptées par votre règle basée sur le débit

Pour réduire la portée des demandes suivies et comptées par AWS WAF, utilisez un énoncé de réduction de la portée dans l'énoncé de la règle basée sur le débit. Ensuite, AWS WAF compte les demandes qui correspondent à l'énoncé de réduction de la portée.

Exemple

Sur la base des demandes récentes d'un attaquant aux États-Unis, vous créez une règle basée sur le débit avec l'énoncé de réduction de la portée suivant :

  1. Un énoncé de correspondance géographique qui spécifie les demandes provenant des États-Unis.
  2. Un énoncé de correspondance de chaîne qui recherche la chaîne Badbot dans l'en-tête User-Agent.

Supposons que vous définissiez une limite de débit de 1 000. Pour chaque adresse IP, AWS WAF compte les demandes qui répondent aux critères des deux énoncés imbriqués. Les demandes qui ne remplissent pas les deux conditions ne sont pas comptées. Si le compte pour une adresse IP dépasse 1 000 demandes dans une période de 5 minutes, l'action de la règle se déclenche contre cette adresse IP.

Pour ajouter un énoncé de réduction de la portée en utilisant cet exemple à votre règle basée sur le débit dans la console, procédez comme suit :

  1. Ouvrez la console AWS WAF.
  2. Sélectionnez la liste ACL Web et sélectionnez la règle existante basée sur le débit.
  3. Pour Criteria to count requests towards rate limit (Critères de prise en compte des demandes dans la limite de débit), choisissez Only requests that match the criteria in rule statement (Uniquement les demandes qui correspondent aux critères de l'énoncé de la règle)
  4. Ne comptez que les demandes qui correspondent à l'énoncé suivant :
    Si une demande correspond à tous les énoncés (AND)
    Énoncé 1
    Inspect (Inspecter) : sélectionnez Originates from a country in (Provient d'un pays dans).
    Country Codes (Codes de pays) : Sélectionnez United States-US.
    IP address to use for rate limiting (Adresse IP à utiliser pour la limitation du débit) : sélectionnez Source IP address (Adresse IP source), soit IP address in header (Adresse IP dans l'en-tête).

    -et-

    Énoncé 2
    Inspect (Inspecter) : sélectionnez Single Header (En-tête unique).
    Header field name (Nom du champ En-tête) : saisissez User-Agent.
    Match type (Type de correspondance) : sélectionnez Exactly matches string (Correspondance exacte de la chaîne).
    String to match (Chaîne à correspondre) : saisissez Badbot.
  5. Choisissez Save Rule (Enregistrer la règle).
  6. Choisissez Next (Suivant).

Interrogation des journaux AWS WAF pour recueillir des informations spécifiques sur l'activité non autorisée

Si ce n'est pas déjà fait, assurez-vous d'activer la journalisation AWS WAF.

Après avoir activé la journalisation pour votre liste ACL Web afin d'analyser le trafic, interrogez les journaux AWS WAF pour étudier les scénarios DDoS. Vous pouvez interroger les journaux AWS WAF en utilisant les éléments suivants :

Utilisation de l'analyseur de journaux Amazon Athena ou de l'analyseur de journaux AWS Lambda

Les règles basées sur le débit vous permettent de spécifier le nombre maximum de demandes Web à autoriser à partir d'une seule adresse IP dans une période de cinq minutes, mise à jour en continu. Si une adresse IP dépasse la limite configurée, les nouvelles demandes sont bloquées jusqu'à ce que le débit de demandes descende en dessous du seuil configuré. La valeur minimale acceptable de la limite de débit pour les règles basées sur le débit est de 100.

Dans les scénarios où les règles basées sur le débit ne peuvent pas être utilisées en raison du seuil minimum autorisé, envisagez d'utiliser l'implémentation de l'analyseur de journaux Athena ou de l'analyseur de journaux Lambda disponibles dans AWS WAF Automation. Avec les règles basées sur le débit, la période de blocage par défaut est de 240 secondes. L'analyseur de journaux Athena et Lambda vous permettent tous deux de sélectionner la période (en minutes) de blocage des adresses IP applicables.

Les implémentations des analyseurs de journaux Athena et Lambda ont les paramètres suivants :

  • Request threshold (Seuil de demandes) : nombre maximal de demandes acceptables toutes les cinq minutes par adresse IP.
  • Block period (Période de blocage) : période (en minutes) pendant laquelle les adresses IP applicables sont bloquées.

Ces deux solutions vous permettent de définir des paramètres lors de l'approvisionnement ou de la mise à jour des piles AWS CloudFormation.

Utilisez l'analyseur de journaux Lambda lorsque les règles basées sur le débit ou l'analyseur de journaux Athena ne sont pas disponibles. Pour plus d'informations, consultez Analyseur de journaux AWS Lambda.

Tenez compte de l'augmentation des coûts lors de l'utilisation de l'analyseur de journaux Athena. Vous êtes facturé pour l'utilisation d'Athena lorsque vous utilisez cette option pour la protection contre les attaques par déluge HTTP (HTTP flood). Par défaut, chaque requête Athena s'exécute toutes les cinq minutes et analyse les quatre dernières heures de données. Le partitionnement est appliqué aux journaux et aux requêtes Athena pour maintenir des coûts bas. Vous pouvez configurer le nombre d'heures de données qu'une requête analyse en modifiant la valeur du paramètre de modèle WAF Block Period. Cependant, l'augmentation de la quantité de données analysées augmentera probablement le coût d'Athena.

Pour plus d'informations, consultez Estimation du coût d'Amazon Athena.

Création d'une règle de correspondance géographique pour bloquer les mauvaises demandes provenant d'un pays qui n'est pas prévu pour votre entreprise

Créez un ou plusieurs énoncés de règle de correspondance géographique pour autoriser ou bloquer les demandes Web en fonction du pays d'origine.

Pour créer une règle de correspondance géographique dans la console AWS WAF :

  1. Ouvrez la console AWS WAF.
  2. Sélectionnez la Web ACL (liste ACL Web), sélectionnez Regular rule (Règle régulière) et créez une règle de Geo Match (Correspondance géographique).
  3. Dans Request options (Options de demande), sélectionnez Originates from a country in (Provient d'un pays dans) et choisissez le ou les codes de pays dans la liste déroulante.
  4. Définissez l'action de la règle sur BLOCK (BLOQUER).
  5. Sélectionnez Add rule (Ajouter une règle).

Création d'une règle de correspondance de jeu d'adresses IP pour bloquer les mauvaises demandes basées sur les adresses IP

Créez un énoncé de la règle de correspondance de jeu d'adresses IP pour autoriser ou bloquer les demandes Web en fonction des adresses IP d'où proviennent les demandes. Une condition de correspondance IP répertorie jusqu'à 10 000 adresses IP ou plages d'adresses IP d'où proviennent vos demandes. Plus tard dans le processus, lorsque vous créez une liste ACL Web, vous pouvez spécifier d'autoriser ou de bloquer les demandes provenant de ces adresses IP.

Pour créer une règle de correspondance IP dans la console AWS WAF :

  1. Ouvrez la console AWS WAF.
  2. Choisissez Create an IP set (Créer un jeu d'adresses IP) et ajoutez les adresses IP à la liste.
  3. Sélectionnez la liste ACL Web, puis sélectionnez Regular rule (Règle régulière), Create an IP match rule (Créer une règle de correspondance IP).
  4. Dans Request options (Options de demande), sélectionnez Originates from an IP address in (Provient d'une adresse IP dans) et choisissez le jeu d'adresses IP créé à l'étape 2.
  5. Définissez l'action de la règle sur BLOCK (BLOQUER).
  6. Sélectionnez Add Rule (Ajouter une règle).

Pour plus d'informations, consultez Création et gestion d'un jeu d'adresses IP.

Création d'une règle de correspondance de chaîne pour bloquer les mauvaises demandes

Lors d'une attaque DDoS, il n'y a généralement pas une seule adresse IP source, ce qui rend difficile le filtrage basé sur une seule ou quelques adresses IP. Dans ces scénarios, il est important que toutes les sections de la demande soient évaluées pour identifier tout modèle distinctif entre une bonne et une mauvaise demande. La création d'une règle de correspondance de chaîne ou d'une règle de correspondance regex est un moyen efficace de bloquer les mauvaises demandes.

Par exemple, si les mauvaises demandes proviennent de User-Agent: BadBot, vous pouvez créer une règle de correspondance de chaîne basée sur les détails de l'en-tête.

Pour créer une règle de correspondance de chaîne dans la console AWS WAF :

  1. Ouvrez la console AWS WAF.
  2. Sélectionnez la liste ACL Web, puis sélectionnez Regular rule (Règle régulière), Create a String Match rule (Créer une règle de correspondance de chaîne).
  3. Sous Request options (Options de demande), sélectionnez les options suivantes :
    Pour Inspect (Inspecter), sélectionnez Header (En-tête).
    Pour Header field name (Nom du champ En-tête), saisissez User-Agent.
    Pour Match type (Type de correspondance), sélectionnez Exactly matches string (Correspondance exacte de la chaîne).
    Pour String to match (Chaîne à correspondre), saisissez Badbot.
  4. Définissez l'action de la règle sur BLOCK (BLOQUER).
  5. Sélectionnez Add rule (Ajouter une règle).

Création d'une règle de correspondance regex pour bloquer les mauvaises demandes

Un énoncé de la règle de correspondance regex indique à AWS WAF de faire correspondre un composant de la demande à une seule expression régulière (regex). Une demande Web correspond à l'énoncé si le composant de la demande correspond au regex que vous spécifiez.

Pour créer une règle de correspondance regex dans la console AWS WAF :

  1. Ouvrez la console AWS WAF.
  2. Sélectionnez la liste ACL Web, puis sélectionnez Regular rule (Règle régulière), Create a String Match rule (Créer une règle de correspondance de chaîne).
  3. Sous Request options (Options de demande), sélectionnez les options suivantes :
    Pour Inspect (Inspecter), sélectionnez URI path (Chemin d'accès URI).
    Pour Match type (Type de correspondance), sélectionnez Matches regular expression (Correspond à l'expression régulière).
    Pour String to match (Chaîne à correspondre), saisissez l'expression régulière.
  4. Définissez l'action de la règle sur BLOCK (BLOQUER).
  5. Sélectionnez Add rule (Ajouter une règle).

Cet article vous a-t-il été utile ?


Avez-vous besoin d'aide pour une question technique ou de facturation ?