首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有nginx ddos保护的Ruby on rails

问具有nginx ddos保护的Ruby on rails
EN

Stack Overflow用户
提问于 2014-05-26 11:23:54
回答 2查看 5.4K关注 0票数 6

我有rails3 + nginx堆栈。

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

代码语言:javascript
复制
GET /?aaa2=bbbbbbb&ccc=1234212
GET /?aaa1=bbbbbbb&ccc=4324233

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

代码语言:javascript
复制
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调用的影响。

是否有任何gems或nginx模块能够过滤具有特定规则的ddos消息?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-26 13:09:43

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

机架中间件,用于阻塞和控制滥用请求 机架:攻击是一个机架中间件,以保护你的web应用程序免受坏客户的影响。它允许基于请求的任意属性的白名单、黑名单、节流和跟踪。

如果您看一下gem readme,就会有一些很好的例子来处理像您这样的案例。但是,请记住,如果攻击者至少有一点聪明,他们会注意到您的努力,并试图超过他们。DDOS保护通常是猫和老鼠的游戏。

票数 22
EN

Stack Overflow用户

发布于 2019-09-18 07:06:25

我们可以使用“机架攻击”创业板来防止浪费带宽。我们可以在生产rails控制台中手动运行命令以禁止IP:

代码语言:javascript
复制
Rails.cache.write('block 1.2.3.4', true, expires_in: 5.days)

然后,机架初始化程序将阻止此IP:

代码语言:javascript
复制
Rack::Attack.blacklist('block <ip>') do |req|
  # if variable `block <ip>` exists in cache store, then we'll block the request
  Rails.cache.fetch("block #{req.ip}").blank?
end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23868982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档