2009-01-19 19 views
9

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.¿Cómo bloquear spam de referencia con Nginx?

Respuesta

10

https://calomel.org/nginx.html

bloquear la mayoría "de referencia spam" - "más 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; } 
+0

Las referencias de bloqueo con un operador ~ * es solo un "amor" regex que coincidirá con "live-your-website" y las referencias como esta – Garistar

1

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

La forma en que trabajaron todo el problema era hacer mi lógica (Carriles en su caso) hacen el bloqueo ... Sin embargo, un camino más largo:

  • Haga que su lógica de mantener un bloque de lista como una archivo de texto claro separado de nueva línea.
  • Crear una fiesta (u otro) script como root para leer este archivo y añadir sus listees a la lista de bloqueo del firewall
  • Crear una tarea programada para llamar a la secuencia de comandos, de nuevo, como root

La razón por la que hacerlo de esta manera (en lugar de simplemente 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.

guión La fiesta 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 
+0

se puede apuntar a un tutorial sobre este tipo de bloqueo? Realmente no entiendo tu solución. muchas gracias por ayudar. Estoy tratando de encontrar una solución en el mejor lugar que conozco (stackoverflow :-) pero no quiero que sea moderada sin una buena razón. – Jesse

+0

Nunca he visto un tutorial para algo como esto y no sé cuál es su nombre propio (si lo tiene) es ... Esto es lo que me vino a la mente cuando tuve un problema similar. La mayor parte es solo cosas sysadmin. – Oli

6

Uso de Nginx map module es poco aa más eficiente y más fácil de manejar como la lista se alarga.

poner esto en su http {} bloque:

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; 
} 

ponga esto en su servidor {} bloque:

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

Se trabajó para mí.

Tienes esto desde http://fadeit.dk/blog/post/nginx-referer-spam-blacklist

+1

agregando las citas marcan la diferencia. – chovy