Atténuation simple des mauvais bots avec Signal Sciences

Nov 29 2022
Il y a une tonne d'activités de robots sur Internet. Toute personne chargée de défendre des sites Web à fort trafic le sait bien.
Photo par Owen Beard sur Unsplash

Il y a une tonne d'activités de robots sur Internet. Toute personne chargée de défendre des sites Web à fort trafic le sait bien. Certains robots sont bons et recherchés – pensez aux robots des moteurs de recherche. Certains robots sont bénins, tels que les scripts effectuant des appels d'API ou surveillant la disponibilité du site. Mais souvent, les bots peuvent être soit une nuisance affectant les performances, soit carrément malveillants. Ce sont les "mauvais" robots que vous souhaiteriez pouvoir facilement bloquer et ne plus gérer. Dans cet article, j'aimerais partager une approche automatisée simpliste pour implémenter une assez bonne atténuation des mauvais bots à l'aide du pare-feu d'application Web (WAF) de Signal Sciences.

Définir les types de robots

Avant d'entrer dans les détails, j'aimerais expliquer comment je définis un bot et un mauvais bot. Un bot est un client qui envoie des requêtes à votre site et qui n'est pas un humain utilisant un navigateur Web moderne. Les robots sont donc des scripts, des outils de ligne de commande, des programmes, des logiciels malveillants, etc., qui fonctionnent de manière autonome ou sont invoqués par un humain. Ce qui rend un bot mauvais, c'est son comportement. Par exemple, envoie-t-il des charges utiles malveillantes ou recherche-t-il des répertoires et des fichiers privés ?

Exemple de demande de bot :

Un robot publicitaire de Google envoyant une demande bénigne

Exemple de requête Bad Bot :

Un outil d'analyse envoyant des requêtes malveillantes

Identifier les robots

La première étape consiste à identifier tout bot susceptible de sonder, d'explorer ou de fouiller votre site. En gardant les choses simples, nous pouvons utiliser une méthode très rudimentaire pour identifier les bots - simplement basée sur la longueur de la chaîne de l'agent utilisateur. Une chaîne d'agent utilisateur est un en-tête de demande, défini par le client, qui permet aux serveurs et aux pairs du réseau de l'identifier. Les humains normaux utilisant un navigateur moderne auront toujours une longueur minimale de chaîne d'agent utilisateur d'un certain nombre, x . Bien que les bots puissent usurper la chaîne user-agent, la plupart des bots ne le font pas. Leurs chaînes d'agent utilisateur ont tendance à être beaucoup plus courtes qu'une chaîne d'agent utilisateur de navigateur. En conséquence, nous pouvons supposer que x moins un certain nombre n n'est pas un humain - c'est un bot. Vous pouvez décider de votre seuil de ce que x et n devraient être.

Il existe diverses sources sur Internet où vous pouvez trouver des listes de chaînes d'agents utilisateurs. Voici un exemple d'une de ces sources :

  • https://useragentstring.com/pages/Chrome/
  • https://useragentstring.com/pages/Firefox/
  • https://useragentstring.com/pages/Edge/

Avec cette règle et ce signal en place, l'examen des données qu'il produit au fil du temps vaut la peine. Il peut fournir une visibilité sur un trafic intéressant dont vous n'aviez peut-être pas connaissance auparavant.

Exemple de résultats de la règle Bot :

Pour une explication rapide des règles au niveau de l'entreprise et des règles au niveau du site si vous n'êtes pas familier avec les concepts. Les règles appliquées au niveau de l'entreprise peuvent être mises en œuvre sur tous les sites exécutant l'agent Signal Sciences. Les règles appliquées au niveau du site ne sont implémentées que dans les agents de ce site particulier. Utilisez l'option qui convient le mieux à votre environnement.

Identifiez les mauvais bots

Maintenant que vous pouvez identifier les bots, comment se comportent-ils ? Dans Signal Sciences, nous pouvons créer un autre niveau d'entreprise simple pour définir le mauvais comportement des bots. La première condition de cette règle recherche le signal Bot, et la deuxième condition recherche un nombre quelconque d'attaques, d'anomalies ou de signaux personnalisés. Vous pouvez facilement ajuster la règle pour inclure les signaux les plus pertinents pour votre scénario. Dans l'exemple ci-dessous, nous avons également inclus une correspondance de liste d'adresses IP avec des données Intel sur les menaces. Pour résumer la règle, si c'est un bot et qu'il fait un certain nombre de mauvaises choses, alors c'est un mauvais bot, et ajoutez le signal "Bad Bot" à la requête.

Exemple de résultats de la règle Bad Bot :

Mise en vigueur

La dernière étape consiste à créer notre règle d'application, soit une limite de débit, soit une règle de blocage. Notez que les règles de limite de débit sont appliquées au niveau du site. Une règle de blocage peut être implémentée au niveau de l'entreprise ou du site et bloquera tout le trafic avec le signal Bad Bot. Soyez prudent avec ce niveau de blocage agressif. Envisagez de surveiller les données au fil du temps pour vous assurer que la règle de blocage n'affectera pas le trafic de production légitime. Alternativement, une règle de limite de débit offre la possibilité de déterminer votre niveau de tolérance avant de bloquer le trafic Bad Bot. Dans l'exemple ci-dessous, la condition de règle de limite de débit est sur toute demande avec le signal Bad Bot et commencera à bloquer après avoir vu 10 signaux Bad Bot en 1 minute. La décision de blocage sera active pendant 5 minutes. Le seuil de comptage et la durée d'action peuvent facilement être modifiés selon les valeurs souhaitées.

Conclusion

Tirer parti de la longueur de la chaîne de l'agent utilisateur pour la détection des bots est une approche simple et, d'après mon expérience, efficace pour identifier la majorité du trafic des bots. En déterminant la longueur de la chaîne de l'agent utilisateur pour votre scénario, en identifiant les mauvais comportements et en appliquant une limitation de débit, vous serez sur la bonne voie pour atténuer le trafic indésirable des bots. Signal Sciences rend cette approche facile à mettre en œuvre grâce à sa capacité de règles. Cependant, si vous n'avez pas Signal Sciences, compte tenu de cette approche simple, il serait intéressant d'explorer la capacité des outils dont vous disposez pour identifier les bots, les mauvais bots et l'application.