Bot de spam que je ne parviens pas à bloquer

Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics


keroin
WRInaute accro
WRInaute accro
 
Messages: 2299
Inscription: Sam Avr 29, 2006 16:33

Bot de spam que je ne parviens pas à bloquer

Message le Sam Mai 17, 2008 23:30

Bonsoir à tous,
Depuis 2 ou 3 heures un bot spammeur s'attaque à mon phpbb3.
Je l'ai repéré car il génère pas mal de 404 (environ 2000 en quelques heures) et que je reçois un mail dès qu'une 404 est détectée sur mes sites.

Voici son identité
Nom de Domaine : 115.Red-80-39-38.staticIP.rima-tde.net
IP du visiteur : 80.39.38.115

J'ai essayé de bloquer cette sal***rie via htaccess comme je le fait d'habitude pour bloquer les referer que je ne souhaite pas.
J'ai utilisé le code suivant
Code: Tout sélectionner
RewriteCond %{HTTP_REFERER} ^(.*(rima-tde.net).*)$ [NC]
RewriteRule .* - [F,L]

Mais cela semble complétement inefficace et il continu à circuler librement ???
Quelqu'un aurait une idée?
Merci d'avance ;)


keroin
WRInaute accro
WRInaute accro
 
Messages: 2299
Inscription: Sam Avr 29, 2006 16:33

Message le Sam Mai 17, 2008 23:50

Bon il semble que j'ai réussi à le stopper par un simple blocage de son ip
Code: Tout sélectionner
deny from 80.39.38.115

mais ces petites bêtes là changent généralement souvent d'ip et je ne comprend toujours pas pourquoi le blocage de son ndd n'a pas fonctionné.
Si quelqu'un a une explication ?

edd_
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 137
Inscription: Lun Mai 12, 2008 0:15

Message le Dim Mai 18, 2008 1:07

Bon moi j'ai pas d'explication , mais je veu just savoir comment t'as pu detecter le IP du bot ? car j'ai le meme probleme !


keroin
WRInaute accro
WRInaute accro
 
Messages: 2299
Inscription: Sam Avr 29, 2006 16:33

Message le Dim Mai 18, 2008 1:19

J'utilise un script qui m'envoie un mail dès qu'une erreur est détectée (404, 500,...).
Voici la procédure si ça peut te filer un coup de mains ;)

L'auteur de ce script est un membre du forum (Medium69 si je me souviens bien, merci à lui).

Il faut créer un fichier erreur.php avec le code suivant :
Code: Tout sélectionner
<? switch   ($_SERVER['REDIRECT_STATUS']) {
      case 401:
      $mess_erreur = 'Accès à la ressource refusé';
      break;
      case 403:
      $mess_erreur = 'Refus de traitement de la requête';
      break;
      case 404:
      $mess_erreur = 'Document non trouvé';
      $logoErreur = '404';
      break;     
      case 410:
      $mess_erreur = 'La ressource est indisponible et aucune adresse de redirection n\'est connue';
      }

if      (!eregi('(cltreq.asp|owssvr.dll|_vti)', $_SERVER['REQUEST_URI']) && $_SERVER['REDIRECT_STATUS'] != 410 ) {
         if      (empty($_SERVER['HTTP_REFERER'])) {
               $provenance = 'Connexion directe';
               }
         else   {
               $provenance = $_SERVER['HTTP_REFERER'];
               }
         
         $mess   = 'Erreur internet '.$_SERVER['REDIRECT_STATUS']."\n\r";
         $mess   .= 'Provenance : '.$provenance."\n\r";
         $mess   .= 'Url demandée : '.$_SERVER['REQUEST_URI']."\n\r";
         $mess   .= 'Navigateur utilisé : '.$_SERVER['HTTP_USER_AGENT']."\n\r";
         $mess   .= 'Nom de Domaine : '.gethostbyaddr($_SERVER['REMOTE_ADDR'])."\n\r";
         $mess   .= 'IP du visiteur : '.$_SERVER['REMOTE_ADDR'];     
         $to                  = "TON_MAIL";
         $subject            = 'Erreur internet '.$_SERVER['REDIRECT_STATUS'];
         $message            = $mess;
         $headers            = 'From: TON_MAIL'."\r\n".'Reply-To: TON_MAIL'."\r\n";
   
         mail($to, $subject, $message, $headers);
         }
       ?>


=> ne pas oublier d'indiquer ton mail dans le script (3 fois).

Place ensuite ce fichier à la racine de ton site via ftp.

Ensuite, dans ton fichier .htaccess, places les instructions suivantes :
Code: Tout sélectionner
ErrorDocument 400 /erreur.php
ErrorDocument 401 /erreur.php
ErrorDocument 403 /erreur.php
ErrorDocument 404 /erreur.php
ErrorDocument 410 /erreur.php
ErrorDocument 500 /erreur.php


Tu obtiens alors un mail qui t'indique les informations importantes nécessaires.
;)

edd_
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 137
Inscription: Lun Mai 12, 2008 0:15

Message le Dim Mai 18, 2008 1:40

oui c'est claire, merci
Mais cela veut dire que je vais recevoir plus de 30000 mail par jour presque puisque les page erreur sur mon server consomme plus de 30000 hits (j'ai une page d'erreur 404 et 403 .. personnalisé via htaccess ) mais bon savoir l'IP quan meme ;-)


keroin
WRInaute accro
WRInaute accro
 
Messages: 2299
Inscription: Sam Avr 29, 2006 16:33

Message le Dim Mai 18, 2008 1:42

Bah justement, le flux des mails te permet d'identifier l'origine du problème et de le corriger mais également de contrôler si la "rustine" a fonctionné car si il n'y a plus de mail c'est que le blocage est ok ;)

edd_
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 137
Inscription: Lun Mai 12, 2008 0:15

Message le Dim Mai 18, 2008 1:51

oui, je vais créer un email just pour detection de bot :-).
Bn chance pour la suite keroin


medium69
WRInaute accro
WRInaute accro
 
Messages: 2166
Inscription: Sam Mai 07, 2005 9:36

Message le Dim Mai 18, 2008 10:30

Depuis je l'ai modifié un peu...

Tu peux par exemple instruire une base de données pour éviter de crouler sous les mails


medium69
WRInaute accro
WRInaute accro
 
Messages: 2166
Inscription: Sam Mai 07, 2005 9:36

Message le Dim Mai 18, 2008 10:52

Voici ce que j'ai ; a vous de le personnaliser ;)
Sachant que dans le filtre préliminaire, concernant le paramètre GET, dans mon cas, je n'ai aucune page ayant ce paramètre ; donc si on en trouve un, c'est pas normal ;)

Pour les plus curieux, voici les images d'illustration de mes erreurs internet : -http://www.science-et-vie.net/img/graphisme/erreur-404.jpg (qui peut être : 401 403 404 405 406 410 500.jpg)

Code: Tout sélectionner
<?php
// Contrôles préliminaires
if ((preg_match('#/.+/$#U', $_SERVER['REQUEST_URI']) && preg_match('#(compatible; Yahoo! Slurp;|Speedy Spider)#U', $_SERVER['HTTP_USER_AGENT'])) || preg_match('#(\?|%20http).+#U', $_SERVER['REQUEST_URI'])) { // (Visite d'un dossier par un moteur) || (paramètre GET présent ou tentative avérée de piratage)
   $uri = $_SERVER['SCRIPT_URL']; // Url demandée
   $num_erreur = $_SERVER['REDIRECT_STATUS']; // Numéro de l'erreur
   $domaine = gethostbyaddr($_SERVER['REMOTE_ADDR']); // Domaine du visiteur
   
   // Ici recherche des trois paramètres : uri, num-erreur et domaine dans la BDD erreur
   
   if ($nb_uri_erreur == 1) {   // Si trouvé sans la BDD         
      // On enregistre la date de visite et on incrémente un compteur de visite
   } else {
      // On enregistre les nouvelles informations : uri, num-erreur et domaine dans la BDD erreur, date de visite, et compteur de visite à 1
   }
   
   // On génère une 301 pour ne pas afficher de page d'erreur
   header ('HTTP/1.1 301 Moved Permanently');
   header('Location: http://www.science-et-vie.net/');
   exit;
}

// Ici incrémenter un compteur pour chaque erreur dans un BDD : 401, 403, 404, etc.
// Récupération du compteur de visite pour l'erreur dite

if ($nb_erreur == 1) {
   $nb_erreur = 'première';
} else {
   $nb_erreur = number_format($sql_result['erreur_nbTotal'], 0, ',', ' ').'<sup>ème</sup>';
}

$url = 'http://'.$_SERVER['SERVER_NAME'].$uri;
$compte_erreur = '<p class="alignCenter">Il s\'agit de la '.$nb_erreur.' erreur '.$_SERVER['REDIRECT_STATUS'].' depuis le 12 mai 2008 !</p>';

switch ($_SERVER['REDIRECT_STATUS']) { // Numéro de l'erreur internet
   case 401:
      $mess_erreur = '<h2 class="alignCenter">Accès à la ressource refusée.</h2>';
      $mess_erreur .= $compte_erreur;
      $mess_erreur .= '<ul><li>Cette page demande une autorisation que vous n\'avez visiblement pas.</li>';
      $mess_erreur .= '<li>Si vous pensez que vous êtes en droit d\'y accéder, je vous invite à prendre contact avec l\'administrateur du site.</li>';
      $mess_erreur .= '<li>Quelques informations vous concernant ont été envoyées à l\'administrateur par sécurité.</li></ul>';
      $logo_erreur = 'erreur-401.jpg';
      break;
   case 403:
      $mess_erreur = '<h2 class="alignCenter">Refus de traitement de la requête.</h2>';
      $mess_erreur .= $compte_erreur;
      $mess_erreur .= '<ul><li>Cette page ou ce dossier est interdit d\'accès à tous visiteurs.</li>';
      $mess_erreur .= '<li>Quelques informations vous concernant ont été envoyées à l\'administrateur par sécurité.</li></ul>';
      $logo_erreur = 'erreur-403.jpg';
      break;
   case 404:
      $mess_erreur = '<h2 class="alignCenter">Document non trouvé.</h2>';
      $mess_erreur .= $compte_erreur;
      $mess_erreur .= '<ul><li>Cette page est peut-être déplacée ou supprimée ; dans ce cas cette erreur sera vite réparée.</li>';
      $mess_erreur .= '<li>Si vous avez cliqué sur un lien présent sur autre site, il est possible que l\'information n\'ai pas suivie.</li>';
      $mess_erreur .= '<li>Si vous avez tapé l\'adresse directement, vous avez peut-être fait une erreur de frappe dans la saisie.</li></ul>';
      $logo_erreur = 'erreur-404.jpg';
      break;
   case 405:
      $mess_erreur = '<h2 class="alignCenter">Méthode de requête non autorisée.</h2>';
      $mess_erreur .= $compte_erreur;
      $mess_erreur .= '<ul><li>La méthode spécifiée à la ligne de requête n\'est pas autorisée pour la ressource identifiée par cette dernière.</li>';
      $mess_erreur .= '<li>Assurez-vous que la configuration du type MIME pour la ressource que vous demandez est approprié.</li></ul>';
      $logo_erreur = 'erreur-405.jpg';
      break;   
   case 406:
      $mess_erreur = '<h2 class="alignCenter">Inacceptable.</h2>';
      $mess_erreur .= $compte_erreur;
      $mess_erreur .= '<ul><li>La ressource identifiée par la demande ne peut générer que des entités de réponse possédant des caractéristiques de contenu « non acceptables » compte tenu des en-têtes Accept envoyés dans la demande.</li></ul>';
      $logo_erreur = 'erreur-406.jpg';
      break;   
   case 410:
      $mess_erreur = '<h2 class="alignCenter">Ressource indisponible.</h2>';
      $mess_erreur .= $compte_erreur;
      $mess_erreur .= '<ul><li>Cette page a été supprimée et aucune adresse de redirection n\'est connue.</li>';
      $mess_erreur .= '<li>Si vous avez cliqué sur un lien présent sur autre site, il est possible que l\'information n\'ai pas suivie.</li></ul>';
      $logo_erreur = 'erreur-410.jpg';
      break;
   case 500:
      $mess_erreur = '<h2 class="alignCenter">Erreur interne du serveur.</h2>';
      $mess_erreur .= $compte_erreur;
      $mess_erreur .= '<ul><li>Le serveur a rencontré une erreur interne inconnue et n\'a donc pas pu traiter votre demande.</li>';
      $mess_erreur .= '<li>Il a du être distrait par cette jolie créature... Revenez donc un peu plus tard !</li></ul>';
      $logo_erreur = 'erreur-500.jpg';
}

$img_infos = getimagesize($logo_erreur); // Taille de l'image


// Affichage du contenu
echo '<p><img src="'.$logo_erreur.'" alt="Illustration pour l\'erreur internet '.$_SERVER['REDIRECT_STATUS'].'" '.$img_infos[3].' /><br />
<strong>Url demandée : « '.$url.' »</strong></p>';
                  

   
   $mail_sujet = 'Erreur internet '.$_SERVER['REDIRECT_STATUS']; // Sujet de l'e-mail
   
   if (!isset($_SERVER['HTTP_REFERER'])) {
      $url_referant = 'Connexion directe';
   } else {
      $url_referant = $_SERVER['HTTP_REFERER'];
   }
   
   // Contenu de l'e-mail
   $mess_admin .= 'Code erreur internet : '.$_SERVER['REDIRECT_STATUS']."\n\r".
   'Date et heure d\'accès '.strftime('%A %e %B %Y à %R', $_SERVER['REQUEST_TIME'])."\n\r".
   'Url demandée : '.$_SERVER['REQUEST_URI']."\n\r".
   'Provenance : '.$url_referant."\n\r".
   'Navigateur utilisé : '.$_SERVER['HTTP_USER_AGENT']."\n\r".
   'Méthode utilisée : '.$_SERVER['REQUEST_METHOD']."\n\r".
   'Chaine de requête : '.$_SERVER['QUERY_STRING']."\n\r".
   'Nom de Domaine : '.gethostbyaddr($_SERVER['REMOTE_ADDR'])."\n\r".
   'IP du visiteur : '.$_SERVER['REMOTE_ADDR']."\n\r".
   'Langue de l\'OS : '.$_SERVER['LANG']."\n\r".
   
   // En-têtes de l'email
   $mail_header = 'From: '.MAIL_NO_REPLY."\r\n".
   'Reply-To: '.MAIL_NO_REPLY."\r\n";
   
   // Données de l'email
   $mail_dest = MAIL_ADMIN;
   
   mail($mail_dest, $mail_sujet, $mess_admin, $mail_header);

echo $mess_erreur.'
<p>Si nécessaire, vous pouvez vous servir du formulaire de recherche en haut de page pour trouver la page désirée.</p>
</div>';
?>


Je vous laisse gérer cela si vous voulez utilisez une BDD

J'ai oublier le .htaccess :
Code: Tout sélectionner
ErrorDocument 400 /erreur.php
ErrorDocument 401 /erreur.php
ErrorDocument 402 /erreur.php
ErrorDocument 403 /erreur.php
ErrorDocument 404 /erreur.php
ErrorDocument 405 /erreur.php
ErrorDocument 406 /erreur.php
ErrorDocument 407 /erreur.php
ErrorDocument 408 /erreur.php
ErrorDocument 409 /erreur.php
ErrorDocument 410 /erreur.php
ErrorDocument 411 /erreur.php
ErrorDocument 412 /erreur.php
ErrorDocument 413 /erreur.php
ErrorDocument 414 /erreur.php
ErrorDocument 415 /erreur.php
ErrorDocument 500 /erreur.php
ErrorDocument 501 /erreur.php
ErrorDocument 502 /erreur.php
ErrorDocument 503 /erreur.php
ErrorDocument 504 /erreur.php
ErrorDocument 505 /erreur.php

edd_
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 137
Inscription: Lun Mai 12, 2008 0:15

Message le Dim Mai 18, 2008 22:19

Autrement dit , est ce possible de savoir le suivi de page et les IP qui on passés dessus ?
Exemple de page erreur.php , comment connaitre un tel IP d'un utilisateur passé sur une tel page ?


keroin
WRInaute accro
WRInaute accro
 
Messages: 2299
Inscription: Sam Avr 29, 2006 16:33

Message le Dim Mai 18, 2008 22:27

Reformules ta question car là ... rien compris :?

ps : merci Medium il a l'air beaucoup plus complet maintenant, beau boulot ;)
ps2 : c'est quoi ce lien ??? :lol: :lol:
=>-http://www.science-et-vie.net/img/graphisme/erreur-404.jpg


medium69
WRInaute accro
WRInaute accro
 
Messages: 2166
Inscription: Sam Mai 07, 2005 9:36

Message le Dim Mai 18, 2008 23:00

keroin a écrit:Reformules ta question car là ... rien compris :?

ps : merci Medium il a l'air beaucoup plus complet maintenant, beau boulot ;)
ps2 : c'est quoi ce lien ??? :lol: :lol:
=>-http://www.science-et-vie.net/img/graphisme/erreur-404.jpg


C'est vrai qu'il y a une grande métaphore avec les illustrations des erreurs (voir aussi les autres)... effectivement pour ma 404, rien ne s'y trouve là où tu as bien voulu regarder ^^

Je reconnais aussi que c'est un peu en décalage avec le site, mais c'est amusant justement ;)

edd_
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 137
Inscription: Lun Mai 12, 2008 0:15

Message le Dim Mai 18, 2008 23:21

le code donné indique l'IP visité sur la page erreur. si je voulai savoir la meme chose pour d'autres page du site par exemple ? que faire !
c'est claire je suppose


medium69
WRInaute accro
WRInaute accro
 
Messages: 2166
Inscription: Sam Mai 07, 2005 9:36

Message le Dim Mai 18, 2008 23:26

edd_ a écrit:le code donné indique l'IP visité sur la page erreur. si je voulai savoir la meme chose pour d'autres page du site par exemple ? que faire !
c'est claire je suppose


La page d'erreur est générée automatiquement lors de la visite d'une url créant une erreur internet.

Si maintenant, tu veux récupérer l'ip sur des pages valides de ton site, dans ce cas, il te faut récupéré l'ip sur chacune de tes pages.

Mais franchement, je n'en vois pas l'intérêt si il n'y a pas de soucis.

edd_
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 137
Inscription: Lun Mai 12, 2008 0:15

Message le Dim Mai 18, 2008 23:38

Ah oui
ErrorDocument 400
evidement, dsl :roll:
Ma tete tourne, je doit prendre une café :wink:

Bot de spam que je ne parviens pas à bloquer

Formation recommandée sur ce thème :

Formation URL Rewriting et sites dynamiques : apprenez comment mettre en place la réécriture d'URL, comment optimiser vos URL et profiter de vos pages dynamiques pour booster votre référencement. Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités