Bloquer des attaques DoS et DDoS à l’aide de règles de filtrage du trafic
Découvrez comment bloquer des attaques par déni de service (DoS) et par déni de service distribué (DDoS) à l’aide de règles de règles de filtrage du trafic limitant le débit et d’autres stratégies sur le réseau de diffusion de contenu géré par AEM as a Cloud Service (AEMCS). Ces attaques provoquent des pics de trafic sur le réseau de diffusion de contenu et potentiellement sur le service de publication AEM (soit l’origine) et peuvent avoir un impact sur la réactivité et la disponibilité du site.
Ce tutoriel sert de guide pour savoir comment analyser vos modèles de trafic et configurer des règles de filtrage du trafic limitant le débit pour réduire l’impact de ces attaques. Le tutoriel décrit également comment configurer des alertes afin de vous avertir en cas de suspicion d’attaque.
Présentation des protections
Examinons les protections par défaut contre les attaques DDoS de votre site web AEM :
- Mise en cache : avec de bonnes politiques de mise en cache, l’impact d’une attaque DDoS est plus limité, car le réseau de diffusion de contenu empêche la plupart des demandes d’accéder au point d’origine et d’entraîner une dégradation des performances.
- Mise à l’échelle automatique : les services de création et de publication d’AEM adaptent automatiquement leur échelle pour gérer les pics de trafic, mais des augmentations soudaines et massives du trafic peuvent quand même les affecter.
- Blocage : le réseau de diffusion de contenu Adobe bloque le trafic vers le point d’origine s’il dépasse un débit défini par Adobe à partir d’une adresse IP spécifique, par PoP (Point de présence) du réseau de diffusion de contenu.
- Alertes : le Centre d’actions envoie une notification d’alerte de pic de trafic au point d’origine lorsque le trafic dépasse un certain débit. Cette alerte se déclenche lorsque le trafic sur un réseau de diffusion de contenu donné dépasse une valeur de taux de requêtes par adresse IP définie par Adobe. Voir Alertes des règles de filtrage de trafic pour plus d’informations.
Ces protections intégrées doivent être considérées comme une référence pour la capacité d’une organisation à minimiser l’impact d’une attaque DDoS sur les performances. Chaque site web ayant des caractéristiques de performances différentes et pouvant ainsi subir une dégradation des performances avant que la limite de débit définie par Adobe ne soit atteinte, il est recommandé d’étendre les protections par défaut via la configuration des clientes et clients.
Voici quelques autres mesures recommandées que les clientes et clients peuvent prendre pour protéger leurs sites contre les attaques DDoS :
- Déclarer des règles de filtrage du trafic limitant le débit pour bloquer le trafic qui dépasse un certain débit à partir d’une seule adresse IP, par PoP. Il s’agit généralement d’un seuil inférieur à la limite de débit définie par Adobe.
- Configurer des alertes pour les règles de filtrage du trafic limitant le débit via une « action d’alerte ». Ainsi, lorsque la règle se déclenche, une notification est envoyée par le Centre d’actions.
- Augmenter la couverture du cache en déclarant des transformations de requêtes pour ignorer des paramètres de requête.
Variantes des règles de filtrage du trafic limitant le débit rate-limit-variations
Il existe deux variantes des règles de filtrage du trafic limitant le débit :
- Edge : bloque les requêtes en fonction du débit de la totalité du trafic (y compris celui qui peut être issu du cache du réseau de diffusion de contenu), pour une adresse IP donnée, par PoP.
- Origine : bloque les requêtes en fonction du débit du trafic à destination de l’origine, pour une adresse IP donnée, par PoP.
Parcours des clientes et clients
Les étapes ci-dessous illustrent le processus possible que les clientes et les clients doivent suivre pour protéger leurs sites web.
- Reconnaissez la nécessité d’une règle de filtrage du trafic limitant le débit. Cela peut être dû à une réception de l’alerte Adobe intégrée de pic de trafic au niveau de l’origine, ou il peut s’agir d’une décision proactive de prendre des précautions pour réduire le risque d’un DDoS.
- Analysez les modèles de trafic à l’aide d’un tableau de bord, si votre site est déjà actif, afin de déterminer les seuils optimaux pour vos règles de filtrage du trafic limitant le débit. Si votre site n’est pas encore actif, sélectionnez des valeurs en fonction de votre estimation du trafic.
- À l’aide des valeurs de l’étape précédente, configurez les règles de filtrage du trafic limitant le débit. Activez les alertes correspondantes afin de recevoir une notification dès que le seuil est atteint.
- Recevez des alertes de filtrage du trafic à chaque fois que des pics de trafic se produisent, ce qui vous permet de savoir si votre entreprise est potentiellement ciblée par des menaces malveillantes.
- Agissez en réponse à l’alerte si nécessaire. Analysez le trafic pour déterminer si le pic reflète des requêtes légitimes plutôt qu’une attaque. Augmentez les seuils si le trafic est légitime ou réduisez-les si ce n’est pas le cas.
Le reste de ce tutoriel vous guide tout au long de ce processus.
Reconnaître la nécessité de configurer des règles recognize-the-need
Comme précisé précédemment, Adobe bloque par défaut le trafic sur le réseau de diffusion de contenu si ce trafic dépasse un certain débit. Cependant, certains sites web peuvent subir une dégradation de leurs performances en dessous de ce seuil. Par conséquent, les règles de filtrage du trafic limitant le débit doivent être configurées.
Idéalement, vous devez configurer les règles avant de passer en production. Dans la pratique, de nombreuses organisations ne déclarent les règles que de manière réactive lorsqu’elles sont alertées d’un pic de trafic indiquant une attaque probable.
Adobe envoie une alerte de pic de trafic à l'origine sous la forme d’une Notification du Centre d’actions lorsque le seuil de trafic par défaut d’une adresse IP unique est dépassé, pour un PoP donné. Si vous avez reçu une telle alerte, il est recommandé de configurer une règles de filtrage du trafic limitant le débit. Cette alerte par défaut est différente des alertes que les clientes et les clients doivent activer explicitement lorsque ceux-ci définissent des règles de filtrage du trafic. Cela vous sera détaillé dans une section ultérieure.
Analyser les modèles de trafic analyze-traffic
Si votre site est déjà actif, vous pouvez analyser les modèles de trafic à l’aide des journaux du réseau CDN et des tableaux de bord fournis par Adobe.
-
Tableau de bord du trafic de réseau CDN : fournit des informations sur le trafic via les taux de demande de réseau CDN et d’origine, les taux d’erreur 4xx et 5xx, et les demandes non mises en cache. Indique également le nombre maximal de demandes de réseau CDN et d’origine par seconde par adresse IP cliente et des informations supplémentaires pour optimiser les configurations de réseau CDN.
-
Taux d’accès au cache de réseau CDN : fournit des informations sur le taux d’accès au cache total et le nombre total de requêtes par statut HIT, PASS et MISS. Indique également les principales URL de statut HIT, PASS et MISS.
Configurez l’outil de tableau de bord à l’aide de l’une des options suivantes :
ELK - configurer les outils du tableau de bord
Les outils de tableau de bord Elasticsearch, Logstash et Kibana (ELK) fournis par Adobe peuvent être utilisés pour analyser les journaux du réseau de diffusion de contenu. Ces outils incluent un tableau de bord qui affiche les modèles de trafic, qui aide à déterminer les seuils optimaux pour vos règles de filtrage du trafic limitant le débit.
-
Clonez le référentiel GitHub AEMCS-CDN-Log-Analysis-Tooling.
-
Configurez les outils en suivant la procédure Configurer le conteneur ELK Docker.
-
Dans le cadre de la configuration, importez le fichier
traffic-filter-rules-analysis-dashboard.ndjson
pour visualiser les données. Le tableau de bord Trafic du réseau de diffusion de contenu inclut des visualisations qui affichent le nombre maximal de requêtes par adresse IP/PoP au niveau de l’origine et de la périphérie du réseau de diffusion de contenu. -
À partir de la vignette Environnements de Cloud Manager, téléchargez les journaux du réseau de diffusion de contenu du service de publication d’AEMCS.
note tip TIP 5 minutes peuvent s’écouler avant l’affichage des nouvelles requêtes dans les journaux du réseau CDN.
Splunk - configurer les outils du tableau de bord
Les clientes et clients qui ont activé le transfert de journal Splunk peuvent créer un tableau de bord pour analyser les modèles de trafic.
Pour créer des tableaux de bord dans Splunk, suivez les étapes Tableau de bord Splunk pour l’analyse de journaux de réseau CDN AEMCS.
Observer les données
Les visualisations suivantes sont disponibles dans les tableaux de bord ELK et Splunk :
-
Requêtes par seconde (RPS) Edge par adresse IP de client et PoP : cette visualisation affiche le nombre maximal de requêtes par adresse IP/PoP pour Edge du réseau de diffusion de contenu. Le pic sur la visualisation indique le nombre maximal de requêtes.
Tableau de bord ELK :
Tableau de bord Splunk :
-
Requêtes par seconde (RPS) à l’origine par adresse IP du client et PoP : cette visualisation affiche le nombre maximal de requêtes par adresse IP/PoP à l’origine. Le pic sur la visualisation indique le nombre maximal de requêtes.
Tableau de bord ELK :
Tableau de bord Splunk :
Choix des valeurs de seuil
Les valeurs de seuil pour les règles de filtrage du trafic limitant le débit doivent être basées sur l’analyse ci-dessus et s’assurer que le trafic légitime n’est pas bloqué. Consultez le tableau suivant pour savoir comment choisir les valeurs de seuil :
Le facteur de multiplication à utiliser dépend des pics de trafic normaux auxquels vous vous attendez, en raison du trafic organique, de campagnes et d’autres événements. Un facteur de multiplication compris entre 5 et 10 est une option raisonnable.
Si votre site n’est pas encore en ligne, il n’y a aucune donnée à analyser. Vous devez estimer raisonnablement les valeurs appropriées à définir pour vos règles de filtrage du trafic limitant le débit. Par exemple :
Configurer des règles configure-rules
Configurez les règles de filtrage du trafic limitant le débit de votre fichier de projet AEM /config/cdn.yaml
avec des valeurs basées sur l’explication ci-dessus. Le cas échéant, consultez votre équipe de sécurité web pour vous assurer que les valeurs de limites de débit sont appropriées et ne bloquent pas le trafic légitime.
Pour plus d’informations, consultez la section Créer des règles dans votre projet AEM.
kind: CDN
version: '1'
metadata:
envTypes:
- dev
- stage
- prod
data:
trafficFilters:
rules:
...
# Prevent attack at edge by blocking client for 5 minutes if they make more than 500 requests per second on average
- name: prevent-dos-attacks-edge
when:
reqProperty: tier
in: ["author","publish"]
rateLimit:
limit: 500 # replace with the appropriate value
window: 10 # compute the average over 10s
penalty: 300 # block IP for 5 minutes
count: all # count all requests
groupBy:
- reqProperty: clientIp
action:
type: log
experimental_alert: true
# Prevent attack at origin by blocking client for 5 minutes if they make more than 100 requests per second on average
- name: prevent-dos-attacks-origin
when:
reqProperty: tier
in: ["author","publish"]
rateLimit:
limit: 100 # replace with the appropriate value
window: 10 # compute the average over 10s
penalty: 300 # block IP for 5 minutes
count: fetches # count only fetches
groupBy:
- reqProperty: clientIp
action:
type: log
experimental_alert: true
Notez que les règles d’origine et Edge sont déclarées et que la propriété alert est définie sur true
, vous permettant de recevoir des alertes chaque fois que le seuil est atteint, ce qui indique probablement une attaque.
Il est recommandé de définir le type d’action de manière à pouvoir surveiller le trafic pendant quelques heures ou quelques jours, afin de s’assurer que le trafic légitime ne dépasse pas ces débits. Au bout de quelques jours, passez en mode bloc.
Pour déployer les modifications dans votre environnement AEMCS, procédez comme suit :
- Validez et envoyez les modifications au référentiel Git de Cloud Manager.
- Déployez les modifications dans l’environnement AEMCS à l’aide du pipeline de configuration de Cloud Manager. Voir Déployer des règles via Cloud Manager pour plus d’informations.
- Pour vérifier que la règle de filtrage du trafic limitant le débit fonctionne comme prévu, vous pouvez simuler une attaque comme décrit dans la section Simulation d’attaque. Limitez le nombre de requêtes à une valeur supérieure à la valeur limite de débit définie dans la règle.
Configurer des règles de transformation de requêtes configure-request-transform-rules
En plus des règles de filtrage du trafic limitant le débit, il est recommandé d’utiliser des transformations de requêtes pour annuler des paramètres de requête dont l’application n’a pas besoin afin de réduire les possibilités de contourner le cache par le biais de techniques d’actualisation forcée du cache. Par exemple, si vous souhaitez autoriser uniquement les paramètres de requête search
et campaignId
, la règle suivante peut être déclarée :
kind: "CDN"
version: "1"
metadata:
envTypes:
- dev
- stage
- prod
data:
experimental_requestTransformations:
rules:
- name: unset-all-query-params-except-those-needed
when:
reqProperty: tier
in: ["publish"]
actions:
- type: unset
queryParamMatch: ^(?!search$|campaignId$).*$
Recevoir des alertes sur les règles de filtrage du trafic receiving-alerts
Comme mentionné ci-dessus, si la règle de filtrage du trafic inclut experimental_alert: true, une alerte est reçue lorsque la règle est satisfaite.
Agir en réponse aux alertes acting-on-alerts
Parfois, l’alerte est à titre indicatif, ce qui vous permet d’avoir une idée de la fréquence des attaques. Il est utile d’analyser vos données de réseau de diffusion de contenu à l’aide du tableau de bord décrit ci-dessus, afin de vérifier que le pic de trafic est dû à une attaque et non à une simple augmentation du volume du trafic légitime. S’il s’agit de ce dernier cas, envisagez d’augmenter votre seuil.
Simulation d’attaque attack-simulation
Cette section décrit les méthodes de simulation d’une attaque par déni de service, qui peuvent être utilisées pour générer des données pour les tableaux de bord utilisés dans ce tutoriel et pour vérifier que toutes les règles configurées bloquent correctement les attaques.
Pour simuler une attaque, des outils tels qu’Apache Benchmark, Apache JMeter, Vegeta, ou autres, peuvent être utilisés.
Requêtes Edge
En utilisant la commande Vegeta suivante, vous pouvez envoyer de nombreuses requêtes à votre site web :
$ echo "GET https://<YOUR-WEBSITE-DOMAIN>" | vegeta attack -rate=120 -duration=5s | vegeta report
Cette commande effectue 120 requêtes pendant 5 secondes et génère un rapport. En supposant que le débit du site web ne soit pas limité, cela peut entraîner un pic de trafic.
Requêtes à l’origine
Pour contourner le cache du réseau de diffusion de contenu et envoyer des requêtes à l’origine (service de publication d’AEM), vous pouvez ajouter un paramètre de requête unique à l’URL. Reportez-vous à l’exemple de script Apache JMeter de la section Simuler une attaque DoS à l’aide du script JMeter.