nginx referrer-spam

¿Cómo bloquear spam de referencia usando Nginx?



referrer-spam (4)

Estoy ejecutando dos mongrels bajo un servidor Nginx. Sigo recibiendo solicitudes de un archivo inexistente. Las direcciones IP cambian con frecuencia pero la URL de referencia permanece igual. Me gustaría resolver esto.


He estado en una situación similar antes en la que necesitaba bloquear personas en función del comportamiento en lugar de otras reglas arbitrarias que un firewall podría resolver por sí mismo.

La forma en que resolví el problema fue hacer que mi lógica (Rails en su caso) hiciera el bloqueo ... Pero un largo camino:

  • Haga que su lógica mantenga una lista de bloqueo como un archivo de texto claro separado de nueva línea.
  • Cree un script bash (u otro) como root para leer este archivo y agregar sus escuchas a la lista de bloqueo de su firewall
  • Cree un trabajo cron para llamar al script, de nuevo, como root

La razón por la que lo hago de esta manera (en lugar de solo dar permisos a Django para alterar la configuración del firewall) es simplemente: seguridad. Si mi aplicación fue pirateada, no me gustaría que lastime a otra cosa.

El script bash es algo como esto:

exec < /path/to/my/djago-maintained/block-list while read line do iptables -A INPUT --source $line/32 -j DROP done


https://calomel.org/nginx.html

Bloquee la mayoría del "spam de referencia" - "más de una molestia que un problema"

nginx.conf

## Deny certain Referers (case insensitive) ## The ~* makes it case insensitive as opposed to just a ~ if ($http_referer ~* (babes|click|diamond|forsale|girl|jewelry|love|nudit|organic|poker|porn|poweroversoftware|sex|teen|video|webcam|zippo)) { return 403; }



Usar el módulo de mapas de Nginx es un poco más eficiente y fácil de administrar ya que la lista se alarga.

Pon esto en tu bloque http {}:

map $http_referer $bad_referer { hostnames; default 0; # Put regexes for undesired referers here "~social-buttons.com" 1; "~semalt.com" 1; "~kambasoft.com" 1; "~savetubevideo.com" 1; "~descargar-musica-gratis.net" 1; "~7makemoneyonline.com" 1; "~baixar-musicas-gratis.com" 1; "~iloveitaly.com" 1; "~ilovevitaly.ru" 1; "~fbdownloader.com" 1; "~econom.co" 1; "~buttons-for-website.com" 1; "~buttons-for-your-website.com" 1; "~srecorder.co" 1; "~darodar.com" 1; "~priceg.com" 1; "~blackhatworth.com" 1; "~adviceforum.info" 1; "~hulfingtonpost.com" 1; "~best-seo-solution.com" 1; "~googlsucks.com" 1; "~theguardlan.com" 1; "~i-x.wiki" 1; "~buy-cheap-online.info" 1; "~Get-Free-Traffic-Now.com" 1; }

Pon esto en tu servidor {} bloque:

if ($bad_referer) { return 444; # emtpy response }

Funcionó para mí

Obtuve esto de http://fadeit.dk/blog/post/nginx-referer-spam-blacklist