10

我在 Nginx 服务器下运行两个杂种。我不断收到对不存在文件的请求。IP 地址经常更改,但引用 URL 保持不变。我想解决这个问题。

4

4 回答 4

10

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;   }
于 2009-01-19T23:36:36.123 回答
10

随着列表变长,使用 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;
}

把它放在你的 server {} 块中:

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

它对我有用。

从http://fadeit.dk/blog/post/nginx-referer-spam-blacklist得到这个

于 2015-11-07T01:19:25.733 回答
1

我以前也遇到过类似的情况,我需要根据行为而不是防火墙可以自行解决的其他任意规则来阻止人们。

我解决这个问题的方法是让我的逻辑(在你的情况下是 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
于 2009-01-19T12:47:07.200 回答
1

我创建了用于检查黑名单中的传入 IP 的模块https://github.com/oneumyvakin/ngx_http_blacklist_lookup_module

它使用来自 projecthoneypot.org、blocklist.de 和 uceprotect.net 的黑名单

于 2013-04-25T06:36:56.813 回答