Je souhaite identifier la règle AWS WAF qui bloque ma requête ou répond par une erreur 403 Forbidden.
Brève description
Par défaut, AWS WAF renvoie une erreur « 403 Forbidden » pour les requêtes qui correspondent aux règles AWS WAF avec l'action Bloquer. Si vous configurez des réponses personnalisées pour les actions de blocage, AWS WAF renvoie la réponse que vous avez configurée.
Pour résoudre l'erreur « 403 Forbidden », utilisez des requêtes échantillonnées ou des journaux AWS WAF pour identifier la règle ou le groupe de règles AWS WAF qui bloque la requête. Puis, modifiez la règle pour autoriser votre requête.
Résolution
Utiliser des échantillons de requêtes
Si AWS WAF a bloqué votre requête au cours des 3 dernières heures, vous pouvez consulter un échantillon des requêtes Web bloquées. Si AWS WAF a bloqué votre requête il y a plus de 3 heures, renvoyez la même requête pour générer un nouvel échantillon de requête.
Dans la table Échantillons de requêtes, examinez les colonnes suivantes :
- Pour identifier la requête., examinez les colonnes Adresse IP source et URI.
- Pour identifier la règle ou le groupe de règles correspondant à la requête, examinez la colonne Nom de la métrique. Si un groupe de règles bloque la requête, utilisez la colonne Règle du groupe de règles pour identifier la règle.
- Pour confirmer que la règle est définie sur Bloquer, vérifiez la colonne Action.
Utiliser les journaux AWS WAF
Remarque : Si vous n’avez pas activé la journalisation AWS WAF au moment de votre requête, activez la journalisation AWS WAF et renvoyez la même requête.
Utilisez les requêtes de vos journaux AWS WAF pour identifier les requêtes bloquées. Pour interroger les journaux AWS WAF que vous stockez dans Amazon CloudWatch Logs, utilisez les requêtes Amazon CloudWatch Logs Insights. Pour interroger les journaux AWS WAF qui sont stockés dans Amazon Simple Storage Solution (Amazon S3), utilisez des requêtes Amazon Athena.
Exemples de requêtes CloudWatch Logs Insights
Pour obtenir les 10 règles de résiliation les plus importantes, exécutez la requête suivante :
fields terminatingRuleId
| stats count() as requestCount by terminatingRuleId
| sort requestCount desc
| limit 10
Pour récapituler les requêtes qu’AWS WAF a bloquées par adresse IP du client, pays, URI et règle, exécutez la requête suivante :
fields httpRequest.clientIp as ClientIP, httpRequest.country as Country, httpRequest.uri as URI, terminatingRuleId as Rule
| filter action = "BLOCK"
| stats count() as RequestCount by Country, ClientIP, URI, Rule
| sort RequestCount desc
Remarque : Dans la sortie, le champ terminatingRuleId identifie la règle ou le groupe de règles AWS WAF qui bloque la requête.
Exemple de requête Athena
Pour les journaux AWS WAF que vous stockez dans un compartiment Amazon S3, utilisez Athena pour créer une table AWS WAF qui interroge les journaux et filtre les détails. Pour plus d'informations, reportez-vous à la section Interroger les journaux AWS WAF. Exécutez ensuite des requêtes sur la table.
Par exemple, pour afficher le nombre de requêtes qu’AWS WAF a bloquées en fonction de l'adresse IP et du pays du client, exécutez la requête suivante :
SELECT "httprequest"."clientip"
,"count"(*) "count"
, "httprequest"."country"
FROM
waf_logs
WHERE ("action" LIKE 'BLOCK')
GROUP BY "httprequest"."clientip", "httprequest"."country"
ORDER BY "count" DESC
Modifier la règle AWS WAF pour autoriser votre requête
Si la règle de blocage fait partie d'un groupe de règles Règles gérées par AWS, personnalisez le comportement de la règle.
Si la règle de blocage est une règle personnalisée, mettez à jour les paramètres de votre règle pour utiliser une instruction de règle afin d'autoriser la requête.
Informations connexes
Comment puis-je activer la journalisation AWS WAF et envoyer les journaux vers CloudWatch, Amazon S3 ou Firehose ?
Comment analyser les journaux AWS WAF dans CloudWatch ?