J'ai un site (construit avec WordPress) qui est actuellement sous une attaque de bot (autant que je sache). Un fichier est demandé à plusieurs reprises et le référent est (presque à chaque fois) turkyoutube.org/player/player.swf
. Le fichier demandé se trouve au plus profond de mes fichiers de thème et est toujours suivi de "?v=
" et d'une longue chaîne (c'est-à-dire r.php?v=Wby02FlVyms&title=izlesen.tk_Wby02FlVyms&toke
).
J'ai essayé de définir une règle .htaccess pour ce référent, qui semble fonctionner, à l'exception du fait que ma page 404 est chargée en permanence, ce qui utilise encore beaucoup de bande passante. Existe-t-il un moyen de créer une règle .htaccess qui ne nécessite aucune utilisation de la bande passante?
J'ai aussi essayé de créer un fichier robots.txt, mais l'attaque semble l'ignorer.
#This is the relevant part of the .htaccess file:
RewriteCond %{HTTP_REFERER} turkyoutube\.org [NC]
RewriteRule .* - [F]
Pourquoi pas un peu manœuvre de corbomite ?
RewriteEngine on
RewriteCond %{HTTP_REFERER} ^http(s)?://(www\.)?turkyoutube.org.*$ [NC]
RewriteRule ^(.*)$ http://127.0.0.1/$1 [R=401,L]
Remarque, non testé mais doit rediriger les demandes de ces personnes vers eux-mêmes avec un code de statut 401 Not Authorized
. Autrement dit, si le bot gère même les redirections (très peu probable), il verra toujours le code d'état. Un code d'état 404 peut être plus efficace. L'un ou l'autre devrait dire au bot qu'il devrait probablement abandonner.
La règle que vous avez publiée dans les commentaires est également plus que suffisante si vous élargissez l'expression pour qu'elle corresponde un peu plus à l'hôte. J'utilise quelque chose de proche (en ce qui concerne la règle réelle) pour bloquer les agents utilisateurs correspondant à libwww-Perl
:
RewriteCond %{HTTP_USER_AGENT} libwww-Perl.*
RewriteRule .* - [F,L]
En plus du blocage IP, je vérifierais les fichiers demandés. C'est une chose assez commune pour les systèmes open-source tels que WordPress et Joomla à être exploités, ce qui est l'une des raisons pour lesquelles ils sont fréquemment mis à jour. Si vous avez négligé quelques mises à jour, il est possible que quelqu'un ait pénétré votre site.
Ce scénario m'est arrivé à deux reprises, une fois sur un site de test qui n'a jamais été entièrement déployé (mais laissé en place) et une autre fois sur un site Web d'entreprise où un employé ayant un accès valide "faufile" un phpBB pour sa famille communiquer - des mises à jour auraient évité les problèmes. Dans les deux cas, le problème a été trouvé avec l'analyse, car il semble que cela puisse être vrai dans votre cas. L’attaque de Joomla a injecté du code JavaScript au navigateur de l’utilisateur, ce qui a permis au pirate de télécharger sur le serveur des fichiers faisant partie d’un site Google "alternatif" distribué qui conduisait l'utilisateur à la recherche de messages chaque fois. Bien que ce ne soit pas tout à fait un hack, vérifiez votre tableau d’utilisateurs de base de données, juste au cas où.
Je ne veux certes pas alarmer, mais il n'est jamais mauvais de prendre le temps de parcourir votre site de temps en temps pour savoir exactement ce qui se passe. Parfois, vous serez surpris de ce que vous trouvez.
Si l'attaque provient à chaque fois du même numéro IP (ou d'un petit ensemble d'IP), vous devez bloquer ce numéro IP dans votre pare-feu. Cela ne devrait pas coûter de bande passante ni de charge sur votre serveur Web.
Si vous l'hébergez sur une machine Linux à laquelle vous avez un accès root cet article explique comment procéder.
J'utilise DenyHosts [1] sur tous mes serveurs. DenyHosts interdit toutes les adresses IP dont la connexion a échoué n fois. Vous pouvez également envoyer des notifications. Vous avez donc un bon aperçu de la provenance des noms de connexion ips/hosts; et il a également une fonction de mise à jour Web et d'autres fonctionnalités intéressantes. Mais c'est toujours très simple à installer.
Une autre méthode consiste à interdire toutes les plages/blocs IP (par exemple) en provenance de Chine ou d'autres pays qui ne sont pas votre groupe cible. Cela peut être fait avec des "Listes noires" en ligne ou simplement avec le fichier hosts.deny (comme DenyHosts).