Aspirateur d'images bête et méchant

Fermé
Barbedebouc - 9 juin 2010 à 09:31
 Barbedebouc - 12 juin 2010 à 14:30
Bonjour,

J'ai un aspirateur qui s'attaque très bêtement à mon site.
Je m'explique, il repère un répertoire, et recherche tous les gifs 1.gif, 2.gif, 3.gif ... jusqu'à x.gif (x pouvant atteindre plusieurs dizaines de milliers).
Le problème est qu'il ne s'arrête pas lorsque le n° maximum existant sur le répertoire est atteint (mes gifs sont numérotés de 1 à n).
Sans compter qu'il "bouffe" ma bande passante, il génère à chaque gif absent un fichier d'erreur qui m'est envoyé.
Je repère dessus son IP et la rajoute dès que je la vois dans mon .htaccess par un deny.
Mais, il change d'IP et remets ça.
Ne pouvant être sur mes mails d'erreurs constamment, ce sont des dizaines de milliers de mails que je découvre en ouvrant ma boîte aux lettres.
J'ai toujours la possibilité d'arrêter de suivre les erreurs sur mon site mais ne verrais pas alors les erreurs "vraies".
Mon .htaccess est le suivant :

order allow,deny
allow from all
deny from anonym.to
deny from 72.109.100.176
deny from 89.204.153.65
deny from 97.202.229.105
...
ErrorDocument 404 /erreur.php

Je suis sur un dédié et ai donc accès à tout même si ne connais pas grand'chose en edministration de serveur.

Que faire contre ce genre d'abrutis ?


A voir également:

7 réponses

Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 192
9 juin 2010 à 10:26
salut.

Je previens tout de suite, je ne suis pas spécialisé web.... cependant tu dis qu'un message d'erreur est créé lorsque un fichier gif est absent et t'es envoyé.

Comment est généré ce message ? car mon idée serait de créer un script qui detecte quand un utilisateur essaye de telecharger une succession d'images inexistantes, et de modifier en live le.htaccess
0
bonjour, merci de vous intéresser au pb
comme le montre mon .htaccess ci-dessus, toute erreur 404 renvoie sur un fichier erreur.php qui détecte d'où vient l'erreur et m'en informe par mail (fichier d'erreur très classique)
pour info, ça continue à l'heure où j'écris ces lignes (100.000 mails chez mon hébergeur que je supprime directement sur ma bécane avec une règle de message)
et j'ai interdit pour l'instant l'accès du site à 7 IP (la dernière supprimée en était à l'image 24000 et quelque)

si ça peut aider, voici la source d'un des mails que je crée et reçois

Return-Path: <www-data@sd2984.sivit.org>
Received: from mwinf2018.orange.fr (mwinf2018 [172.22.130.118])
	 by mwinb2j06 with LMTPA;
	 Wed, 09 Jun 2010 15:37:22 +0200
X-Sieve: CMU Sieve 2.3
X-Bcc: claude.chamagne@orange.fr
Received: from me-wanadoo.net (localhost [127.0.0.1])
	by mwinf2018.orange.fr (SMTP Server) with ESMTP id 6B1E42000092
	for <wfr400004aa0dd504b40dc6b76e@back2j-mail02-03.me-wanadoo.net>; Wed,  9 Jun 2010 15:37:22 +0200 (CEST)
Received: from sd2984.sivit.org (sd2984.sivit.org [194.146.225.36])
	by mwinf2018.orange.fr (SMTP Server) with ESMTP id 5231B2000089
	for <claude.chamagne@orange.fr>; Wed,  9 Jun 2010 15:37:22 +0200 (CEST)
X-ME-UUID: 20100609133722336.5231B2000089@mwinf2018.orange.fr
Received: by sd2984.sivit.org (Postfix, from userid 33)
	id 46D434B842; Wed,  9 Jun 2010 15:37:22 +0200 (CEST)
To: claude.chamagne@orange.fr
Subject: Erreur sur ANIMATED-GIFS
From: claude.chamagne@orange.fr
Date: 09 Jun 2010 03:06:22 -0600
Message-Id: <20100609133722.46D434B842@sd2984.sivit.org>
X-me-spamlevel: not-spam
X-me-spamrating: 40.000000
X-me-spamcause:  OK, (0)(0000)gggruggvucftvghtrhhoucdtuddrvdelfedrtddvgddtledufecuteggodetufdouefnucfrrhhofhhilhgvmecuoffgnecuuegrihhlohhuthemuceftddtnecu
X-me-spamwebmail: HAM
X-AntiVirus: checked (incoming) by AntiVir MailGuard (Version: 9.0.1.9; AVE: 8.2.2.6; VDF: 7.10.8.29)



Erreur sur http://www.animated-gifs.eu
A 404 error was encountered by 149.254.49.29 on 09 Jun 2010 03:06:22.

The URL which generated the error is: 
http://www.animated-gifs.eu/phone-240x320-nude/16370.gif

The referring page was:



ici la page de référence n'est pas renseignée car l'erreur ne provient pas d'une page web.
0
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 192
Modifié par Nabla's le 9/06/2010 à 17:48
je te propose de créer une table dans ta BDD:
erreur404:
-ip varchar
-derniere_erreur timestamp
-nombre_erreurs int

dans ta page erreur.php, quand t'as une erreur 404:
tu chopes l'ip du gars
tu verifies si elle existe dans la BDD
si elle existe,
________tu fais un update en incrémentant la valeur nombre_erreurs
________tu regardes si il a dépassé le maximum d'erreur que tu autorise
________si il a dépassé le nombre d'erreur
_____________tu genères un .htaccess avec son IP
sinon
________tu crées une entrée

Je te laisse au bon soin de coder tout ca ....
es ce que tu vois un peu le principe ?
0
Barbedebouc
10 juin 2010 à 05:34
bonjour
je vois bien la technique à utiliser mais mes capacités de codage sont limitées, alors pour l'instant je laisse faire ainsi en espérant qu'il en finira, plus de 2000 répertoires à explorer sur mon site à multiplier par 20 à 30000 téléchargements d'images inexistantes, ça peut durer un moment ! Après tout cela ne fait que 5 milliards de mails à gérer !
0
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 192
10 juin 2010 à 09:11
justement, ce script est un bon pretexte pour enrichir tes compétences en programmation...
ca fait un peu de SQL, un peu d'accès aux fichiers, rien de bien sorcier. Suivant la tete du .htaccess que tu as (je ne connais que très peu ces fichiers), ca peut tenir que quelques lignes... du moins avec un .htaccess basique
0
Barbedebouc
11 juin 2010 à 03:41
Un peu compliqué pour moi et manque de temps.
En fait j'ai instauré le contrôle d'erreur suite à une panne de serveur et j'ai du recharger tous mes sites n'ayant pas opté pour l'option backup de mon hébergeur.
Donc des jours d'upload (+/- 30Go) et le contrôle d'erreurs me permet de corriger les "trous" et j'en suis à 2 semaines de corrections mais la fin des erreurs est proche hormis cet em...eur !
Après celà je suspendrai le contrôle d'erreurs (ce que je fais déjà lorsqu'absent de ma bécane) et n'aurai donc plus de génération de mails, toujours ça de gagné sur la BP.
Et lorsqu'il aura fini d'essayer de "pomper" les 5 Milliards d'images inexistantes, je devrais être tranquille.
0
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 192
11 juin 2010 à 12:06
et au lieu de le banir, tu peux pas faire une regle de redirection pour l'envoyer sur une image montrant tes fesses ou un truc dans le genre ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Barbedebouc
12 juin 2010 à 02:46
Je touche du bois, l'exploration de mon site s'est arrêtée depuis hier soir après avoir banni une vingtaine d'IP
Soit il en avait marre de changer d'IP, soit il a corrigé son "aspirateur" et détecte le nombre maxi d'images.
Merci de votre aide
Si ça recommence, verrai avec un développeur comment faire.
0
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 192
12 juin 2010 à 11:35
juste uen question pour ma curiosité. Je connais pas du tout les .htaccess. Comment fais tu pour faire une apge php de gestion d'erreur? Aurais tu un petit exemple simple à me communiquer ?
0
Barbedebouc
12 juin 2010 à 11:53
Vois ma page d'erreur, un peu longuet mais documenté (ce n'est pas de moi, ai juste personnalisé l'affichage bilingue :
<?
# 404.php - Last updated 3/1/2002, initially released 8/10/2000
# Trap 404 errors and mail a notice to the webmaster
# Now requires PHP4
# Copyright 2000-2002 shaun@shat.net under the GPL v2+

# Set these variables to configure the script:

# Set $domain to your domain name (no www)
$domain = "animated-gifs.eu";

# Set $docroot to the URL of the directory which contains your
# .htaccess file. Don't include trailing slash.
$docroot = "http://www.animated-gifs.eu";

# Font face you'd like to use on the 404 page
$fontface = "Verdana";

# Font size you'd like to use on the 404 page
$fontsize = "2";

# Background color of the 404 page (default is white)
$bgcolor = "#ffffff";

# Text color you'd like to use on the 404 page (default is black)
$textcolor = "#000000";

# This script is capable of mailing the details of each 404 error
# to the webmaster. Use the $reportlevel variable to control when
# you receive these reports.
#
# 0 = don't use the email capabilities
# 1 = send email only if the error's referer contains your domain name
#     (i.e. the 404 was generated by a broken link on your site)
# 2 = send email any time a 404 error is generated (useful for tracking
#     broken links at other sites which link to you)

$reportlevel = 2;

# Set $emailaddress to the email address of whoever should be
# notified of 404 errors. Don't escape the @ symbol.
# You can leave this unassigned if you're not using email features.

$emailaddress = "claude.chamagne@orange.fr";

#
#Configuration ends here!
#

#Until I rewrite my scripts, this will suffice for bg-compatibility;
if(phpversion() >= "4.2.0"){
   extract($_POST);
   extract($_SERVER);
   extract($_ENV);
}
# The print_details function is what prints the 404 error to
# the visitor. 

function print_details(){
   # Request access to the global variables we need
   global $fontface, $fontsize, $docroot, $REQUEST_URI, $reportlevel;
   global $bgcolor, $textcolor;

   # Print the 404 error in web format
   echo <<<EOT
<html><head><title>404 Not Found</title></head>
<body bgcolor="$bgcolor" text="$textcolor">
<p align="center"><img src="http://www.animated-gifs.eu/uk.gif" width="29" height="20" border="0"><br>
<font face="$fontface" size="5"><b>Page Not Found</b></p>
<p align="center"><font face="$fontface" size="$fontsize">We're sorry. The page you requested, $docroot$REQUEST_URI, doesn't exist.</font></p>
<p align="center"><a href="http://www.animated-gifs.eu/index.html"><b>Go back to Home Page</b></a></p>
<p align="center"><font face="$fontface" size="$fontsize">The details of this error have automatically been mailed to the webmaster.</font></p>
<hr>
<p align="center"><img src="http://www.animated-gifs.eu/fr.gif" width="29" height="20" border="0"><br>
<font face="$fontface" size="5"><b>Page Non Trouvée</b></p>
<p align="center"><font face="$fontface" size="$fontsize">Désolé, la page $docroot$REQUEST_URI n'existe pas.</font></p>
<p align="center"><a href="http://www.animated-gifs.eu/index-fr.html"><b>Retour à la Page d'Accueil</b></a></p>
<p align="center"><font face="$fontface" size="$fontsize">Les détails concernant cette erreur ont été envoyées automatiquement au webmestre.</font></p>
EOT;
   return;
  }

# The send_email function sends the details of the 404 error to the
# webmaster. 

function send_email(){
   # Request access to the global variables we need
   global $REQUEST_URI, $HTTP_REFERER, $emailaddress, $REMOTE_ADDR, $docroot;

   # Build the $errortime variable to contain the date/time of the error.
   $errortime = (date("d M Y h:m:s")); 

   # Create the body of the email message
   $message .= "Erreur sur http://www.animated-gifs.eu\n";
   $message .= "A 404 error was encountered by $REMOTE_ADDR";
   $message .= " on $errortime.\n\n";
   $message .= "The URL which generated the error is: \n$docroot$REQUEST_URI\n\n";
   $message .= "The referring page was:\n$HTTP_REFERER\n\n";

   # Send the mail message. This assumes mail() will work on your system!
   $headers = "From: $emailaddress\nDate: $errortime -0600\n";
   $subject = "Erreur sur ANIMATED-GIFS";
   mail($emailaddress, $subject, $message, $headers);
   
   return;
  }

# Done with function declarations. Main function begins here.
header("404 Not Found");
# Send a 404 error to the user's browser
print_details();

# See whether or not we should send an email report. If so, do it.
if ($reportlevel != 0)
  if ($reportlevel == 1) {
    if (eregi($domain,$HTTP_REFERER))   
      send_email(); }
  else
     send_email();
   
# Close up the HTML tags
echo "</body></html>";

?>


Et pour voir ce que ça donne voir http://www.animated-gifs.eu/adresse-bidon
(valable juste ce weekend, je suspendrai le contrôle ensuite)
0
Nabla's Messages postés 18203 Date d'inscription mercredi 4 juin 2008 Statut Contributeur Dernière intervention 28 avril 2014 3 192
12 juin 2010 à 14:28
MErci. JE pense m'ettre mal exprimé. La question était plutot comment fais tu pour que cette page PHP soit appellée en cas d'erreur? que précises tu dans le .htaccess ?
0
Barbedebouc
12 juin 2010 à 14:30
voir mon htaccess en début de page
0