Get Hands-on with Amazon EKS - Workshop Event Series
Whether you're taking your first steps with Kubernetes or you're an experienced practitioner looking to sharpen your skills, our Amazon EKS workshop series delivers practical, real-world experience that moves you forward. Learn directly from AWS solutions architects and EKS specialists through hands-on sessions designed to build your confidence with Kubernetes. Register now and start building with Amazon EKS!
Comment configurer AWS WAF pour protéger mes ressources contre les attaques courantes ?
Je souhaite utiliser AWS WAF sur mes ressources afin de me protéger contre les attaques courantes.
Brève description
Pour utiliser AWS WAF sur vos ressources afin de vous protéger contre les attaques courantes, effectuez une ou plusieurs des actions suivantes :
- Migrez d'AWS WAF Classic vers AWS WAF.
- Associez votre ressource à une liste de contrôle d'accès Web (ACL Web) dans AWS WAF.
- Examinez les requêtes entrantes afin d’optimiser vos règles.
- Utilisez les règles gérées par AWS pour contribuer à la protection contre les attaques courantes.
- Utilisez le taux de requêtes légitimes pour établir une base de référence pour AWS WAF.
- Utilisez les automatisations de sécurité pour AWS WAF afin de prévenir les attaques courantes.
- Utilisez des instructions de règles d'attaque par injection SQL et par scripts inter-site (XSS).
- Restreignez l'accès depuis Amazon CloudFront.
- Protégez-vous contre les attaques par déni de service distribué (DDoS).
Résolution
Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes de l’interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre les erreurs liées à AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l'AWS CLI.
Migrer d'AWS WAF Classic vers AWS WAF
Si vous utilisez AWS WAF Classic, il est recommandé de migrer vers AWS WAF. Pour plus d’informations, consultez la section Pourquoi migrer vers AWS WAF ?
Associer votre ressource à une ACL Web
Tout d'abord, créez votre ACL Web dans AWS WAF. Puis, associez votre ressource à cette ACL Web afin de permettre à AWS WAF de surveiller les requêtes entrantes. Si vous ne pouvez pas intégrer directement votre ressource à AWS WAF, examinez les alternatives suivantes. Pour plus d'informations, consultez la section Ressources que vous pouvez protéger avec AWS WAF.
Ressources qui peuvent s'intégrer à AWS WAF
Pour les ressources qui peuvent s'intégrer à AWS WAF, utilisez l'une des options d’intégration suivantes :
- Pour la console AWS WAF, utilisez l'option Ressources AWS associées. Pour plus d’informations, consultez la section Créer une ACL Web.
- Pour l'AWS CLI, utilisez la commande associate-web-acl.
- Pour CloudFront, utilisez la commande update-distribution.
- Pour AWS Firewall Manager, utilisez la politique AWS WAF de Firewall Manager.
- Pour les applications AWS Amplify, associez directement l'application dans la console Amplify ou AWS WAF.
Ressources qui ne peuvent pas s’intégrer à AWS WAF
Pour les ressources qui ne peuvent pas s’intégrer directement à AWS WAF, utilisez l'une des options d’intégration suivantes :
- Pour les instances Amazon Elastic Compute Cloud (Amazon EC2), créez un Application Load Balancer ou une distribution CloudFront. Puis, associez la distribution à une ACL Web.
- Pour les clusters Amazon Elastic Kubernetes Service (Amazon EKS), créez un Application Load Balancer. Puis, associez l’Application Load Balancer à une ACL Web. Pour plus d'informations, consultez la section Protection de vos applications Web Amazon EKS avec AWS WAF.
- Pour les Network Load Balancers, créez un Application Load Balancer. Puis, définissez l’Application Load Balancer comme cible du Network Load Balancer et associez-le à une ACL Web. Pour plus d'informations, consultez la section Utiliser un Application Load Balancer comme cible d'un Network Load Balancer.
Examiner les requêtes entrantes afin d’optimiser vos règles
Pour protéger vos ressources, utilisez les journaux d’application, tels que les journaux d’accès de l’Application Load Balancer ou CloudFront, afin de déterminer les modèles de requête courants.
Remarque : Il est recommandé d'utiliser les journaux AWS WAF pour stocker, interroger et analyser les journaux de requêtes HTTP.
Après avoir déterminé les modèles de requête courants, stockez vos journaux sur Amazon Simple Storage Service (Amazon S3) ou Amazon CloudWatch. Pour interroger les journaux et identifier des modèles, utilisez Amazon Athena ou CloudWatch Logs Insights.
Enfin, créez une règle AWS WAF en mode Décompte qui vérifie les requêtes entrantes, puis définissez la règle sur Bloquer :
- Créez une instruction de règle NOT dans l'en-tête de l'hôte pour example.com.
Remarque : Remplacez example.com par votre en-tête d’hôte. - Définissez Action sur Bloquer. AWS WAF bloque les requêtes qui n’incluent pas l'en-tête d'hôte que vous avez spécifié.
Remarque : Cette règle bloque également les requêtes vers le nom de domaine complet qualifié (FQDN) fourni par AWS.
Les exemples suivants présentent des modèles de requête courants que vous pouvez rencontrer.
Requêtes pour des URI qui n'existent pas
Pour reconnaître ce modèle, vous devez connaître tous les URI pris en charge dans votre environnement. Voici un exemple de requête Athena sur les journaux AWS WAF qui comptabilise les requêtes pour chaque URI :
SELECT COUNT("httprequest"."uri") AS URIcount, "httprequest"."uri" FROM waf_logs GROUP BY "httprequest"."uri" ORDER BY URIcount DESC
Voici un exemple de requête CloudWatch sur les journaux AWS WAF qui comptabilise les requêtes pour chaque URI :
fields httpRequest.uri | stats count(*) as requestCount by httpRequest.uri | sort requestCount desc
Requêtes contenant différentes valeurs d'en-tête d'hôte
Ce modèle inclut les requêtes dotées d’un en-tête d'hôte HTTP que votre serveur Web ne prend pas en charge. Ce modèle inclut également les requêtes qui contiennent une adresse IP au lieu du nom de domaine de votre site Web.
Voici un exemple de requête Athena sur les journaux AWS WAF qui comptabilise les requêtes incluant différentes valeurs d'en-tête d'hôte :
SELECT header.value as HostHeader, count(header) as count FROM waf_logs, UNNEST(httprequest.headers) AS x(header) WHERE "header"."name" = 'Host' GROUP BY header ORDER BY count DESC
Voici un exemple de requête CloudWatch sur les journaux AWS WAF qui comptabilise les requêtes incluant différentes valeurs d'en-tête d'hôte :
fields @timestamp, @message | parse @message '{"name":"Host","value":"*"}' as host | stats count(*) as requestCount by host | sort requestCount desc
Utiliser les règles gérées par AWS pour vous protéger contre les attaques courantes
Pour utiliser les règles gérées par AWS, identifiez les modèles de requête courants et les attaques contre lesquelles vous souhaitez vous protéger. Puis, ajoutez les groupes de règles gérées par AWS pertinents. Pour vous protéger contre les tâches spécialisées, vous pouvez utiliser les groupes de règles suivants moyennant des frais supplémentaires :
- Groupe de règles de prévention de la fraude à la création de comptes AWS WAF Fraud Control (ACFP)
- Groupe de règles gérées par prévention contre le piratage de compte (ATP) AWS WAF Fraud Control
- Groupe de règles de contrôle des bots AWS WAF
Ajoutez les groupes de règles appropriés à votre ACL Web en mode Décompte. Puis, examinez les journaux AWS WAF et les métriques CloudWatch pour déterminer si la règle gérée correspond à un trafic légitime. Si la règle ne correspond pas à un trafic légitime, désactivez l’option Activer le mode Décompte afin que le groupe de règles bloque le trafic. Pour désactiver une règle spécifique dans le groupe de règles gérées par AWS, sélectionnez Annuler l’action des règles pour cette règle.
Remarque : Les requêtes légitimes adressées à votre environnement peuvent lancer les règles gérées par AWS. Pour plus d'informations, consultez la section Comment personnaliser le comportement des règles gérées par AWS pour AWS WAF.
Utiliser le taux de requêtes légitimes pour établir une base de référence pour votre AWS WAF
Pour vous protéger contre les attaques volumétriques, analysez votre trafic afin d'identifier le nombre de requêtes soumises par des adresses IP clients légitimes. Pour analyser votre trafic, utilisez CloudWatch Logs Insights, les requêtes Athena ou Amazon Quick Sight sur les journaux AWS WAF. Utilisez les informations de l'analyse pour établir une base de référence pour votre AWS WAF. Puis, configurez une instruction de règle fréquentielle pour définir un seuil de requête.
Voici un exemple de requête Athena sur les journaux AWS WAF qui comptabilise les requêtes provenant d'une adresse IP unique au cours d'une période donnée :
SELECT "httprequest"."clientip", "count"(*) "count", "httprequest"."country" FROM waf_logs WHERE httprequest.clientip LIKE '10.0.0.0' and date_format(from_unixtime("timestamp"/1000), '%Y-%m-%d %h:%i:%s') between '2020-11-16 09:00:00' and '2020-11-16 10:00:00' GROUP BY "httprequest"."clientip", "httprequest"."country"
Remarque : Remplacez 10.0.0.0 par votre adresse IP, et 2020-11-16 09:00:00 et 2020-11-16 10:00:00 par votre période.
Voici un exemple de requête CloudWatch Insights sur les journaux AWS WAF qui comptabilise les requêtes provenant d'une seule adresse IP :
fields httpRequest.clientIp, httpRequest.country | stats count(*) as requestCount by httpRequest.clientIp, httpRequest.country | filter httpRequest.clientIp = "10.0.0.0"
Remarque : Remplacez 10.0.0.0 par votre adresse IP.
Voici un exemple de requête Athena sur les journaux AWS WAF qui comptabilise toutes les requêtes provenant d'adresses IP au cours d'une période donnée :
SELECT "httprequest"."clientip", "count"(*) "count", "httprequest"."country" FROM waf_logs WHERE date_format(from_unixtime("timestamp"/1000), '%Y-%m-%d %h:%i:%s') BETWEEN '2020-11-16 09:00:00' AND '2020-11-16 10:00:00' GROUP BY "httprequest"."clientip", "httprequest"."country" ORDER BY "count" DESC
Remarque : Remplacez 2020-11-16 09:00:00 et 2020-11-16 10:00:00 par votre période.
Voici un exemple de requête CloudWatch Insights sur les journaux AWS WAF qui comptabilise les requêtes provenant d'adresses IP au cours d'une période donnée :
fields httpRequest.clientIp, httpRequest.country | stats count(*) as requestCount by httpRequest.clientIp, httpRequest.country | sort requestCount desc
Utiliser les automatisations de sécurité pour AWS WAF afin de prévenir les attaques courantes
Pour garantir une protection supplémentaire contre les attaques courantes, vous pouvez utiliser les automatisations de sécurité pour AWS WAF.
Remarque : Cette solution utilise d’autres services AWS susceptibles d’entraîner des coûts.
Utiliser les instructions de règles d’attaque par injection SQL et XSS
Pour protéger vos applications contre les attaques par injection SQL et les attaques XSS, utilisez des instructions de règles d'attaque intégrées pour l’injection SQL et XSS. Les attaques peuvent se produire sur différentes parties de la requête HTTP, telles que l'en-tête HTTP, la chaîne de requête ou l'URI. Configurez vos règles AWS WAF pour inspecter les différentes parties de la requête HTTP par rapport aux instructions des règles d'attaque.
Remarque : Les requêtes légitimes adressées à votre environnement peuvent déclencher les instructions de règles d'attaque. Pour plus d’informations, consultez la section Comment puis-je détecter les faux positifs causés par les règles gérées par AWS ?
Restreindre l'accès depuis CloudFront
Vous pouvez restreindre l’accès en fonction des adresses IP CloudFront. Puis, ajoutez un en-tête personnalisé dans CloudFront pour les requêtes d’origine. Sur l’origine, n’autorisez l’accès que si l’en-tête et la valeur personnalisés sont présents. Si l'origine est un Application Load Balancer ou un API Gateway, utilisez AWS WAF sur l'origine. Cette action autorise les requêtes contenant l'en-tête et la valeur personnalisés.
Protection contre les attaques par DDoS
Pour vous protéger contre les attaques par DDoS, consultez la section Bonnes pratiques d’AWS en matière de résilience face aux attaques DDoS et Fonctionnalités d’AWS Shield.
Informations connexes
- Balises
- AWS WAF
- Langue
- Français
Vidéos associées


Contenus pertinents
- demandé il y a un an
- demandé il y a 4 mois
- Réponse acceptéedemandé il y a 2 ans
- demandé il y a 10 mois
AWS OFFICIELA mis à jour il y a 8 mois
AWS OFFICIELA mis à jour il y a 7 mois
AWS OFFICIELA mis à jour il y a 3 mois
AWS OFFICIELA mis à jour il y a 7 mois