22

Como últimamente ando algo paranóico con tanto hacker y spammer que pululan por la red aprovecho para contaros mi última batallita. Hace tiempo me decidí a instalar una herramienta que me ayudara a monitorizar los mensajes de error registrados en todas mis instancias de Dotnetnuke, al final opté por elmah, un sistema de registro de errores para ASP.Net. esta herramienta permite disponer de un RSS de modo que en mi página personalizada de iGoogle, un modulito Google Reader me mantiene informado cómodamente de todo lo que acontece fuera de lugar en mis portales además por supuesto, de recibir otros contenidos más interesantes de diversas fuentes, tales como las novedades de esta web, por ejemplo.

Pues bien, resulta que esta mañana detecto un aumento considerable del número de errores en uno de mis sitios, así que me decido a dedicarle unos minutos a ver si es cuestión trivial y de ser posible subsanarlo a la mayor brevedad, pero el caso es que me ha resultado tan interesante que al final me ha demorado más tiempo del previsto pero creo que ha sido muy provechoso por algunos detalles que he aprendido y descubierto y para que no se pierda en el pozo del olvido (ya que mi memoria RAM está últimamente muy volátil) me he decidido a transcribirlo en este artículo deseando de paso que pueda ser de utilidad para alguien más.

El primer síntoma que me ha alertado ha sido recibir cientos de errores durante las últimas horas tales como este que podeis consultar aquí (en este archivo he falseado algunos datos tales como nombres de dominios, rutas, IP del servidor, pero en esencia contiene toda la información substancial relativa al error), en el que podía ver que todos los errores se originaban en el mismo TabID, en concreto era una página con un módulo News Articles de Ventrian. Lo segundo que me provocó cierta desazón ha sido el valor del encabezado CONTENT_TYPE que era multipart/form-data; boundary=xYzZY a partir del cual he podido averiguar que se trataba del envío de un formulario, (curioso sobre todo el valor "xYzZY" para el atributo boundary, esa extraña cadena que por lo visto tiene mucha literatura detrás) así que mi preocupación iba en aumento temiendo que alguno de esos talentosos y ultra-undergrounds hackers estuviera intentando colarme algún archivo portando un script malicioso para hacerse con el control de mi webs, glurp!!!!

Googleando en busca de información relacionada he descubierto el siguiente web que me parece fabuloso: http://www.projecthoneypot.org, una comunidad de miles de administradores que se dedican a luchar contra el spam y el fraude por Internet, y gracias a las herramientas brindadas por este sitio he podido comprender qué estaba ocurriendo, ya que todas las IP's origen de los errores estaban relacionadas con IP's registradas en este sitio como fuentes de spam, así que ya lo tenía claro, no era un hackers que quisiera colarme un troyano, sino un puñetero spammer enviando mensajitos sin parar, afortunadamente utilizo PageBlaster  para el cacheo de contenidos lo que ha provocado que estas peticiones resultasen en un error de validación del viewstate, de otro modo me habría visto inundado de spam en todos los artículos publicados en esta página. Al final he podido comprobar que en este módulo no había activado el captcha para los comentarios ni la moderación de los mismos, corregido esto espero que el puñetero engendro de spammer pierda el interés por mi web.

También he implementado el servicio HTTP:BL (HTTP BLOCK) en la web, de modo que ahora para todas las visitas se hace una consulta DNS (ultrarápida) que determina si esa IP está registrada como fuente de SPAM y de ser así la redirecciona a una página de error personalizada, esto ha supuesto una mejora inmediata en el número de errores generados por falsos motores de búsqueda, robots de spam, etc... y me ha convencido tanto la medida que me he decidido (y estoy en ello) a crear una implementación para Dotnetnuke de este servicio, cuando la tenga lista la publicaré en este artículo  (ya está lista y podeis conseguirla gratuitamente en Snowcovered). Mientras tanto pueden utilizar las distintas adaptaciones que ya existen para ASP.Net y que referencio líneas abajo.

Confío en no haberles aburrido y que puedan sacar algo de provecho de este ladrillo.

A continuación, un par de implementaciones del servicio HTTP:BL para ASP.Net:

http://code.google.com/p/blacklistprotector/
http://gatekeeper.codeplex.com/

y mi implementación para Dotnetnuke: http://www.snowcovered.com/snowcovered2/Default.aspx?tabid=242&PackageID=17686

De paso, también añado a continuación un enlace de referencia, pese a que no está directamente relacionado con lo expuesto líneas arriba, pero que les ayudará a proteger sus servidores frente a una vulnerabilidad conocida del clásico APS.

http://www.arrownuke.com/consulting/hacking-your-dotnetnuke-site-qry-i-29.aspx

 

 

 

Valoraciones

Comentarios

#
miércoles, 28 de abril de 2010 11:09
Una aportación excelente. Gracias Jose.

Enviar Comentario

Nombre (obligatorio)

Email (obligatorio)

Sitio web

Imagen CAPTCHA
Escriba el código mostrado más arriba: