在Rails App中阻止垃圾邮件发送者的可靠方法?

时间:2010-06-19 20:19:41

标签: ruby-on-rails bash security

我从垃圾邮件发送者/机器人那里收到了许多失败的登录请求,这些垃圾邮件/机器人试图强制使用凭据,而且我收到的许多请求都是/forum/index.php这样的网页。

我编写了一个脚本来解析来自production.log的那些攻击者的IP:

#!/bin/bash

# Failed Logins
grep "Failed " ~/app/log/production.log | egrep -o -e "[0-9]{2,3}\.[0-9]{2,3}\.[0-9]{2,3}\.[0-9]{2,3}" | sort | uniq > ~/spammers.txt

# Try to GET .php Files
cat ~/app/log/production.log | awk '$0!~/^$/ {print $0}' | sed -n -e "N; /\.php/p" | grep "ApplicationController#index" | egrep -o -e "[0-9]{2,3}\.[0-9]{2,3}\.[0-9]{2,3}\.[0-9]{2,3}" | sort | uniq >> ~/spammers.txt

但是我不能阻止(.httaccess)那些IP,直到我通过Geolocation手动检查它们的来源。

这个问题是否存在Rail-ish解决方案?

2 个答案:

答案 0 :(得分:1)

我认为没有Rails答案。

如果您在Linux服务器上运行,可以考虑使用LFD(登录失败守护进程)。 http://www.configserver.com/cp/csf.html

一旦你设置它来观看你的rails应用程序,它会在登录失败,入侵尝试等等之后阻止它们在防火墙级别。

答案 1 :(得分:-1)

你可以做很多事情。没有特别是Rails-y,但无论如何都应该有所帮助。

首先,我建议您使用JanRain Engage (formerly rpxnow.com)进行身份验证。该产品使人们可以使用来自Google,Yahoo,Microsoft,Facebook和许多其他OpenID提供商的身份验证凭据登录您的网站。让他们担心DOS攻击。

其次,如果他们有特定的网址,请让您的网站将其作为静态网页提供,并设置HTTP标头,以便在其浏览器中缓存恶意网页。然后,至少你的服务器不会受到严厉的打击。

第三,记录垃圾邮件发送者的IP地址。尝试登录你的页面的机器人,比如说,每分钟10次,如果他们再次尝试登录,请在渲染页面之前通过进行4秒的睡眠来限制他们的响应。