2009-01-19 17 views
9

Ich laufe zwei Mongrels unter einem Nginx-Server. Ich bekomme Anfragen für eine nicht existierende Datei. Die IP-Adressen ändern sich häufig, aber die Verweis-URL bleibt unverändert. Ich möchte das auflösen.Blockieren von Empfehlungsspam mit Nginx?

Antwort

10

https://calomel.org/nginx.html

blockieren die meisten "Referrer-Spam" - "eher ein Ärgernis als ein Problem"

nginx.

## 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

Sperren Referrer mit einem ~ * -Operator ist nur ein Regex "Liebe" wird "Live-your-Website" und Referrer wie diese – Garistar

1

Ich war schon einmal in einer ähnlichen Situation, in der ich Menschen auf der Grundlage von Verhalten blockieren musste, anstatt nach anderen willkürlichen Regeln, die eine Firewall selbst beheben könnte.

Sie, wie ich, um das Problem arbeitete, war zu meiner Logik (Rails in Ihrem Fall) tun, um die Blockierung ... Aber ein langer Weg Runde zu machen:

  • Haben Sie Ihre Logik eine Blockliste als pflegen neue Zeile getrennte Klartextdatei. Erstellen
  • eine Bash (oder andere) Skript als root diese Datei zu lesen und fügen ihre Gelisteten zu Ihrer Firewall Blockliste
  • einen cron-Job Erstellen Sie das Skript aufrufen, wieder als root

Der Grund, warum ich tun Sie es so (und geben Sie Django nicht nur die Erlaubnis, die Firewall-Konfiguration zu ändern), sondern einfach: Sicherheit. Wenn meine Bewerbung gehackt würde, würde ich nicht wollen, dass sie etwas anderes verletzt.

Das Bash-Skript ist so etwas wie dieses:

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

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

done 
+0

können Sie zu einem Tutorial zeigen auf diese Art von Blockierung? Ich verstehe Ihre Lösung nicht wirklich. Vielen Dank für Ihre Hilfe. Ich versuche eine Lösung an der besten Stelle zu finden, die ich kenne (stackoverflow :-), aber ich möchte nicht, dass es ohne guten Grund moderiert wird. – Jesse

+0

Ich habe noch nie ein Tutorial für so etwas gesehen und ich weiß nicht, was sein richtiger Name (wenn es einen hat) ist ... Das ist genau das, was mir in den Sinn kam, als ich ein ähnliches Problem hatte. Das meiste ist nur Sysadmin-Zeug. – Oli

6

Mit Nginx map module aa etwas effizienter und einfacher zu verwalten wie die Liste lang wird.

Dieser in Ihrem http {} Block:

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

Setzen Sie diese in Ihrem Server {} Block:

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

Es ist für mich gearbeitet.

dies von http://fadeit.dk/blog/post/nginx-referer-spam-blacklist Got

+1

Hinzufügen der Zitate den ganzen Unterschied. – chovy