La compatibilité de Python 2 n'est plus assurée par la communauté. Nous vous recommandons de migrer les applications Python 2 vers Python 3.

Configurer le service de protection DoS pour Python 2

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 pouvez ajouter des adresses IP ou des sous-réseaux à une liste d'interdiction. Les requêtes acheminées à partir de ces adresses ou sous-réseaux seront abandonnées avant d'appeler le code de votre 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 de la liste de refus. 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 refusés sur ce fichier.

Bloquer des requêtes avec des listes de refus DoS

Vous pouvez ajouter des adresses IP et des sous-réseaux IP à une liste de refus pour 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 se protéger si vous constatez que plusieurs adresses IP du même réseau sont impliquées dans une attaque DoS au sein de votre application.

Créer des entrées de liste de refus 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.

Pour obtenir des exemples, consultez le fichier de référence dos.yaml.

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

Créer des entrées de liste de refus pour les 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

Pour obtenir des exemples, consultez le fichier de référence dos.yaml.

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

Créer des messages d'erreur personnalisés pour les requêtes refusées

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 l'ordinateur infecté d'un utilisateur légitime, et cette page est destinée à lui expliquer 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 :

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

Supprimer toutes les entrées de la liste de refus

Pour supprimer toutes les entrées de liste de refus :

  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 de refus.

  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. Dans Cloud Console, accédez au tableau de bord App Engine :

    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 votre liste de refus DoS

Utilisez l'outil gcloud pour déployer le fichier de configuration DoS mis à jour dans votre application sur App Engine. Par exemple, exécutez la commande suivante pour mettre à jour le service de protection DoS afin d'y intégrer le contenu de dos.yaml :

 gcloud app deploy dos.yaml

Étapes suivantes

  • 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) (janvier 2013).