我有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调用的影响。
是否有任何gems或nginx模块能够过滤具有特定规则的ddos消息?
发布于 2014-05-26 13:09:43
您应该考虑使用像机架:攻击这样的中间件。由于它在应用程序栈中的位置较低,它将比Rails更早、更快地过滤出恶意请求。
机架中间件,用于阻塞和控制滥用请求 机架:攻击是一个机架中间件,以保护你的web应用程序免受坏客户的影响。它允许基于请求的任意属性的白名单、黑名单、节流和跟踪。
如果您看一下gem readme,就会有一些很好的例子来处理像您这样的案例。但是,请记住,如果攻击者至少有一点聪明,他们会注意到您的努力,并试图超过他们。DDOS保护通常是猫和老鼠的游戏。
发布于 2019-09-18 07:06:25
我们可以使用“机架攻击”创业板来防止浪费带宽。我们可以在生产rails控制台中手动运行命令以禁止IP:
Rails.cache.write('block 1.2.3.4', true, expires_in: 5.days)然后,机架初始化程序将阻止此IP:
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?
endhttps://stackoverflow.com/questions/23868982
复制相似问题