2009-01-19 40 views

回答

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

使用〜*运算符阻止引用者只是一个正则表达式“love”将匹配“live-your-website”和像这样的引用者 – Garistar 2017-12-08 18:39:59

1

我之前在类似的情况下,我需要基于行为来阻止人们,而不是其他防火墙可以自行排除的任意规则。

他们我的方式解决该问题的工作是使我的逻辑(在你的情况的Rails)做拦截...但一轮很长的路要走:

  • 有你的逻辑维护块列表作为换行分隔的明文文件。
  • 创建一个bash(或其他)脚本,作为根用户读取该文件,并添加其listees到防火墙的拦截列表
  • 创建一个cron作业来再次调用脚本,作为根

我之所以这样做(而不只是给Django权限来改变防火墙配置)很简单:安全。如果我的应用程序遭到黑客攻击,我不希望它受到其他任何伤害。

的bash脚本是这样的:

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

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

done 
+0

你能指出一个关于这种阻塞类型的教程吗?我并没有真正理解你的解决方案。非常感谢你的帮助。我试图找到一个解决方案,我知道最好的地方(stackoverflow :-)但不希望它没有理由的主持。 – Jesse 2009-01-19 13:00:49

+0

我从来没有见过这样的教程,我不知道它的专有名称(如果有的话)是...当我遇到类似的问题时,这正是我想到的。大部分只是系统管理员的东西。 – Oli 2009-01-19 13:44:17

6

使用Nginx的map module是AA位更高效和更易于管理因为名单变得漫长。

把这个在你的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得知了这个

相关问题