Archives de
Étiquette : Bingbot

Cyborg Jeff vs Robots

Cyborg Jeff vs Robots

Ok, après de longues soirées, j’ai donc pu faire redescendre à la normal la charge CPU du serveur Infomaniak et rejoindre mes « copains » du serveur mutualisé. Le combat fut long, stressant et dans la mesure où une fois de plus, je me suis retrouvé seul au monde avec mon problème, je vais en profitez pour vous en faire partager les solutions, puisque déjà quelques autres internautes commencent à rencontrer de problèmes similaires.

Rappel des faits, début du mois, mon hébergement chez Infomaniak devait être isolé car quelques choses saturait le serveur web… et à moi d’en trouver la cause et l’éradiquer. Pas de malware, mise à jour de WordPress et plugins, rien n’y fait, je finis par constater un taux anormal d’appel dans les logs sur une seul et unique page du blog, plus de 10x par secondes et venant de serveurs BingBot officiels Microsoft. La raison reste toujours un mystère, mais mes lectures ont pu montrer d’autres cas similaires. Bug de l’outil, tentative de détournement pour saturer les serveurs…

Tout d’abord, j’ai donc installé un plugin de gestion de cache des pages à la demande d’Infomaniak. Celui-ci n’a pas vraiment fait diminuer la charge CPU, et m’enquiquine plus qu’autre chose d’ailleurs.

Après de nombreux tests, j’ai finalement interdit à BingBot et MSNBot de se rendre sur tout le site contenant la page à problème. Radicale, mais le contenu de celui-ci ne souffrira pas de ce nom référencement… Ceci dit cette solution est à mon goût trop agressive.

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ^.*(msnbot).* [NC]  # Si le user agent contient la chaine msnbot
RewriteRule ^.* – [F,L]  # On interdit alors l’accès à la page

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ^.*(bingbot).* [NC]  # Si le user agent contient la chaine msnbot
RewriteRule ^.* – [F,L]  # On interdit alors l’accès à la page

La solution s’avère efficace, puisque la charge serveur diminue alors de suite, néanmoins les logs restent surchargés, j’adapte donc avec un fichier ROBOTS.TXT qui placé à la racine du site impose aux différents bots ce qu’il peuvent indexer ou non… 24h plus tard, les résultats sont efficaces, mon fichiers LOG de 40mo est passé à 1,5mo !

User-agent: *
Disallow: /wp-*
Disallow: /*.php$
Disallow: /*.js$
Disallow: /*.inc$
Disallow: /*.css$
Disallow: /*%26layout=
Disallow: /*xoops_url

J’impose donc de ne pas indexer tous répertoires ou fichiers commençant par wp- à savoir des fichiers critiques à WordPress, les fichiers .php, .js ou .css et propre à ce cas les urls contenant la chaine de caractère %26layout= ou xoops_url.

Bon, j’espère être tranquille jusqu’à l’année prochaine mantenant !

Allé, pour vous donner un peu de coeur à l’ouvrage… tout cela me rappelle ce morceau de musique écrit en 2002 : Cyborg Jeff – We are the Bots !

Saturation serveur

Saturation serveur

Déjà quelques jours que je m’arrache les cheveux et perd un temps précieux sur un sérieux problème d’attaque Web sur mon serveur, un soucis qui semble s’orienter autour d’attaque de BingBot ou d’un bon bug dans celui-ci, le tout causant une charge CPU anormal sur le serveur.

Et c’est de la que le problème a été identifié. Contacté par Infomaniak il y a un moment, mon hébergement avait dû être démutualisé pour cause de surcharge CPU, or ce n’est pas vraiment le genre d’Infomaniak de faire la grimace ! Difficile de mettre la doigt exactement sur ce qui en est la cause, il a donc fallu tenter plusieurs pistes.

J’ai d’abord fait un genre de test malware de mes différents sites avec cet outil : http://sucuri.net/ sans grand résultat, il m’annonçait simplement que mes versions de WordPress n’était pas à jour. Dans la mesure où le passage à Worpdress 3.x impliquait toute une série d’incompatibilité plugins, je m’étais volontairement arrêté à la version 2.9.8.2  J’ai donc mis à jour mes noyaux, mis à jour les nombreux plugins et puis ?

Je me suis souvenu avoir lu qu’il était parfois utile de checker authenticité des thèmes wordpress utilisés. En effet, par exemble, celui de mon blog avait été réalisé au départ d’un thème datant maintenant de 2007…. Cause potentiel ? Pas vraiment sur, mais bon, cela n’aura pas fait de tord de mettre tout cela à jour

J’en ai profité pour faire du nettoyage sur mon serveur, par bloquer via .htaccess certains répertoires,… puis sous les conseilles d’Infomaniak, j’ai installé un outil d’optimisation de cache du site WP Super Cache, qui permet de diminuer les requêtes aux serveurs.

Mais rien à faire, la charge CPU restait toujours assez élevée… Dans les statistiques, je voyais qu’une page d’un de mes blogs était anormalement visitée, plus de 600.000 fois depuis début mai sans aucune raison. La page était plutôt clean, on aurait juste pu lui reprocher un embed de player Jamendo… Un croisement avec les weblog du site me montre effectivement que le problème passe bien par là, on retrouve ce genre de log plusieurs fois par seconde en permanence :

157.55.17.151 – – [16/May/2012:00:00:10 +0200] « GET /cyborgjeff/site/albums/divagation-se-1997/%26layout=button_count%26show_faces=false%26width=250%26action=like%26colorscheme=light%26font=arial%26height=35px/1997/02/24/344-4u2-ethnic-drums-ftl-mix-16/1997/04/10/372-ego/1997/03/23/365-2-3-frutti-dance-classics/1997/02/24/344-4u2-ethnic-drums-ftl-mix-16/1997/04/10/370-introduction-of-dream-part-ii/1996/11/27/279-moon-day/1996/11/27/279-moon-day/1997/04/04/368-deep-house-titanic-mix/1997/04/10/372-ego/1997/04/10/372-ego/1997/04/05/369-i-get-no-sleep-part-2/1997/03/03/351-one-month-but-three-weeks-without-you-mixing/1997/03/16/361-hey-mister-dj/1997/02/12/335-space-del/1997/02/12/335-space-del/ HTTP/1.1 » 301 – « – » « Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm) »

Plusieurs choses m’intrigue là dedans, d’abord tout le blabla après la page proprement dit et ensuite des appels vers les urls des pages liées à la première, un peu comme si l’appel en question allait ouvrir une dizaine de pages d’un coup, ce qui pourrait évidemment expliquer la surcharge, ensuite à quoi peut bien faire référence ceci : %26layout=button_count%26show_faces=false%26width=250%26action=like%26colorscheme=light%26font=arial%26height=35px

J’ai tout d’abord supprimer ma page temporairement, les appels ont continuer sans soulager le serveur, et pour cause, c’est wordpress qui génère les messages d’erreur type 404 et compagnie, par contre fin de journée, le BingBot a fini par se lassé et la charge CPU est retombée… J’ai réactivé la page, et dès le lendemain, bardouf !

Petit check, les différentes IPs semblent bien provenir de Microsoft (MSNBot et BingBot), j’avais fini par trouver quelques Abus BingBot récent mais qui semble surtout provenir d’adresse IP douteuses, et cibler essentiellement les pages de logins ou de commentaires, ce qui n’est pas le cas ici… J’ai par contre aussi trouvé certaines personnes rapportant des comportements agressif et anormaux des BingBots officiels ces dernières semaines…

Que faire ? Pour l’heure j’ai bloqué l’accès à Bingbot et Msnbot via du code .htaccess

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ^.*(msnbot).* [NC] # Si le user agent contient la chaine msnbot
RewriteRule ^.* – [F,L] # On interdit alors l’accès à la page

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} ^.*(bingbot).* [NC] # Si le user agent contient la chaine msnbot
RewriteRule ^.* – [F,L] # On interdit alors l’accès à la page

Cela soulage le serveur, mais je trouve la parade un peu trop large… j’aimerais bien pouvoir affiner cela, voir comprendre la raison du problème sur ma page bien précise… histoire de pouvoir me prémunir d’autres pertes de temps de ce genre !

>> Ici la solution finale mise en place : https://www.studio-quena.be/cyborgjeff/blog/2012/05/24/cyborg-jeff-vs-robots/

Lire la suite Lire la suite