Configurer le service de protection en cas de déni de service

Le service de protection en cas de déni de service (DoS, Denial of Service) d'App Engine permet d'éviter d'épuiser les quotas de votre application lorsqu'elle est soumise à des attaques par déni de service ou à des formes d'abus similaires. Vous avez la possibilité d'ajouter des sous-réseaux ou des adresses IP à une liste noire, de sorte que les requêtes acheminées à partir de ces adresses ou sous-réseaux soient abandonnées avant d'appeler le code de l'application. Ces requêtes ne consomment ainsi aucune des ressources allouées, qu'elles soient facturées ou non.

Par défaut, App Engine envoie une page d'erreur générique aux adresses sur liste noire. Vous pouvez configurer votre application pour qu'elle diffuse une réponse personnalisée à la place.

Avant de commencer

Créez un fichier dos.yaml dans le répertoire root de votre application. Vous devez spécifier les réseaux et les adresses IP sur liste noire dans ce fichier.

Bloquer des requêtes à l'aide de listes noires DoS

Vous pouvez placer des sous-réseaux IP et des adresses IP sur liste noire afin de les empêcher d'accéder à votre application.

Le fichier dos.yaml étant limité à 100 entrées, il peut être nécessaire de bloquer des sous-réseaux entiers en cas d'attaque par déni de service. Il s'agit également d'un moyen efficace de vous protéger si vous constatez que plusieurs adresses IP d'un même réseau sont impliquées dans une attaque DoS au sein de votre application.

Créer des entrées de liste noire pour les adresses IP

Vous pouvez empêcher une ou plusieurs adresses IPv4 ou IPv6 d'accéder à votre application en les définissant dans votre fichier dos.yaml. Exemple :

blacklist:
- subnet: 192.0.2.1
  description: A single IPv4 address
- subnet: abcd::123:4567
  description: A single IPv6 address

En cas d'attaque par déni de service distribué (DDoS, Distributed Denial of Service), vous devrez probablement bloquer des sous-réseaux entiers au lieu d'adresses IP spécifiques.

Consultez l'exemple ci-dessous pour découvrir comment créer un fichier dos.yaml.

Après avoir créé le fichier dos.yaml, vous devez l'importer dans votre application.

Créer des entrées de liste noire pour des sous-réseaux IP

Vous pouvez empêcher un sous-réseau IP d'accéder à votre application en le définissant au format CIDR. Le convertisseur IP/CIDR peut vous aider à créer des règles basées sur la notation CIDR.

blacklist:
- subnet: 1.2.3.4/24
  description: an IPv4 subnet
- subnet: abcd::123:4567/48
  description: an IPv6 subnet

Consultez l'exemple ci-dessous pour découvrir comment créer un fichier dos.yaml.

Après avoir créé le fichier dos.yaml, vous devez l'importer dans votre application.

Exemple de fichier dos.yaml

Voici un exemple de fichier dos.yaml :

blacklist:
- subnet: 1.2.3.4
  description: a single IP address
- subnet: 1.2.3.4/24
  description: an IPv4 subnet
- subnet: abcd::123:4567
  description: an IPv6 address
- subnet: abcd::123:4567/48
  description: an IPv6 subnet

Créer des messages d'erreur personnalisés pour les requêtes sur liste noire

Par défaut, le service de protection DoS envoie une page d'erreur générique lorsqu'il bloque des requêtes. Des attaques de déni de service distribué peuvent impliquer un ordinateur infecté d'un utilisateur légitime, cette page est destinée à expliquer à l'utilisateur pourquoi l'accès lui a été refusé.

  1. Dans le répertoire de votre application, créez un fichier statique à diffuser lorsque le service de protection DoS bloque des requêtes.

  2. Dans le fichier app.yaml, spécifiez un gestionnaire d'erreurs pour les réponses DoS en indiquant le chemin d'accès du fichier statique et en ajoutant le type error_handlers pour dos_api_denial, comme suit :

    error_handlers:
    - error_code: dos_api_denial
      file: dos-response.html
    

Supprimer toutes les entrées de la liste noire

Pour supprimer toutes les entrées de la liste noire, procédez comme suit :

  1. Modifiez le fichier dos.yaml pour qu'il ne contienne plus que l'élément suivant :

    blacklist:
    

    La suppression du fichier dos.yaml ne supprime pas les listes noires.

  2. Pour que les modifications soient prises en compte, redéployez le fichier dos.yaml.

Afficher les erreurs DoS dans la console

Vous pouvez afficher un graphique représentant le nombre de requêtes refusées en procédant comme suit :

  1. Accédez au tableau de bord App Engine dans la console Google Cloud Platform.

    Ouvrir le graphique App Engine affichant les détails des erreurs

  2. Ajustez la période couverte par le graphique selon les besoins pour consulter les résultats.

Importer une liste noire DoS

Pour déployer le fichier de configuration DoS mis à jour au sein de votre application dans App Engine, vous devez utiliser l'outil gcloud. Par exemple, pour mettre à jour le service de protection DoS avec le contenu du fichier dos.yaml, vous pouvez exécuter la commande suivante :

 gcloud app deploy dos.yaml

Étape suivante

  • Configurez Stackdriver Monitoring pour identifier rapidement les problèmes et recevoir des alertes.
  • Lisez le témoignage de ce client expliquant comment il a fait face à une attaque par déni de service distribué (DDoS, Distributed Denial of Service) (janvier 2013).
Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Environnement flexible App Engine pour les documents Ruby