Je me trouve dans une situation où plus de 13 000 robots d’exploration ont été détectés et le trafic de la base de données a explosé. Quelqu’un scrappe manifestement notre forum, mais je ne sais pas comment identifier l’adresse IP et prendre des mesures contre elle, car le trafic passe par le DNS de CloudFlare.
Des idées sur la façon de procéder ?
Je souhaiterais mettre en place une solution automatique de limitation du débit capable de détecter un comportement réseau agressif, puis de limiter ou de désactiver temporairement les auteurs de ces comportements.
Je dois mentionner que je rencontre un problème sérieux : l’accès à la base de données (j’utilise un autre serveur de base de données sur le même site) est constamment entre 13 et 20 Mbps, et il a atteint un pic lorsque le nombre de robots d’exploration a explosé, sans se stabiliser depuis près de deux semaines. Le panneau de contrôle du serveur indique que le trafic a atteint des niveaux ridicules à ce même moment et qu’il n’a pas diminué depuis, restant à ce niveau d’accès constant. Si cela se poursuit, cela risque d’épuiser la bande passante des serveurs.
Comme vous vous en souvenez peut-être, j’ai envisagé de tenter de limiter la consommation de bande passante à ce stade en passant simplement tout à l’utilisation d’adresses IP privées internes, ce qui devrait au moins m’éviter de recevoir des factures élevées.
J’ai remarqué autre chose de particulier ici. J’ai modifié la connexion à la base de données pour qu’elle utilise l’adresse IP privée au lieu de l’adresse IP publique, afin de ne pas épuiser aussi rapidement l’allowance de transfert mensuel. Sur le serveur de base de données, je m’attendais à ne voir que des connexions établies via l’adresse IP privée en provenance du serveur Docker Discourse. Je vois bien maintenant le trafic provenant de l’adresse IP privée locale, mais je constate toujours des quantités démesurées de trafic arrivant via l’adresse IP publique, ce qui continue d’épuiser rapidement mon allowance mensuel.
J’ai cherché longuement, tant bien que mal, l’adresse IP publique et le nom d’hôte du serveur de base de données sur le serveur Docker Discourse, mais je ne les trouve nulle part. Même si j’entre dans l’application (./launcher enter app) et que j’exécute env | grep DB, je vois l’adresse IP privée correcte utilisée pour le réseau local. J’ai parcouru le système de fichiers avec grep, mais je ne trouve aucune occurrence que je m’attendais à voir.
Avez-vous des idées sur la raison pour laquelle Discourse ou l’image Docker continuerait d’accéder à la mauvaise adresse IP ? Je n’arrive tout simplement pas à comprendre d’où provient tout ce trafic sur l’adresse IP publique sur le serveur Discourse.