Comment utiliser AWS WAF pour bloquer les requêtes HTTP qui ne contiennent pas d'en-tête User-Agent ?

Date de la dernière mise à jour : 22/10/2020

Je souhaite bloquer les requêtes HTTP qui n'ont pas d'en-tête User-Agent ou dont la valeur d'en-tête User-Agent est vide. Comment puis-je utiliser AWS WAF ou AWS WAF Classic pour bloquer ces requêtes ?

Brève description

Par défaut, les filtres AWS WAF ne vérifient pas si les paramètres de requêtes HTTP sont présents ou non. Toutefois, vous pouvez créer une règle avec des conditions pour vérifier ces paramètres.

Avec AWS WAF, vous pouvez utiliser les conditions suivantes :

Avec AWS WAF Classic, vous pouvez utiliser les conditions suivantes :

Résolution

Si vous utilisez AWS WAF, choisissez l'une des deux options suivantes.

Option 1 : Créer une règle avec un jeu de modèles regex

Tout d'abord, créez le jeu de modèles regex :

  1. Ouvrez la console AWS WAF.
  2. Dans le volet de navigation, sous AWS WAF, choisissez Regex pattern sets (Jeux de modèles regex).
  3. Pour Region (Région), sélectionnez la région dans laquelle vous avez créé votre liste de contrôle d'accès web (ACL web).
    Remarque : sélectionnez Global si votre liste ACL web est configurée pour Amazon CloudFront.
  4. Choisissez Create regex pattern sets (Créer des jeux de modèles regex).
  5. Pour Regex pattern set name (Nom de jeu de modèles regex), entrez testpattern.
  6. Pour Regular expressions (Expressions régulières), entrez .+
  7. Choisissez Create regex pattern set (Créer un jeu de modèles regex).

Ajoutez le modèle regex défini à votre ACL web :

  1. Dans le volet de navigation, sous AWS WAF, choisissez Web ACLs (ACL web).
  2. Pour Region (Région), sélectionnez la région dans laquelle vous avez créé votre liste ACL web.
    Remarque : sélectionnez Global si votre liste ACL web est configurée pour Amazon CloudFront.
  3. Sélectionnez votre liste ACL web.
  4. Choisissez Rules (Règles), puis Add Rules (Ajouter des règles), et ensuite Add my own rules and rule groups (Ajouter mes propres règles et groupes de règles).
  5. Pour Name (Nom), entrez UA-Rule (Règle UA).
  6. Pour If a request (Si une requête), choisissez doesn’t match the statement(NOT) [ne correspond pas à l'instruction (NOT)].
  7. Pour Statement (Instruction), choisissez Inspect header (Inspecter l'en-tête).
  8. Pour Header field name (Nom du champ En-tête), entrez User-Agent.
  9. Pour Match type (Type de correspondance), choisissez Matches pattern from regex pattern set (Correspond au modèle du jeu de modèles regex).
  10. Pour Regex pattern set (Jeu de modèles regex), choisissez testpattern.
  11. Pour Text transformation (Transformation de texte), conservez la valeur par défaut None (Aucune).
  12. Pour Action, conservez la valeur par défaut Block (Bloquer).
  13. Choisissez Add rule (Ajouter une règle).
  14. Choisissez la priorité de la règle dans la liste ACL web.
  15. Choisissez Save (Enregistrer).

Option 2 : Créer une règle avec une condition de contrainte de taille

Remarque : par défaut, le nombre de jeux de modèles regex par compte est de 10. Si vous avez dépassé cette limite AWS WAF, vous pouvez utiliser la solution de contrainte de taille suivante.

  1. Ouvrez la console AWS WAF.
  2. Dans le volet de navigation, sous AWS WAF, choisissez Web ACLs (ACL web).
  3. Pour Region (Région), sélectionnez la région dans laquelle vous avez créé votre liste ACL web.
    Remarque : sélectionnez Global si votre liste ACL web est configurée pour Amazon CloudFront.
  4. Sélectionnez votre liste ACL web.
  5. Choisissez Rules (Règles), puis Add Rules (Ajouter des règles), et ensuite Add my own rules and rule groups (Ajouter mes propres règles et groupes de règles).
  6. Pour Name (Nom), entrez UA-Rule2 (Règle UA 2).
  7. Pour If a request (Si une requête), choisissez doesn’t match the statement(NOT) [ne correspond pas à l'instruction (NOT)].
  8. Pour Statement (Instruction), choisissez Inspect header (Inspecter l'en-tête).
  9. Pour Header field name (Nom du champ En-tête), entrez User-Agent.
  10. Pour Match type (Type de correspondance), choisissez Size greater than or equal to (Taille supérieure ou égale à).
  11. Pour Size (Taille), entrez 0 (zéro).
  12. Pour Text transformation (Transformation de texte), conservez la valeur par défaut None (Aucune).
  13. Pour Action, conservez la valeur par défaut Block (Bloquer).
  14. Choisissez Add rule (Ajouter une règle).
  15. Sélectionnez un emplacement dans la liste ACL web pour enregistrer la règle.
  16. Choisissez Save (Enregistrer).

Remarque : utilisez le jeu de règles de base (CRS) dans votre liste ACL web. Ce jeu de règles gérées AWS contient une règle qui bloque les requêtes ne contenant pas d'agent utilisateur. Notez que l'ajout de règles gérées AWS utilise les unités de capacité WAF (WCU) de la liste ACL web.

Si vous utilisez AWS WAF Classic, choisissez l'une des deux options suivantes.

Option 1 : Créer une règle avec une condition de correspondance regex

Tout d'abord, créez la condition de correspondance regex :

  1. Ouvrez la console AWS WAF.
  2. Choisissez Switch to AWS WAF Classic (Basculer vers AWS WAF Classic).
  3. Dans le volet de navigation, choisissez String and Regex matching (Correspondance de chaînes et de regex).
  4. Choisissez Create condition (Créer une condition).
  5. Pour Name (Nom), entrez UA-condition.
  6. Pour Region (Région), choisissez la région dans laquelle vous avez créé votre liste ACL web.
    Remarque : sélectionnez Global si votre liste ACL web est configurée pour Amazon CloudFront.
  7. Pour Type, choisissez Regex match (Correspondance regex).
  8. Pour Part of the request to filter on (Partie de la requête à filtrer), choisissez Header (En-tête).
  9. Pour Header (En-tête), choisissez User-Agent.
  10. Pour Transformation, choisissez None (Aucune).
  11. Pour Regex patterns to match to request (Modèles regex à faire correspondre à la requête), conservez la sélection par défaut Create regex pattern set (Créer un jeu de modèles regex).
  12. Pour New pattern set name (Nouveau nom de jeu de modèles), entrez testpattern.
  13. Entrez une expression régulière .+, puis choisissez le symbole plus (+).
    Remarque : l'expression régulière (regex) correspond à n'importe quel caractère, à l'exception d'un terminateur de ligne.
  14. Choisissez Create pattern set and add filter (Créer un jeu de modèles et ajouter un filtre).
  15. Choisissez Create (Créer).

Ensuite, créez une règle et ajoutez-lui la condition :

  1. Dans le volet de navigation, choisissez Rules (Règles).
  2. Choisissez Create rule (Créer une règle).
  3. Pour Name (Nom), entrez UA-Rule (Règle UA).
    Remarque : le nom de la métrique Amazon CloudWatch est automatiquement renseigné en fonction de votre saisie dans le champ Name (Nom).
  4. Pour Rule type (Type de règle), choisissez Regular rule (Règle régulière).
  5. Pour Region (Région), choisissez la région dans laquelle vous avez créé votre liste ACL web.
    Remarque : sélectionnez Global si votre liste ACL web est configurée pour CloudFront.
  6. Pour Add conditions (Ajouter des conditions), choisissez does not (ne pas) et faites correspondre au moins l'un des filtres de la condition de correspondance de chaîne.
  7. Choisissez UA-condition (Condition UA) dans le menu déroulant des conditions.
  8. Choisissez Create (Créer).

Enfin, ajoutez cette règle à votre liste ACL web :

  1. Dans le volet de navigation, choisissez Web ACLs (ACL web).
  2. Choisissez le nom de votre ACL web.
  3. Sélectionnez l'onglet Rules (Règles), puis choisissez Edit web ACL (Modifier l'ACL web).
  4. Pour Rules (Règles), choisissez UA-Rule (Règle UA).
  5. Choisissez Add rule to web ACL (Ajouter une règle à l'ACL web).
  6. Vérifiez que Block (Bloquer) est sélectionné pour Action.
  7. Pour Default action (Action par défaut), choisissez Allow all requests that don't match any rules (Autoriser toutes les requêtes qui ne correspondent à aucune règle).
  8. Choisissez Update (Mettre à jour).

Option 2 : Créer une règle avec une condition de contrainte de taille

Remarque : par défaut, le nombre de jeux de modèles par compte est de 5. Si vous avez dépassé cette limite AWS WAF, vous pouvez utiliser la solution de contrainte de taille suivante.

Commencez par créer la condition de contrainte de taille :

  1. Ouvrez la console AWS WAF.
  2. Cliquez sur Switch to AWS WAF Classic (Basculer vers AWS WAF Classic).
  3. Dans le volet de navigation, choisissez Size constraints (Contraintes de taille).
  4. Choisissez Create condition (Créer une condition).
  5. Pour Name (Nom), entrez UA-condition2 (Condition UA 2).
  6. Pour Region (Région), choisissez la région dans laquelle vous avez créé votre liste ACL web.
    Remarque : sélectionnez Global si votre liste ACL web est configurée pour CloudFront.
  7. Pour Part of the request to filter on (Partie de la requête à filtrer), choisissez Header (En-tête).
  8. Pour Header (En-tête), entrez User-Agent.
  9. Pour Comparison operator (Opérateur de comparaison), choisissez Greater than or equal (Supérieur ou égal).
  10. Pour Size (Bytes) (Taille [octets]), conservez la valeur par défaut 0.
  11. Pour Transformation, choisissez None (Aucune).
  12. Choisissez Add filter (Ajouter un filtre).
  13. Choisissez Create (Créer).

Ensuite, créez une règle et ajoutez-lui la condition :

  1. Dans le volet de navigation, choisissez Rules (Règles).
  2. Choisissez Create rule (Créer une règle).
  3. Pour Name (Nom), entrez UA-Rule2 (Règle UA 2).
    Remarque : le nom de la métrique CloudWatch est automatiquement renseigné en fonction de votre saisie dans le champ Name (Nom).
  4. Pour Rule type (Type de règle), choisissez Regular rule (Règle régulière).
  5. Pour Region (Région), choisissez la région dans laquelle vous avez créé votre liste ACL web.
    Remarque : sélectionnez Global si votre liste ACL web est configurée pour CloudFront.
  6. Pour Add conditions (Ajouter des conditions), choisissez does not (ne pas) et faites correspondre au moins l'un des filtres de la condition de contrainte de taille.
  7. Choisissez UA-condition2 (Condition UA 2) dans le menu déroulant des conditions.
  8. Choisissez Create (Créer).

Enfin, ajoutez cette règle à votre liste ACL web :

  1. Dans le volet de navigation, choisissez Web ACLs (ACL web).
  2. Choisissez le nom de votre ACL web.
  3. Sélectionnez l'onglet Rules (Règles), puis choisissez Edit web ACL (Modifier l'ACL web).
  4. Pour Rules (Règles), choisissez UA-Rule (Règle UA).
  5. Choisissez Add rule to web ACL (Ajouter une règle à l'ACL web).
  6. Vérifiez que Block (Bloquer) est sélectionné pour Action.
  7. Pour Default action (Action par défaut), choisissez Allow all requests that don't match any rules (Autoriser toutes les requêtes qui ne correspondent à aucune règle).
  8. Choisissez Update (Mettre à jour).

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


Besoin d'aide pour une question technique ou de facturation ?