我有rails3 + nginx堆栈。

几天前是ddos攻击,带有许多类似于以下内容的GET请求:

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

首先,我添加了应用程序 Controller 规则:
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

它可以防止 Controller 受到繁重的数据库调用。

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

最佳答案

您应该考虑使用像Rack::Attack这样的中间件。由于它在应用程序堆栈中的位置较低,因此它将比Rails更早,更快地过滤出恶意请求。



如果您查看gem自述文件,有很好的示例介绍了如何处理诸如您这样的案例。
但是请记住,如果攻击者至少有些聪明,他们会注意到您的努力,并试图超越他们。 DDOS保护通常是猫和老鼠的游戏。

10-06 02:28
查看更多