安全 最近网站被恶意攻击了

easyhappy · 2016年02月26日 · 最后由 zj0713001 回复于 2016年02月26日 · 8503 次阅读

Hi, 万能的 ruby 朋友们,最近 我的网站 被攻击了。攻击的方式:

  1. 只攻击一个 api
  2. ip 经常换,但是 也就是那 几百个 ip。
  3. user_agent 暂时没变。
  4. cookies 暂时没变。
  5. request.referer 伪造的是正常的。

目前我能想到的是 通过 图片验证码,来提高 这个 api 的安全性。

问题

请问如何能获取到 这个 爬虫的 真实 ip。

@ huacnlee sos。

这种情况下,建议你跟你的主机供应商联系,启用主机供应商提供的高防或者流量清洗服务。 RubyChina 放在 UCloud 上,每次遇到攻击,都直接使用 UCloud 的高防服务,2015 年被攻击了 6~7 次,每次持续攻击一两天,每次都是 UCloud 帮忙扛下来的。

如果能穷举 ip 的话,最简单就是加 iptable 禁止访问

自己之前写过的一个粗糙的,可以借鉴一下

# Controller 里,
  before_action :forbid_abuse_request
...
  def forbid_abuse_request
    ip = request.remote_ip
    project_md5 = calculate_md5
    key = "#{ip} #{project_md5}"
    exists = $request_redis.exists key

    if exists && $request_redis.get(key).to_i > 100
      Rails.logger.warn "ABUSE_IP #{key}"
      return render json: { status: 'ok' }
    end

    $request_redis.incr key
    $request_redis.expire key, 60 unless exists

  end

#4 楼 @jicheng1014 这个要应用层硬抗流量攻击进行筛选,流量大的话会影响正常服务啊

#5 楼 @alucardpj 是的。。。但是你不查数据库,不过那些 7788,直接返回 200 压力也会小不少,最好的还是流量清洗,就是有点贵

上 rack-attack 参考 ruby-china 昨天的提交

Nginx + lua + redis 记录 ip+ua(没实践过),京东用这一套做秒杀

谢谢各位的建议. 现在 正在加 RuCaptcha 和 rack-attack

你和我元宵节遇到的情况一模一样。

状况:

1、每秒 8-20 次攻击某 api 地址,但不影响网站整体使用。 2、因为该地址不支持 get 请求,在封了一端时间 post 请求后,写了一个脚本,分析某一段时间的 ip,全部封掉 3、攻击 ip 逐渐增多,2k+,把域名放到了百度云加速。防了 2 天,攻击 ip 基本都被挡住了。

经验:

1、增加可以防 ddos 的网络应用,这次用的是百度云加速(原安全宝),经过一段时间的采样,可以有效阻止这次的 cc 攻击。 2、阿里云盾,可以防住 ddos,cc 攻击,但是要花钱,3 地机房,9 IP,900 元起。 3、应用上,自己写代码采集攻击 ip,使用 iptables 批量封掉。 4、加上 RuCaptcha,的确很方便,cache_limit 这个选项,在破解验证码的情况下还是要设置为 0。

以上方案都是免费的。

阿里云盾并不能防低流量的 ddos,官方也只是告诉你加 iptables 限制,要么告诉你应用层面解决。

商用项目的话,找第三方洗流量吧。如果是自己的项目就加验证码吧,毕竟如果流量进入了程序处理,一样是会顶爆服务器的。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号