【问题标题】:How to understand and reduce IP spoofing attack errors in a Rails application?如何理解和减少 Rails 应用程序中的 IP 欺骗攻击错误?
【发布时间】:2014-02-13 01:03:19
【问题描述】:

我从我的错误报告服务中收到了大量关于 IP 欺骗攻击的电子邮件,而且频率越来越高。如果我理解正确,当请求设置 HTTP 标头指定请求来自的 IP 地址不是原始 IP 地址时,就会发生这种情况。

错误信息如下所示:

IP spoofing attack?!HTTP_CLIENT_IP="10.212.0.172"HTTP_X_FORWARDED_FOR="10.212.0.172, 68.180.224.232"

如果我没看错的话,这个错误消息中的两个 IP 地址是一个本地 IP 地址 (10.x.x.x) 和一个 Yahoo! IP 地址 (68.180.224.232)。

我不确定我的阅读是否正确,但这似乎是由雅虎爬虫引起的。错误报告了许多不同的 URL,这使它看起来像一个爬虫。此外,这似乎是一个合法请求,因为它是通过外部 IP 路由的内部 IP。

我的问题是:

  • 您如何确定这些请求是合法请求还是恶意请求。
  • 如果是恶意的,允许这些 GET 请求有什么危害?
  • 无论哪种方式,我怎样才能防止这些错误发生(除了关闭电子邮件通知)?我需要找到一种方法来阻止 IP 地址吗?如果这是一个合法的请求怎么办?我需要设置某种白名单吗?

更新:我查看了请求参数,用户代理确实是雅虎爬虫:

Mozilla/5.0(兼容;Yahoo! Slurp;http://help.yahoo.com/help/us/ysearch/slurp

【问题讨论】:

    标签: ruby-on-rails security ip spoofing


    【解决方案1】:

    也许不是一个完整的答案,但我一直在使用这个 gem 进行异常通知,它支持过滤掉爬虫引发的异常

    http://smartinez87.github.io/exception_notification/#ignore-exceptions/ignore_crawlers

    【讨论】:

      【解决方案2】:

      您如何确定这些请求是合法的还是恶意的?

      IP 欺骗本身并不危险,但它主要用于 DDoS(分布式拒绝服务)攻击,以将 IP 地址屏蔽为不同的 IP 地址,使其看起来是分布式的。您可以使用这个 gem here 找出其中一个 IP 地址是机器人/爬虫/蜘蛛。

      如果是恶意的,允许这些 GET 请求有什么危害?

      通过允许来自欺骗性 IP 的 GET 请求,您很容易受到 DDoS 攻击,并且您的服务器上的负载会增加,如果您启用了自动缩放,您将不得不花费更多。

      无论如何,我怎样才能防止这些错误发生(除了关闭电子邮件通知)?我需要找到一种方法来阻止 IP 地址吗?如果这是一个合法的请求怎么办?我需要设置某种白名单吗?

      请参阅此答案here,其中详细说明了解决此问题的最佳方法。我有另一种方法,我将在下面解释。

      我没有测试下面的代码,但简而言之,它会检查两个标题是否都存在,如果存在,则检查它们是否不相等。如果这两个条件都为真,那么您可以引发异常或重定向到状态码为 400 的错误页面,由您决定。

          def ip_spoofing_check
              if request.env['HTTP_CLIENT_IP'] && request.env['HTTP_X_FORWARDED_FOR']
                  if request.env['HTTP_CLIENT_IP'] != request.env['HTTP_X_FORWARDED_FOR']
                  response.status = 400
                  response = {:status => false, :message => "IP Spoofing Attempt"}
                  respond_to do |format| format.json { render json: response} end
                  end
              end
          end
      

      不要忘记在应用控制器的 before_action 中调用此函数。

      祝你好运!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-03-12
        • 1970-01-01
        • 2015-10-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多