2009-01-19 9 views

Répondre

10

https://calomel.org/nginx.html

bloquer la plupart des "spam referrer" - "plus d'un ennui qu'un problème"

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

Blocage des référents avec un opérateur ~ * est juste une regex "amour" correspondra "live-votre-site Web" et les référents comme ceci – Garistar

1

J'ai été dans une situation similaire auparavant où j'avais besoin de bloquer les gens en fonction du comportement au lieu d'autres règles arbitraires qu'un pare-feu pouvait régler lui-même.

Ils moi avons travaillé autour du problème était de faire ma logique (Rails dans votre cas) font le blocage ... Mais un long chemin rond:

  • Demandez à votre logique de maintenir une liste de blocage en tant que fichier texte séparé séparé par une nouvelle ligne.
  • Créer un bash (ou autre) de script en tant que root pour lire ce fichier et ajouter ses Clients répertoriés à votre liste de blocage de pare-feu
  • Créer une tâche cron pour appeler le script, encore une fois, en tant que root

La raison pour laquelle je Faites-le de cette façon (plutôt que de simplement donner à Django les permissions pour modifier la configuration du pare-feu), c'est simplement: la sécurité. Si ma demande était piratée, je ne voudrais pas que ça fasse du mal à autre chose.

Le script bash est quelque chose comme ceci:

exec < /path/to/my/djago-maintained/block-list 
while read line 
do 

    iptables -A INPUT --source $line/32 -j DROP 

done 
+0

vous pouvez pointer vers un tutoriel sur ce type de blocage? Je ne comprends pas vraiment votre solution. Merci beaucoup pour votre aide. J'essaie de trouver une solution dans le meilleur endroit que je connaisse (stackoverflow :-) mais je ne veux pas qu'il soit modéré sans raison valable. – Jesse

+0

Je n'ai jamais vu un tutoriel pour quelque chose comme ça et je ne sais pas quel est son nom propre (s'il en a un) est ... C'est juste ce qui me vient à l'esprit quand j'ai eu un problème similaire. La plupart d'entre eux est juste des trucs sysadmin. – Oli

6

est map module Nginx Utilisation aa peu plus efficace et plus facile à gérer comme la liste devient longue.

Mettez dans votre http {} bloc:

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

Mettez dans votre serveur {} bloc:

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

Il a travaillé pour moi.

obtenu ceci de http://fadeit.dk/blog/post/nginx-referer-spam-blacklist

+1

en ajoutant les citations faites toute la différence. – chovy

Questions connexes