Comment puis-je configurer AWS WAF pour protéger mes ressources contre les attaques courantes ?
Comment puis-je configurer AWS WAF pour protéger mes ressources contre les attaques courantes ?
Résolution
Migrer d’AWS WAF Classic vers AWS WAF (le cas échéant)
Si vous utilisez AWS WAF Classic, nous vous recommandons de migrer vers AWS WAF. Pour effectuer cette migration, vous pouvez utiliser l’outil de migration automatique. Pour en savoir plus, consultez Pourquoi migrer vers AWS WAF ?
Effectuer le test de pénétration sur votre application pour identifier les vulnérabilités
Chaque application reçoit son propre type de requêtes. Ainsi, les règles du pare-feu qui protègent votre application doivent être personnalisées.
Effectuer le test de pénétration sur votre application pour en comprendre les vulnérabilités spécifiques. Pour en savoir plus, consultez :
- Politique de prise en charge du client AWS en matière de test de pénétration
- Fournisseurs de test de pénétration sur AWS Marketplace
Examiner les requêtes entrantes afin d’optimiser vos règles personnalisées
Avant de définir des règles personnalisées pour protéger votre application, examinez les requêtes entrantes dans votre environnement.
Commencez par générer des journaux à l’aide de :
- AWS WAF
- Amazon CloudFront
- Application Load Balancer
- Amazon API Gateway
Stockez ensuite ces journaux sur Amazon Simple Storage Service (Amazon S3). Enfin, utilisez Amazon Athena pour interroger les journaux et identifier des modèles. Vous pouvez par exemple consulter des modèles comme :
-
requêtes adressées à votre environnement pour des URI qui n’existent pas
-
Pour reconnaître ce modèle, vous devez connaître tous les URI pris en charge
-
Exemple de requête Athena exécutée sur les journaux AWS WAF pour compter les requêtes associées à chaque URI :
SELECT count("httprequest"."uri") as URIcount, "httprequest"."uri" FROM waf_logs GROUP BY "httprequest"."uri" ORDER BY URIcount DESC
-
requêtes contenant un en-tête HTTP Host non pris en charge par votre serveur Web -OU- requêtes contenant une adresse IP au lieu du nom de domaine de votre site Web
-
Exemple de requête Athena exécutée sur les journaux AWS WAF pour compter les requêtes avec différentes valeurs d’en-tête Host :
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
Après avoir identifié un modèle, vous pouvez créer des règles AWS WAF en mode COUNT pour vous assurer que la règle est bien configurée pour correspondre à ces requêtes. Faites passez ensuite la règle en mode BLOCK.
Par exemple, si votre application prend en charge uniquement l’en-tête Host « www.exemple.com » :
- Créez un NOT match sur l’en-tête HOST avec la valeur « www.exemple.com »
- Définissez l’action sur BLOCK
Toutes les requêtes adressées à votre environnement qui n’ont pas d’en-tête Host « www.exemple.com » sont désormais bloquées.
Remarque : cette règle bloque également les requêtes vers le nom de domaine complet qualifié (FQDN) fourni par AWS.
Utiliser les règles gérées AWS pour vous protéger contre les attaques courantes
Utilisez les règles gérées AWS pour empêcher les attaques courantes qui s’appliquent à la plupart des applications, notamment les requêtes qui :
- ne contiennent pas d’agent utilisateur
- représentent les requêtes des robots
- utilisent « localhost » comme en-tête HTTP Host
- utilisent la méthode HTTP PROPFIND
Incluez ces groupes de règles de base dans votre liste de contrôle d’accès Web (ACL Web) en mode COUNT. Choisissez bien « Activer le mode Count » dans le groupe de règles. Examinez ensuite les journaux AWS WAF et les métriques CloudWatch pour déterminer si la règle gérée correspond à un trafic légitime. Dans le cas contraire, faites passer le groupe de règles en mode BLOCK en désactivant « Activer le mode Count ». Pour désactiver une règle spécifique dans le groupe de règles gérées AWS, choisissez « Annuler l’action des règles » pour cette règle.
Remarque : les règles définies dans Règles gérées d’AWS pourraient être déclenchées par des requêtes légitimes adressées à votre environnement. Pour plus d’informations, consultez Comment puis-je détecter les faux positifs causés par les Règles gérées d’AWS et les ajouter à une liste blanche ?
Important : les Règles gérées d’AWS sont conçues pour vous protéger contre les menaces Web courantes. Lorsqu’ils sont utilisés conformément à la documentation, les groupes de règles gérées AWS ajoutent une couche de sécurité supplémentaire à vos applications. Toutefois, les groupes de règles des Règles gérées d’AWS ne sont pas conçus pour remplacer vos responsabilités en matière de sécurité. Celles-ci sont déterminées par les ressources AWS que vous sélectionnez. Consultez le modèle de responsabilité partagée pour vérifier que vos ressources dans AWS sont bien protégées.
Prendre comme référence votre AWS WAF en utilisant le taux de requêtes légitimes
Effectuez une analyse de votre trafic afin d’identifier le nombre de requêtes effectuées par des adresses IP de clients légitimes à l’aide d’Amazon Athena ou d’Amazon Quicksight dans les journaux AWS WAF. En vous servant des informations obtenues grâce à cette analyse, établissez une base de référence pour votre AWS WAF en fonction du taux de requêtes formulées par un client légitime. Définissez ensuite un seuil lors de la configuration de la règle fréquentielle AWS WAF.
Exemple de requête Athena exécutée sur les journaux AWS WAF pour compter le nombre de requêtes provenant d’une seule adresse IP (x.x.x.x) dans une période donnée (16 novembre 2020 9 h à 10 h) :
SELECT "httprequest"."clientip", "count"(*) "count", "httprequest"."country" FROM waf_logs WHERE httprequest.clientip LIKE 'x.x.x.x' 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"
Exemple de requête Athena exécutée sur les journaux AWS WAF pour compter le nombre de requêtes provenant de toutes les adresses IP au cours de la même période :
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
Utiliser le modèle AWS WAF Security Automations pour empêcher les attaques courantes
Utilisez le modèle ](https://aws.amazon.com/solutions/implementations/aws-waf-security-automations/)AWS WAF Security Automations[ pour fournir une protection supplémentaire contre les attaques courantes. Vous pouvez par exemple activer la protection contre :
- les scanners et les sondes
- les robots malveillants
- les adresses IP erronées
Remarque : cette solution utilise d’autres services AWS qui entraînent des coûts.
Protection contre les injections SQL et les scripts inter-site
Pour protéger vos applications contre les attaques par injection SQL et scripts inter-site (XSS), utilisez les moteurs d’injection SQL et de scripts inter-site intégrés. N’oubliez pas que les requêtes peuvent porter sur différentes parties de la requête HTTP, comme l’en-tête HTTP, la chaîne de requête ou l’URI. Configurez les règles AWS WAF pour examiner différentes parties de la requête HTTP par rapport aux moteurs d’atténuation intégrés.
Remarque : les règles des moteurs d’atténuation peuvent être déclenchées par des requêtes légitimes adressées à votre environnement. Pour en savoir plus, consultez Comment puis-je détecter les faux positifs causés par les Règles gérées d’AWS et les ajouter à une liste blanche ?
Restreindre l’accès à partir de CloudFront (si vous utilisez AWS WAF sur CloudFront)
- Restreignez l’accès en fonction des adresses IP CloudFront.
- 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 une passerelle d’API, utilisez AWS WAF sur l’origine pour autoriser les requêtes qui contiennent l’en-tête et la valeur personnalisés.
Se protéger contre les attaques par DDoS
Pour plus d’informations sur la protection contre les attaques par déni de service distribué (DDoS), consultez les meilleures pratiques AWS en matière de résilience aux DDoS et les fonctionnalités d’AWS Shield.
Vidéos associées
Contenus pertinents
- demandé il y a 5 moislg...
- demandé il y a 6 moislg...
- Réponse acceptéedemandé il y a un anlg...
- demandé il y a un anlg...
- AWS OFFICIELA mis à jour il y a 10 mois
- AWS OFFICIELA mis à jour il y a 2 ans
- AWS OFFICIELA mis à jour il y a 2 ans
- AWS OFFICIELA mis à jour il y a 2 ans