Existe un tipo de estrategia que se basa en una infección masiva de ordenadores (en algunos casos servidores, en otros casos usuarios domésticos -entre otros-) de forma transparente e invisible para el dueño de la máquina, de forma que se convierten en los llamados ordenadores zombie.
Los dueños de estas redes de bots, descubren servidores con problemas de configuración o diseño (relays abiertos en servidores de correo, o vulnerabilidades en servidores web) y los aprovechan para conseguir controlar la máquina, realizar infecciones de virus y troyanos en equipos domésticos (clientes zombie de IRC camuflados en programas completos), y tretas de todo tipo con la finalidad de convertir el equipo en un zombie de la red.
Así, van consiguiendo un gran número de equipos que obedecerán cualquier orden del dueño de estas redes, llamadas redes de zombies, botnets o redes de bots.
La potencia de estas redes es inmensa, puesto que utilizan una cantidad ingente de equipos destinados a un mismo fin -como por ejemplo- enviar spam, intentar colapsar servidores, ataques de denegación de servicio (D.O.S.), etc.
Por esta razón es muy importante no delegar la seguridad de nuestros equipos informáticos a un segundo plano, sino tener un buen antivirus (¡actualizado!) y un firewall o cortafuegos (bien configurado).
A continuación, una lista de enlaces interesantes para comprobar la seguridad de nuestro sistema y/o tener en cuenta otras posibles amenazas.
Para servidores:
Para usuarios domésticos:
Cada vez que nosotros (o algún sistema) accede a una página web determinada, este acceso es registrado en un log, donde se guardan varios datos, entre ellos el User-agent, que no es más que una identificación del sistema para que los webmasters conozcan de quién se trata.
Pero como siempre, la ley hace la trampa, y muchos robots maliciosos pululando por la red. A continuación voy a crear un pequeño diccionario con los crawlers, robots y spiders más famosos, alguna referencia y una breve descripción.
WordPress/2.0 WordPress 2.1.2 WordPress/1.9
Googlebot/2.1 (+http://www.googlebot.com/bot.html) Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
msnbot/1.0 (+http://search.msn.com/msnbot.htm) msnbot-media/1.0 (+http://search.msn.com/msnbot.htm)
Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp) Mozilla/5.0 (compatible; Yahoo! Slurp China; http://misc.yahoo.com.cn/help.html)
noxtrumbot/1.0 (crawler@noxtrum.com)
Mozilla/5.0 (compatible; Google Desktop)
psbot/0.1 (+http://www.picsearch.com/bot.html)
FAST MetaWeb Crawler (helpdesk at fastsearch dot com)
Mozilla/4.5 (compatible; HTTrack 3.0x; Windows 98)
Yeti/0.01 (nhn/1noon, yetibot@naver.com, check robots.txt daily and follow it)
Mozilla/2.0 (compatible; Ask Jeeves/Teoma; +http://about.ask.com/en...
Scooter/3.3
Snapbot/1.0 (Snap Shots, +http://www.snap.com)
W3C_Validator/1.555 Jigsaw/2.2.5 W3C_CSS_Validator_JFouffa/2.0
TestCrawler/Nutch-0.9 (Testing Crawler for Research ; http://chitchit... TestCrawler/Nutch-0.9 (Testing Crawler for Research ; http://balihoo.com... test/Nutch-0.8.1 (Test robot; http://test.com; info at test.com
BlogPulseLive (support@blogpulse.com)
Gigabot/2.0 (http://www.gigablast.com/spider.html)
ConveraCrawler/0.9e (+http://www.authoritativeweb.com/crawl)
MJ12bot/v1.2.0 (http://majestic12.co.uk/bot.php?+)
Microsoft-WebDAV-MiniRedir/5.1.2600 Jakarta Commons-HttpClient Microsoft URL Control - 6.00.8169 Microsoft URL Control - 6.00.8862 Microsoft URL Control - 6.00.8877 Microsoft URL Control - 6.01.9782
Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1) VoilaBot BETA 1.2 ...
Mozilla/5.0 (Twiceler-0.9 http://www.cuill.com/twiceler/robot.html)
Attentio/Nutch-0.9-dev (Attentio's beta blog crawler;...
Moreoverbot/5.00 (+http://www.moreover.com)
Mozilla/5.0 (compatible; woriobot heritrix/1.10.0 +http://worio.com)
EmeraldShield.com Web Spider ...
Sogou Orion spider/3.0(+http://www.sogou.com/docs/help/webmasters.htm#07
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2.1; aggregator:Tailrank; ...
webcollage 1.93 webcollage 1.129 webcollage 1.125 webcollage 1.114 webcollage 1.117
Speedy Spider (http://www.entireweb.com/about/search_tech/speedy_spider/)
Technoratibot/0.7
Mozilla/5.0 (compatible; YodaoBot/1.0; http://www.yodao.com/...
Mozilla/5.0 (iphone; u; cpu like mac os x; en) applewebkit/420+ ... Opera/9.10 (nintendo wii; u; ; 1621; es-es) Mozilla/4.0 (psp (playstation portable); 2.00)
Evidentemente faltan muchos, pero me he preocupado de poner los más comunes (al menos desde mi experiencia). Confío en ir ampliando el diccionario según lleguen webmasters interesados en el tema. ¡No duden en comentar para ampliar la lista!
El fichero robots.txt es un archivo de texto que dicta unas recomendaciones para que todos los crawlers y robots de buscadores cumplan (¡ojo! recomendaciones, no obligaciones). Pero comencemos por el principio.
Un crawler es un robot de una entidad (generalmente buscadores) que acceden a las páginas web de un sitio para buscar información en ella, añadirla en los buscadores, etc. También son llamados spiders, arañas, bots o indexadores.
Por ejemplo, Googlebot es el nombre del crawler del buscador Google. También existen otros como:
Y muchísimos más. Si establecemos un control en nuestro robots.txt, podremos conseguir una serie de beneficios:
¿Y entonces, que hay que hacer? Es muy sencillo.
Sólo tenemos que crear un fichero de texto robots.txt y comenzar a escribir en el. Partiré del siguiente ejemplo donde permitimos la entrada a todos los crawlers (igual que sin ningún robots.txt):
User-agent: *
Disallow:
En User-agent debemos introducir el nombre del robot, y a continuación las rutas donde queremos prohibir que acceda. Algunos ejemplos:
En algunos casos suele utilizarse en lugar de Disallow, la palabra Allow. Aunque por definición es correcta, es conveniente no utilizarla, puesto que las rutas omitidas se asumen que están permitidas por defecto, y algunos crawlers no entienden la palabra Allow.
Es posible acumular varios Disallow bajo un mismo User-agent, pero no podemos utilizar varios User-agent encima de un Disallow. Bien, algún ejemplo:
# Crawler de MSN
User-agent: msnbot
Disallow: /links.html
Disallow: /private/
Disallow: /photos/
Este código impide al crawler del buscador de Live (MSN) acceder a la página links.html, y las carpetas private y photos (y todo su contenido) de nuestro sitio.
Añadiendo el carácter # al principio de una linea podemos escribir comentarios que no interpretará el crawler.
Es posible ir acumulando reglas para distintos crawlers, formando un robots.txt más largo y completo. Cada vez que escribamos un User-agent deberemos dejar una linea en blanco de separación. Además, existe una ligera adaptación que permiten usar comodines ($ y *) en las rutas en algunos crawlers (sólo Googlebot y Slurp):
User-agent: Slurp
Disallow: /*.js$
Disallow: /2006/*
Disallow: /2007/*
Disallow: /articulos/*/pagina/*
Se está indicando al robot de Yahoo, que no indexe los ficheros que terminen en .js (javascript), direcciones que empiecen por 2007 o 2006 (fechas), ni artículos con la palabra pagina (paginado de comentarios). Estos casos pertenecen a la idea de no indexar contenido duplicado.
En la mayoría de los blogs, puedes acceder a un mismo artículo por las direcciones:
Todo esto es contenido duplicado, una de las razones más importantes de penalización para un buscador, a no ser, claro, que te las ingenies para que sólo sea accesible desde una dirección. A la hora de ver los resultados te asombrarás lo bien que estarás quedando ante los ojos de Google, por ejemplo.
Hay que tener mucho cuidado con usar cosas como Disallow: /pagina o Disallow: /*pagina, puesto que en lugar de bloquear lo que queríamos (carpeta pagina o artículos paginados), terminen bloqueando direcciones como /decorar-mi-pagina o /paginas-para-amigos/.
Si revisas estadísticas y demás, también puedes observar que a veces algunos crawlers «se pasan» revisando nuestro sitio, y funden a peticiones a nuestro pobre servidor. Existe una manera de tranquilizar a los robots:
User-agent: noxtrumbot
Crawl-delay: 30
Con esto le decimos al robot de noxtrum que espere 30 segundos entre cada acceso. Cuidado, porque Crawl-delay no lo soportan todos los crawlers (al menos MSNBot y Slurp si lo soportan, y Googlebot desde el panel de webmasters también).
Finalmente, podemos también incluir un mapa del sitio en nuestro robots.txt de la siguiente forma:
Sitemap: http://www.emezeta.com/sitemap.xml
En RobotsTXT.org podrás encontrar documentación oficial si quieres profundizar y en esta búsqueda de Google encontrarás muchos robots.txt de ejemplo, incluso robots.txt optimizados para tu tipo de web. Además, también tienes un validador de robots.txt.
Recordar a todos que con el fichero robots.txt no podemos bloquear los accesos por «fuerza bruta». Robots.txt es una recomendación del webmaster a los buscadores, que como son «robots buenos», las seguirán al pie de la letra.
Existen otros «robots malos» (que buscan direcciones de correos o formularios para hacer SPAM) que no dudarán en acceder a los lugares que hayas prohibido si lo desean. Para bloquear estos, deberemos echar mano al fichero .htaccess, pero como decía Michael Ende, eso ya es otra historia...
Lo prometido es deuda, y hace algunos días comenté que estaba probando un sencillisimo, pero creo que de momento efectivo repelente de bots spammers, sobre todo los famosos referers spammers entre los que se incluyen clásicos como el texas holdem, casino cash y tantos otros.
Un referer (o referido también llamado en español) es un dato que cada visitante deja al ingresar en un sitio web, dónde muestra desde que sitio web ha llegado. Asi, por ejemplo, al buscar una palabra en Google y pinchar en el primer enlace, el referer del que estamos hablando sería la página de Google.
Conociendo el significado de los referers, nos imaginaremos lo que es el referer spam: publicidad que dejan algunos robots/spammers dejando sus webs como referer a diestro y siniestro. Esto se ha convertido en un verdadero quebradero de cabeza para muchos autores de páginas webs, los cuales sufren tres factores: reducción del ancho de banda consumido por estos parásitos, spam en forma de comentario o mensaje enviado por metodo POST y referers falseados en sistemas de estadísticas, trackers u otros.
Por la red se encuentra bastante información sobre el asunto. Puedo resaltar algunos como Claudio, que comenta una forma de bloquear spam con el Apache. Alex habla de evitar el referer spam en Movable Type y en barrapunto se hicieron eco del tema hace ya varios meses.
El inconveniente de usar métodos cómo modificar configuraciones de Apache, uso de iptables o similares es que la mayoría de los usuarios no tienen dominio sobre estos aspectos o no pueden hacer cambios en ellos. Sin embargo, si lo podrían hacer con otros sistemas como el lenguaje PHP, con las cualidades necesarias de ser sencillo para editar, tener permiso y bloquear a estas especies de sanguijuelas.
La instalación y configuración del script es de lo más sencilla. Lo primero es descargar el script proteccion.php.txt, renombrarlo a proteccion.php e incluirlo en nuestro sitio web. Finalmente lo llamamos desde nuestra página principal en la primera linea con un sencillo:
<?php include('proteccion.php'); ?>
La explicación del código es sencilla. Nos basamos en el uso de PHP como lenguaje y de las expresiones regulares como arma. La variable spammers se encarga de recoger los dominios de los parásitos mientras que la variable referer es la que se encarga de comparar más tarde si el visitante es o no un spammer:
Esperemos que sirva de ayuda a mucha gente y podamos comentar todos los errores o modificaciones que pudieran hacer más interesante la protección.
6 consultas efectuadas / Página generada en 0.034 segundos
Programado íntegramente por José Román (Manz) en XHTML y CSS estándar.
Sindicado bajo Feed RSS. Contenido bajo licencia Creative Commons
Estadísticas de visitas · Términos y condiciones · Contacto · Publicidad · Preguntas frecuentes (FAQ)