Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Spam bots en blogs y como detenerlos
#1
Cita:Estudio con recomendaciones para construir un sistema que bloquee accesos de spammers. Trabajaremos sobre el fichero .htaccess de nuestro Apache, donde bloquearemos según la naturaleza de los spam bots.

Uno de los mayores problemas en un blog se da cuando se empieza a recibir comentarios de spam que llenan nuestros artículos de mensajes no deseados: casinos, pastillas de viagra y hasta en algunos casos spyware o falsos antivirus. Cualquiera podría pensar, que bastaría con bloquear los accesos a la página web del spammer y listo. El problema es que, usualmente, no se trata de un ataque individual, sino de una amenaza mayor, un ataque distribuido.

Este tipo de ataques, las llamadas redes de bots están formadas por cientos, miles (o más) de ordenadores que pertenecen a personas individuales e independientes, infectadas (sin ser conscientes de su infección ni de las consecuencias) por malware o troyanos que convierten su ordenador en un zombie manipulable.

Cita:*Bloquear miles de accesos de diferente naturaleza (pais, navegador, proveedor...) se convierte en una tarea muy complicada y aunque existen varios sistemas para bloquear y filtrar estos ataques, voy a proponer un método distinto por varios motivos que afectan a la mayoría de sistemas:
*Producen un consumo alto de recursos del servidor.
*Producen falsos positivos (comentarios legítimos como spam).
*Dependen de servicios de terceros. En algunos casos es necesaria la moderación. No actuan sobre el foco original del problema.

Es por ello, que he realizado un pequeño estudio para crear el siguiente informe con varias recomendaciones para construir un sistema que bloquee accesos de spammers. Trabajaremos sobre el fichero .htaccess de nuestro Apache, donde iremos bloqueando según la naturaleza de los spam bots.

NOTA: Como se verá posteriormente, en lugar de bloquear la petición haré una redirección a una carpeta llamada malware con la variable GET ident seteada a una determinada cadena. En esa ruta existirá un script que registrará ciertos datos de los accesos (ip, host, pais, referer, petición, agente de usuario...) para mantener unas estadísticas de los spambots bloqueados, su naturaleza y descubrir nuevos patrones, para luego mostrar un error 404 y simular que no existe:

Código:
if (isset($_GET['ident'])) { $log = fopen($_SERVER['DOCUMENT_ROOT'] . "/malware/spam.log", 'a+'); $msg = $_GET['ident'] . ' ' . date('Y-m-d H:i:s') . ' ' . $_SERVER['REMOTE_ADDR'] . ' ' . $_SERVER['HTTP_USER_AGENT'] . "\n"; fwrite($log, $msg); fclose($log); } header("HTTP/1.0 404 Not Found"); exit(0);

Si tu intención es sólo bloquearlos, y no te preocupan otras cosas como el registro de accesos, reemplaza la línea RewriteRule de los siguientes códigos por la siguiente:

Código:
RewriteRule .* - [F]

Esto, hará que los bloquee con un código HTTP 403.
====
explicación de que es el error HTTP 403:
http://www.ehowenespanol.com/significa-h...fo_462607/
====

[NOTA]dentro de la carpeta malware hay que desactivar las redirecciones para evitar dejar el Apache en un bucle infinito. Para ello en el fichero .htaccess de la carpeta malware escribimos:

Código:
RewriteEngine off


La misteriosa flecha
Probablemente se trate de un spambot mal configurado, pero lo cierto es que varias redes de botnets tienen las peticiones de sus spambots de modo que se les «escapa» un patrón poco común en peticiones HTTP.

Código:
210.126.72.42 - - [19/Sep/2008:04:53:10 -0700] "GET /tag/consumo%2BBA/ GET http://www.lacosacawaiideestetuto.com/tag/consumo%2Bcpu/ [0,30618,48635] -> HTTP/1.0" 301 263 "www.lacosacawaiideestetuto.com/tag/consumo%2Bcpu/ GET www.lacosacawaiideestetuto.com/tag/consumo%2Bcpu/ [0,30618,48635] ->" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Crazy Browser 2.0.0 Beta 1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)"

Lo aprovecharemos para bloquearlo, introduciendo en el fichero .htaccess lo siguiente:

Código:
RewriteCond %{SERVER_PROTOCOL} " -> " [OR] RewriteCond %{REQUEST_METHOD} " -> " [OR] RewriteCond %{HTTP_REFERER} " -> " RewriteRule .* /malware/?ident=arrow-spam

La IP oculta

Algouos bots se aprovechan de ciertos trucos para evitar ser identificados. Uno de ellos es aprovechar servidores Apache con HostnameLookups activado (resolver las DNS inversa / hostname) de la IP del usuario. Esa información suele ser una cadena que da información acerca del ISP, IP enmascarada u otros datos. No todos los usuarios deben tener DNS inverso, es más, los spammers acostumbran no tenerlo para hacer más dificil su identificación. En este caso, el spammer camufla la IP en un DNS inverso que es un único punto (.) buscando la confusión y que no se registre la IP en los logs, ni se tenga forma de resolverla.

Código:
RewriteCond %{REMOTE_HOST} ^\.$ RewriteRule .* /malware/?ident=dot-spam

El spammer no canónico
Este es bastante ingenioso. En múltitud de casos, lo ideal es tener nuestra página web bajo una URL canónica, o lo que es lo mismo, que sólo podamos acceder a una dirección unívoca. Un ejemplo sería que al entrar en http://www.skylium.com y a skylium.com sólo una de las dos direcciones prevalezca. Con el siguiente código se puede conseguir (prevalece con www):

Código:
RewriteCond %{SERVER_NAME} ^sitioweb.com$ [NC] RewriteRule ^(.*)$ http://www.sitioweb.com/$1 [R=301]

Muchos spammers se «inventan» que vienen (referer) del sitio web al que están atacando, para que el servidor crea que es un usuario legítimo. Claro que, si tenemos esta característica canónica, parece que casi todos los spammers se olvidan de incluir el «www». Por lo tanto, si un usuario viene de otra página debe tener www, en caso contrario (no se puede dar), es un spammer.

Código:
RewriteCond %{HTTP_REFERER} "^http://sitioweb.com/" [NC] RewriteRule .* /malware/?ident=canonical-spam

Uno de los filtros más sencillos pero, sorprendentemente, de los más potentes y efectivos es el bloquear accesos simplemente por su Agente de Usuario (User Agent). Pero ojo, hay que ser muy selectivo y sólo bloquear a los agentes que se esté completamente seguro de que son spam bots.
Por ejemplo, lwp-request (comando de UNIX), WWW-Mechanize o libwww-perl (módulos para Perl) y Jakarta Commons-HttpClient (extensión Jakarta) son algunos de los sistemas que, aunque no fueron concebidos para crear este tipo de malware, los hacen un sistema muy sencillo (y frecuente) para crear spam bots.

Código:
RewriteCond %{HTTP_USER_AGENT} "^(Java|lwp-request|WWW-Mechanize|libwww-perl|Attentio|ePochta_Extractor|Jakarta Commons-HttpClient)/" RewriteRule .* /malware/?ident=badagent-spam

Resultados

Y ahora viene lo interesante. Después de menos de una semana de pruebas, los resultados son bastante tentadores, así que los muestro a continuación:

Código:
# wc -l spam.log 2476 spam.log

2.476 accesos de spam bloqueados.

Espero esta guía o información sean de su ayuda

Fuente:Mis libretas de cursos en seguridad web!
Cosas por hacer en skylium:
Ser feo []
Tener 50 mensajes [X]
Tener 50 post [X]
Ser moderador [X]
Tener reputación [Ver]
Tener un post marcado "importante"[]
WWW
#2
Muy buen post !! Tuve conocidos con problemas con sus foros que tenian comentarios de spam. Se puede usar las mismas técnicas para quitar estos mensajes. Sonrisa !! Muy Bueno !!
#3
Gracias Alberto!

Desde hace tiempo sufro ésto. Pero es extraño porque tengo códigos captcha que se los saltan... Incluso se llegan a registrar nuevos usuarios en la web (que son spammers) validando el correo de confirmación necesario para que se les active la cuenta... ¿son bots o son personas?

Sobre estos métodos quisiera preguntarte si no estaríamos bloqueando también a usuarios humanos legítimos? Sobre todo en el caso del método Canonical, si un usuario humano no introduce las www para acceder a nuestra web.

Gracias!
#4
Muy buen aporte.
El spam el gran problema de blogs y foros, pero tomando medidas es posible evitarlos.
[Imagen: cba745de401dd4ca4069d42828120f60o.png]
WWW
#5
Muy bueno este aporte ! Gracias @alberto_es lo voy a probar jejeje
Metas En Skylium
30 mensajes [] | 100 mensajes [] | 250 mensajes [] | 25 de reputación [] | 100 de reputación []
#6
Codigos muy muy útiles, con esto por fin podré como detener a esos malditos bots con esto xD

Por fin podré tener tranquilidad en mis blog, post excelente y de calidad

Saludos
#7
Gracias por el aporte, me viene muy bien este codigo, por que a parte del spam en mi web, se estan registrando usuarios con nombres y emails muy raros y me da la sospecha de que son bots spammers. Espero poder acabar con este problema cuanto antes y gracias de nuevo!!! Sonrisa


Posibles temas similares...
Tema Autor Respuestas Vistas Último mensaje
  reCAPTCHA: fácil para humanos, ¿difícil para bots? Kevin9908 3 371 30-06-2015, 08:13 PM
Último mensaje: garcon
  Enlaces oficiales para instalar blogs en nuestra web aerotuning 4 519 01-05-2015, 07:03 PM
Último mensaje: mispracticas2009
  (ayuda) problema envio de spam esteban 9 1,348 02-07-2013, 06:06 PM
Último mensaje: esteban
  [Importante] Stop Forum Spam Nomak 8 806 17-06-2013, 04:24 PM
Último mensaje: DannecraftWTF
  Clase Anti-Bots en PHP HILARION 2 669 07-05-2012, 04:34 PM
Último mensaje: deathman
  [Nuevo Proyect] Blogs [¿Quieres ayudar?] edisson 5 704 26-02-2012, 09:16 PM
Último mensaje: papi
  Como colocar un enlace de #TOP como en cuantocabron Juliens 5 1,497 21-12-2011, 12:43 AM
Último mensaje: hackcrack
  alguien me explica que es el Spam...? shackur 6 799 16-09-2011, 12:13 AM
Último mensaje: clubmundofm



Usuarios navegando en este tema: 1 invitado(s)