Je souhaite protéger mon application contre les attaques DDoS de couche 7 en utilisant la règle de limitation de débit AWS WAF avec l’Application Load Balancer située derrière le Global Accelerator.
Brève description
Vous pouvez tirer parti d'AWS Global Accelerator, d'Application Load Balancer et d'AWS WAF pour vous défendre contre les attaques par déni de service distribué (DDoS) au niveau de la couche application.
**Remarque :**La limitation du débit client via l’Application Load Balancer et le WAF nécessitent que vous définissiez l'adresse IP source préservée comme=TRUE sur l'accélérateur. Pour plus d'informations, consultez la section Préserver les adresses IP des clients dans AWS Global Accelerator.
Résolution
La règle de limitation du débit d’AWS WAF vous permet de bloquer automatiquement les clients provenant d'adresses IP spécifiques qui envoient un flot impressionnant de demandes à votre application. Votre règle basée sur le débit suit le nombre de demandes envoyées par chaque adresse IP, sur la base d'une fenêtre temporelle variable. Lorsque les demandes dépassent la limite de débit, la règle bloque immédiatement les demandes provenant de l'adresse IP source, jusqu'à ce que l'adresse réduise le nombre de demandes.
**Remarque :**Vous pouvez également configurer la règle pour inspecter et bloquer de nombreux composants d'une demande, y compris le pays d'origine de la demande.
Prérequis
Création d'une ACL Web basée sur des règles
Créez une règle basée sur le débit dans Web ACL, avec une limite de débit agressive de 100. Utilisez ensuite le scénario de test pour vérifier si votre règle fonctionne.
- Accédez à la console AWS WAF pour créer une règle ACL Web.
- Ajoutez une règle personnalisée à votre ACL Web.
- Donnez-lui un nom et définissez la règle basée sur le taux comme Type.
- Définissez 100 pour sa limite de débit.
- Laissez tous les autres paramètres tels quels. Cliquez ensuite sur Ajouter une règle.
- Enregistrez l'ACL Web.
Testez les résultats
Le test simule une attaque HTTP flood. L'outil de test de charge montre la progression des demandes reçues. À un moment donné, les demandes commencent à échouer car elles sont bloquées par la règle de limitation de débit que vous avez définie.
-
Exécutez l'outil loadtest sur votre ordinateur.
**Remarque :**Vous pouvez également ouvrir AWS CloudShell sur votre console (vous serez peut-être invité à passer à la Région dans laquelle il est pris en charge).
# Install globally as root:
npm install -g loadtest
# On AWS CloudShell, Ubuntu or Mac OS X systems install using sudo:
sudo npm install -g loadtest
-
Entrez l'URL du Global Accelerator, comme indiqué ci-dessous :
# Global Accelerator url
GA_URL=http://your_Global_Acclerator_URL
**Remarque :**Remplacez your_Global_Accelerator_URL par l'URL de votre accélérateur global.
-
Exécutez la commande dans votre terminal pour démarrer le flot de requêtes de simulation de test de charge.
**Remarque :**Cela devrait prendre 45 secondes, alors gardez un œil sur le flux.
loadtest -n 1000 -c 1 --rps 25 $GA_URL
La commande envoie un total de 1 000 demandes, avec une simultanéité de 1 et 25 demandes par seconde. Avec ce taux de requêtes par seconde, vous atteignez la limite que vous avez fixée à la quatrième seconde.
-
Analysez le flux de sortie. Notez qu'à un moment donné, les demandes ont commencé à échouer. Les erreurs indiquent que la règle WAF a bloqué toutes les demandes provenant de votre adresse IP source.
[Fri Apr 21 2023 20:26:45 GMT+0000 ] INFO Requests: 0 (0%), requests per second: 0, mean latency: 0 ms
[Fri Apr 21 2023 20:26:50 GMT+0000 ] INFO Requests: 106 (11%), requests per second: 21, mean latency: 22.9 ms
[Fri Apr 21 2023 20:26:50 GMT+0000 ] INFO Errors: 106, accumulated errors: 106, 100% of total requests