通过AWS Elastic Load Balancer后面的客户端IP保护特定页面

时间:2013-06-17 16:42:35

标签: asp.net amazon-web-services amazon-ec2 amazon-elb

我有一个应用程序位于Elastic Load Balancer后面的Amazon EC2上。 服务器上有一个特定的URL,只允许指定的IP地址列表发布到该URL。

我已将以下内容添加到我的Web.config中:

<location allowOverride="false" path="mysecureurl">
<system.webServer>
  <security>
    <ipSecurity allowUnlisted="false">
      <add allowed="true" ipAddress="111.111.111.111" />
    </ipSecurity>
  </security>
</system.webServer>
</location>

当我直接从允许的IP地址发布到服务器的IP地址时,它可以正常工作。

当我从允许的IP地址发布时,通过负载均衡器,它会失败(403:FORBIDDEN)。我假设IIS正在查看负载均衡器的内部IP地址,而不是我的客户端的IP地址。

有什么方法可以让它发挥作用吗?

2 个答案:

答案 0 :(得分:1)

客户端IP实际上是通过标头(X-Forwarded-For)传递的。除了客户端IP之外,此标头可能还包括其他负载均衡器IP。

如果您可以根据标头配置过滤,则应该可以执行您尝试执行的操作。

答案 1 :(得分:1)

通过关注@ datasage的答案,您最终可以做到你想要的。但它并不安全。没有可靠/安全的方法来确定应用层上的客户端IP地址。基于应用层上的IP地址限制访问也是一种不好的做法。 有关(不多)更多信息,请参阅this answer