Spambots混乱了我的日志文件[Django]

时间:2008-11-24 20:31:20

标签: python django apache spam-prevention

我有一个漂亮可爱的Django网站启动并运行,但是注意到我的error.log文件变得越来越大,经过几个月的生存后超过150 MB。结果发现一大堆垃圾邮件正在寻找众所周知的URL漏洞(或其他东西),并且会遇到一堆子目录,如http://mysite.com/iehttp://mysite.com/~admin.php等。

由于Django使用URL重写,它正在寻找适合这些请求的模板,这会引发TemplateDoesNotExist异常,然后是500消息(Django会这样做,而不是我)。我关闭了调试,所以他们只获得了通用的500消息,但它很快就填满了我的日志。

有没有办法解决此问题?或者只是阻止IP这样做?

8 个答案:

答案 0 :(得分:6)

嗯,或许,如果还没有完成,可以使用logrotate定期轮换和压缩日志。

答案 1 :(得分:3)

“有没有办法解决此问题?” - 500绝对是强制性的。日志条目也是必需的。

“或者只是阻止IP这样做?” - 我们不希望。

每个人都有这个问题。几乎每个人都使用Apache log rotation。其他人都使用操作系统轮换或自己滚动。

答案 2 :(得分:3)

如果您可以在UserAgent字符串中找到模式,则可以使用DISALLOWED_USER_AGENT设置。我的是:

DISALLOWED_USER_AGENTS = (
    re.compile(r'Java'),
    re.compile(r'gigamega'),
    re.compile(r'litefinder'),
)

请参阅Django docs中的说明。

答案 3 :(得分:2)

如果URL与URLConf中的任何条目都不匹配,Django应该抛出404而不是500。

http://docs.djangoproject.com/en/dev/topics/http/urls/#handler404

您需要提供404模板:

  

如果您没有定义自己的404视图 - 并且只使用建议的默认视图 - 您仍有一项义务:在模板目录的根目录中创建404.html模板。默认的404视图将使用该模板来处理所有404错误。

答案 4 :(得分:0)

编程解决方案是:

  • 打开日志文件
  • 读取缓冲区中的行
  • 替换与机器人造成的错误匹配的行
  • 寻找文件的开头
  • 编写新缓冲区
  • 将文件截断为当前指针位置
  • 靠近
瞧!瞧!它完成了!

答案 5 :(得分:0)

如何将全能模式设置为您的网址文件中的最后一项,并将其指向通用的“无此网页”甚至是您的主页?换句话说,将500改为对您主页的请求。

答案 6 :(得分:0)

为什么不修复那些“错误”?如果url模式不匹配,则应显示正确的错误消息。通过添加这些模板,您将help the user和您自己: - )

答案 7 :(得分:0)

  1. 是的,它应该是404而不是500. 500表示正在尝试处理URL并且在此过程中失败。你需要找到并修复它。

  2. 我们遇到了类似的问题。由于我们运行的是Apache / mod_python,因此我选择使用mod_rewrite规则在.htaccess中处理它。我会定期查看日志并在“go to hell”列表中添加一些模式。这些全部重写以提供1x1像素的gif文件。没有404s的海啸让我的日志分析变得混乱,它给Django和Apache带来了最小的负担。

  3. 你不能让这些**孔消失,所以你所能做的就是尽量减少它们对你系统的影响并继续你的生活。