Pregunta

Estoy ejecutando dos mestizos en un servidor Nginx. Sigo recibiendo solicitudes de un archivo inexistente. Las direcciones IP cambian con frecuencia, pero la URL de referencia sigue siendo la misma. Me gustaría resolver esto.

¿Fue útil?

Solución

https://calomel.org/nginx.html

Bloquear la mayoría de "spam de referencia" - "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;   }

Otros consejos

Usar Nginx módulo de mapa es un poco más eficiente y más fácil de administrar a medida que la lista se alarga.

Ponga esto en su 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;
}

Ponga esto en su servidor {} bloque:

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

Funcionó para mí.

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

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

Su forma de solucionar el problema fue hacer que mi lógica (Rails en su caso) bloqueara ... Pero un largo camino:

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

La razón por la que lo hago de esta manera (en lugar de solo darle permisos a Django para alterar la configuración del firewall) es simplemente: seguridad. Si mi aplicación fuera pirateada, no quisiera que lastimara nada más.

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

He creado un módulo para verificar la IP entrante en listas negras https://github.com/oneumyvakin/ngx_http_blacklist_lookup_module

utiliza listas negras de projecthoneypot.org, blocklist.de y uceprotect.net

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top