ruby-on-rails – 带有nginx ddos保护的Ruby on rails

我有rails3 nginx堆栈.

几天前它是ddos攻击,有很多GET请求,类似于:

GET /?aaa2=bbbbbbb&ccc=1234212
GET /?aaa1=bbbbbbb&ccc=4324233

首先,我添加到应用程序控制器规则:

before_filter :ddos_check
def ddos_check
  params.each do |param|
    if (!param[1].nil? && (param[1].is_a?String) && !param[1].scan(/bbb/sim).blank?)
      redirect_to 'http://google.com/'
      return
    end
  end
end

它保护控制器免受繁重的DB调用.

是否可以使用特定规则过滤ddos消息的任何gems或nginx模块?

最佳答案
您应该考虑使用像Rack::Attack这样的中间件.由于它在应用程序堆栈中较低,它将比Rails更早,更快地过滤掉恶意请求.

Rack middleware for blocking & throttling abusive requests

Rack::Attack is a rack middleware to protect your web app from bad
clients. It allows whitelisting,blacklisting,throttling,and
tracking based on arbitrary properties of the request.

如果您看一下gem自述文件,可以使用很好的例子来处理像你这样的案例.
但请记住,如果攻击者至少有点聪明,他们会注意到你的努力,并试图超越他们. DDOS保护通常是猫捉老鼠游戏.

dawei

【声明】:淮南站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。