À 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
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
- Accédez à la console AWS WAF pour créer une ACL Web.
- Choisissez Créer web ACL.
- Donnez un nom à l'ACL Web. Sélectionnez la région de l'équilibreur de charge d'applications.
- Associez l'équilibre de charge de l'application à l'ACL Web.
- Choisissez Suivant.
Ajouter une règle personnalisée à l'ACL Web
Continuez à configurer comme suit :
- Choisissez Ajouter une règle. Sélectionnez Ajouter mes propres règles et groupes de règles dans la liste déroulante.
- Sous Générateur de règles, ajoutez une règle.
- Nommez la règle (par exemple, deny_User-Agent_with_POST).
- Sous Type, sélectionnez Règle normale.
Configurer les critères de correspondance pour la règle
Effectuez les étapes restantes :
-
Sélectionnez correspond à au moins l'une des déclarations (OR).
-
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
-
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.