簡體   English   中英

如何使用Nginx阻止推薦垃圾郵件?

[英]How to block referral spam using Nginx?

我在Nginx服務器下運行兩個mongrels。 我不斷收到不存在文件的請求。 IP地址經常更改,但引用URL保持不變。 我想解決這個問題。

https://calomel.org/nginx.html

阻止大多數“推薦人垃圾郵件” - “更多的是煩惱而不是問題”

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

隨着列表變長,使用Nginx 映射模塊會更高效,更易於管理。

把它放在你的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;
}

把它放在你的服務器{}塊中:

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

它對我有用。

來自http://fadeit.dk/blog/post/nginx-referer-spam-blacklist

我創建了用於檢查黑名單中的傳入IP的模塊https://github.com/oneumyvakin/ngx_http_blacklist_lookup_module

它使用來自projecthoneypot.org,blocklist.de和uceprotect.net的黑名單

在我需要根據行為而不是防火牆可以自行解決的其他任意規則阻止人員之前,我一直處於類似的情況。

我解決這個問題的方法是讓我的邏輯(在你的情況下是Rails)做阻塞......但是很長一段時間:

  • 讓您的邏輯將塊列表維護為新行分隔的純文本文件。
  • 以root身份創建bash(或其他)腳本以讀取此文件,並將其偵聽器添加到防火牆的阻止列表中
  • 創建一個cron作業,再次以root身份調用腳本

我這樣做的原因(而不僅僅是給予Django權限來改變防火牆配置)的原因很簡單:安全性。 如果我的應用程序被黑了,我不希望它傷害其他任何東西。

bash腳本是這樣的:

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

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

done

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM