2010-09-29 9 views
5

Tengo un cliente cuyo dominio parece ser golpeado bastante duro por lo que parece ser un DDoS. En los registros, se trata de agentes de usuario de aspecto normal con direcciones IP aleatorias, pero están hojeando las páginas demasiado rápido para ser humanos. Tampoco parecen estar solicitando ninguna imagen. Parece que no puedo encontrar ningún patrón y mi sospecha es que es una flota de zombis de Windows.BOT/Trampa de arañas Ideas

Los clientes tuvieron problemas en el pasado con ataques de SPAM, incluso tuvieron que apuntar a MX en Postini para que los 6.7 GB/día de basura pararan en el servidor.

Quiero configurar una trampa BOT en un directorio no permitido por robots.txt ... ¡nunca intenté algo como esto antes, esperando que alguien tenga ideas creativas para atrapar BOT!

EDIT: Ya tengo muchas ideas para atrapar una ... es lo que debe hacer cuando cae en la trampa.

+3

Esta es una pregunta fascinante, y me encantaría ver algunas de las respuestas. Pero sospecho que podría ser una mejor opción para [Server Fault] (http://serverfault.com). –

+1

Estoy de acuerdo, pero los desarrolladores son mucho más creativos que los profesionales de TI ... ¡lol! – Mikey1980

+1

Pero alguien ya "creó" esta solución, y los técnicos de TI son muy buenos para implementarla. –

Respuesta

0

Primero puede ver de dónde vienen las ip. Supongo que todos vienen de un país como China o Nigeria, en cuyo caso puedes configurar algo en htaccess para deshabilitar todas las ip de esos dos países, como para crear una trampa para bots, no tengo la menor idea

+0

IPs están por todos lados ... que en el caso del SPAM era bastante obvio que los orígenes eran máquinas Windows infectadas. – Mikey1980

6

Puede configurar un script PHP cuya URL esté explícitamente prohibida por robots.txt. En esa secuencia de comandos, puede extraer la IP de origen del bot sospechoso que lo golpea (a través de $ _SERVER ['REMOTE_ADDR']), y luego agregar esa IP a una tabla de lista negra de la base de datos.

Luego, en su aplicación principal, puede verificar la IP de origen, buscar esa IP en su tabla de lista negra, y si la encuentra, arroje una página de 403 en su lugar. (Tal vez con un mensaje como: "Hemos detectado abuso proveniente de su IP, si cree que es un error, contáctenos en ...")

Por el lado positivo, se obtiene la lista negra automática de bots malos. En el lado negativo, no es terriblemente eficiente, y puede ser peligroso. (Una persona que revisa inocentemente esa página por curiosidad puede resultar en la prohibición de una gran franja de usuarios)

Editar: Alternativamente (o adicionalmente, supongo) simplemente puede agregar un cheque GeoIP a su aplicación, y rechazar hits según el país de origen.

+6

Puede tener algún tipo de captcha para automatizar la lista negra para personas reales que hagan clic en ella. –

+0

Ooh, sí, buena idea. –

+0

tuviste la mejor respuesta ... implementó estas soluciones sorta (no las almacenó en db), las combinó con la sugerencia de Scott y un pequeño bot torcher. Ver mi respuesta para más detalles – Mikey1980

1

Lo que puedes hacer es obtener otra caja (una especie de cordero sacrificado) que no esté en el mismo conducto que tu host principal y que tenga una página que se redirija a sí misma (pero con un nombre de página aleatorio en la url). esto podría hacer que el robot se atasque en un ciclo infinito atando la CPU y el ancho de banda en su cordero sacrificado pero no en su caja principal.

1

Tiendo a pensar que este es un problema mejor resuelto con la seguridad de la red que la codificación, pero veo la lógica en su enfoque/pregunta.

Hay una serie de preguntas y discusiones sobre esto en la falla del servidor que pueden ser dignas de investigar.

https://serverfault.com/search?q=block+bots

1

Bueno debo decir, un poco decepcionado - que estaba esperando algunas ideas creativas. Lo que encontrar las soluciones ideales aquí .. http://www.kloth.net/internet/bottrap.php

<html> 
    <head><title> </title></head> 
    <body> 
    <p>There is nothing here to see. So what are you doing here ?</p> 
    <p><a href="http://your.domain.tld/">Go home.</a></p> 
    <?php 
     /* whitelist: end processing end exit */ 
     if (preg_match("/10\.22\.33\.44/",$_SERVER['REMOTE_ADDR'])) { exit; } 
     if (preg_match("Super Tool",$_SERVER['HTTP_USER_AGENT'])) { exit; } 
     /* end of whitelist */ 
     $badbot = 0; 
     /* scan the blacklist.dat file for addresses of SPAM robots 
     to prevent filling it up with duplicates */ 
     $filename = "../blacklist.dat"; 
     $fp = fopen($filename, "r") or die ("Error opening file ... <br>\n"); 
     while ($line = fgets($fp,255)) { 
     $u = explode(" ",$line); 
     $u0 = $u[0]; 
     if (preg_match("/$u0/",$_SERVER['REMOTE_ADDR'])) {$badbot++;} 
     } 
     fclose($fp); 
     if ($badbot == 0) { /* we just see a new bad bot not yet listed ! */ 
     /* send a mail to hostmaster */ 
     $tmestamp = time(); 
     $datum = date("Y-m-d (D) H:i:s",$tmestamp); 
     $from = "[email protected]"; 
     $to = "[email protected]"; 
     $subject = "domain-tld alert: bad robot"; 
     $msg = "A bad robot hit $_SERVER['REQUEST_URI'] $datum \n"; 
     $msg .= "address is $_SERVER['REMOTE_ADDR'], agent is $_SERVER['HTTP_USER_AGENT']\n"; 
     mail($to, $subject, $msg, "From: $from"); 
     /* append bad bot address data to blacklist log file: */ 
     $fp = fopen($filename,'a+'); 
     fwrite($fp,"$_SERVER['REMOTE_ADDR'] - - [$datum] \"$_SERVER['REQUEST_METHOD'] $_SERVER['REQUEST_URI'] $_SERVER['SERVER_PROTOCOL']\" $_SERVER['HTTP_REFERER'] $_SERVER['HTTP_USER_AGENT']\n"); 
     fclose($fp); 
     } 
    ?> 
    </body> 
</html> 

Luego de proteger páginas tiran <?php include($DOCUMENT_ROOT . "/blacklist.php"); ?> en la primera línea de cada página ..blacklist.php contiene:

<?php 
    $badbot = 0; 
    /* look for the IP address in the blacklist file */ 
    $filename = "../blacklist.dat"; 
    $fp = fopen($filename, "r") or die ("Error opening file ... <br>\n"); 
    while ($line = fgets($fp,255)) { 
     $u = explode(" ",$line); 
     $u0 = $u[0]; 
     if (preg_match("/$u0/",$_SERVER['REMOTE_ADDR'])) {$badbot++;} 
    } 
    fclose($fp); 
    if ($badbot > 0) { /* this is a bad bot, reject it */ 
     sleep(12); 
     print ("<html><head>\n"); 
     print ("<title>Site unavailable, sorry</title>\n"); 
     print ("</head><body>\n"); 
     print ("<center><h1>Welcome ...</h1></center>\n"); 
     print ("<p><center>Unfortunately, due to abuse, this site is temporarily not available ...</center></p>\n"); 
     print ("<p><center>If you feel this in error, send a mail to the hostmaster at this site,<br> 
      if you are an anti-social ill-behaving SPAM-bot, then just go away.</center></p>\n"); 
     print ("</body></html>\n"); 
     exit; 
    } 
?> 

planeo tomar el consejo de Scott Chamberlain y ser seguro, pienso implementar Captcha en el guión. Si el usuario responde correctamente, simplemente va a die o lo redireccionará a la raíz del sitio. Solo por diversión, estoy lanzando la trampa en un directorio llamado /admin/ y de cursivo agregando Disallow: /admin/ a robots.txt.

EDIT: Además estoy reorientando el robot haciendo caso omiso de las reglas a esta página: http://www.seastory.us/bot_this.htm

+2

qué enfoque tan tonto. matará a tu sitio más rápido que cualquier ataque de ddos ​​(aunque dudo que hayas visto uno todavía). –

Cuestiones relacionadas