En la lucha contra el spam podemos aplicar muchas técnicas, una de ellas es bloquear visitantes por referencias, es decir tomar el valor del HTTP Referrer o mejor dicho bloquear al visitante según la página de la que venga. Con esto podremos lograr disminuir en un porcentaje importante el mal uso de nuestro servidor y con ello evitar gastos innecesarios y riesgos de seguridad potenciales:
En la imagen tenemos varios mensajes de spam que hemos recibido en nuestra aplicación, si nos fijamos a detalle tienen orígenes que podemos aislar, es decir, podemos determinar palabras clave con las cuales identificar de donde vienen los usuarios que colocan estos mensajes no deseados.
El objetivo de estos generadores de spam es atraer visitas y subir sus páginas en los motores de búsqueda utilizando técnicas desleales.
Bloquear la Referencia
Conociendo ya el problema, tenemos la posibilidad de utilizar la flexibilidad y las herramientas de Nginx para evitar que sigamos sufriendo con estos ataques, para ello vamos a hacer uso de la variable $http_referrer, esta nos va a dar información de la URL de donde viene el visitante, así podremos utilizar la información para nuestro beneficio.
Veamos en la siguiente imagen como dentro de un bloque location hemos utilizado la variable mencionada y la emparejamos con un listado de palabras clave que hemos recopilado durante nuestro análisis de los ataques:
Vemos entonces que hemos aplicado un filtro para todo lo que contenga las palabras elegidas, generalmente el spam viene en el idioma inglés, aunque también está en un aumento en otros idiomas, por lo que debemos investigar y ahondar más al momento de hacer el filtro.
En este ejemplo hemos colocado un error 403 de acceso restringido, sin embargo a veces no es recomendable mostrar este tipo de mensaje, ya que podemos estimular al atacante a buscar romper nuestra seguridad, por ello podemos enviar un mensaje 404 o hacer una regla rewrite que envíe a una página vacía, todo esto claro debemos estudiarlo para ver que se acerca más a nuestros requerimientos.
Finalizando el tutorial vemos que tenemos un aliado en Nginx en nuestra lucha contra el spam, al utilizar el bloqueo por referencia también estaremos ayudando a bajar la carga de nuestro servidor al evitar que los generadores de spam puedan interactuar con nuestro site haciendo que se genere carga de procesamiento.