Comment utiliser AWS WAF avec AWS Global Accelerator pour empêcher la méthode HTTP de couche 7 et les en-têtes d'accéder à mon application ?

Lecture de 4 minute(s)
0

À l'aide de l’Application Load Balancer compatible AWS WAF avec AWS Global Accelerator, je souhaite bloquer les demandes adressées à mon application si la méthode de demande est POST ou si la valeur de l'en-tête de l'agent utilisateur correspond à curl/7.79.

Brève description

Vous pouvez utiliser AWS WAF et l’Application Load Balancer avec Global Accelerator pour bloquer l'accès à la méthode HTTP et aux en-têtes de couche 7. Dans cette architecture, AWS WAF utilise les règles de la liste de contrôle d'accès Web (ACL Web) avec l'Application Load Balancer. L'équilibreur de charge devient le point de terminaison du Global Accelerator.
**Remarque :**AWS Global Accelerator lui-même ne prend pas en charge AWS WAF.

La règle Web ACL associée à l'équilibreur de charge évalue le trafic entrant et transmet uniquement les demandes conformes aux règles au point de terminaison.

Résolution

La règle de l'ACL Web permet un contrôle précis de toutes les requêtes Web HTTP (S) adressées à vos ressources protégées. Utilisez la règle pour configurer une chaîne ou une correspondance regex avec un ou plusieurs attributs de requête, tels que l'identifiant de ressource uniforme (URI), la chaîne de requête, la méthode HTTP ou la clé d'en-tête.

Prérequis

  • Assurez-vous de disposer de la configuration de flux de trafic suivante pour Global Accelerator, Application Load Balancer et AWS WAF :
    User --> Global Accelerator --> Application Load Balancer with AWS WAF --> EC2 instance
    Remarque : Dans cette configuration, l'utilisateur accède à l'application en faisant une demande à l'accélérateur. L'accélérateur achemine le trafic utilisateur vers l’Application Load Balancer et vers AWS WAF qui lui est associé. AWS WAF évalue et bloque ou autorise la demande utilisateur utilisant la méthode HTTP de couche 7 ou la valeur d'en-tête de l'agent utilisateur.

Création d'une ACL Web basée sur des règles

Utilisez le processus en 3 étapes suivant pour créer une ACL Web basée sur des règles. Pour plus d'informations, consultez la section Création d’une ACL Web.

Créer une ACL Web

  1. Accédez à la console AWS WAF pour créer une ACL Web.
  2. Choisissez Créer web ACL.
  3. Donnez un nom à l'ACL Web. Sélectionnez la région de l'équilibreur de charge d'applications.
  4. Associez l'équilibre de charge de l'application à l'ACL Web.
  5. Choisissez Suivant.

Ajouter une règle personnalisée à l'ACL Web

Continuez à configurer comme suit :

  1. Choisissez Ajouter une règle. Sélectionnez Ajouter mes propres règles et groupes de règles dans la liste déroulante.
  2. Sous Générateur de règles, ajoutez une règle.
  3. Nommez la règle (par exemple, deny_User-Agent_with_POST).
  4. Sous Type, sélectionnez Règle normale.

Configurer les critères de correspondance pour la règle

Effectuez les étapes restantes :

  1. Sélectionnez correspond à au moins l'une des déclarations (OR).

  2. Sous déclaration1 complétez comme suit :
    **Inspectez : ** en-tête unique
    **Nom du champ d'en-tête :**Agent utilisateur
    **Type de correspondance :**Correspond exactement à la chaîne
    **Chaîne correspondante : ** curl/7.79.0

    Sous déclaration2 complétez comme suit :
    **Inspectez :**Méthode HTTP
    **Type de correspondance :**Correspond exactement à la chaîne
    **Chaîne à faire correspondre :**POSTER

  3. Choisissez Bloquer pour agir.

Testez les résultats avec la valeur d'en-tête de l'agent utilisateur

Accédez à l'application à l'aide de l'URL du Global Accelerator et de la valeur d'en-tête de l'agent utilisateur curl/7.79.0, avec la méthode de requête GET.

curl http://<your Global Accelerator URL> -v -H "User-Agent:curl/7.79.0"
> GET / HTTP/1.1
> Host: <your Global Accelerator DNS>
> User-Agent:curl/7.79.0

< HTTP/1.1 403 Forbidden  
< Server: awselb/2.0
<
<html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
</body>
</html>

Remarque : Remplacez <your Global Accelerator URL> par l'URL de votre Global Accelerator. Remplacez <your Global Accelerator DNS> par votre DNS.

Notez qu'AWS WAF a bloqué la demande et que l’Application Load Balancer a répondu avec le message 403 Forbidden.

Testez les résultats avec une requête POST

Accédez à l'application à l'aide de l'URL du Global Accelerator et de la valeur d'en-tête de l'agent utilisateur curl/7.79.1, avec la méthode de requête POST.

curl -X POST http://<your Global Accelerator URL> --user "test-user:test-password" -v
> POST / HTTP/1.1
> Host: <your Global Accelerator DNS>
> Authorization: Basic dGVzdC11c2VyOnRlc3QtcGFzc3dvcmQ=
> User-Agent: curl/7.79.1
>
< HTTP/1.1 403 Forbidden
< Server: awselb/2.0
<html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
</body>
</html>

Remarque : Remplacez <your Global Accelerator URL> par l'URL de votre Global Accelerator. Remplacez <your Global Accelerator DNS> par votre DNS.

Notez qu'AWS WAF a bloqué la demande et que l’Application Load Balancer a répondu par un message 403 Forbidden.

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an