Bra*_*don 12 .net iis-7 ip-address windows-server-2008
我试图通过负载均衡器后面的Web服务器上的IP地址限制IIS 7中的应用程序.X-Forwarded-For标头由负载均衡器设置,具有客户端的IP地址.
在IIS 7中提取IP地址以在我的应用程序上设置IP地址过滤的最佳方法是什么?如果没有最好的方法,我将最终使用HTTPModule为我处理这个问题.
小智 6
REMOTE_ADDR和实施IP限制。使用以下配方REMOTE_ADDR将设置为真实的 Client-IP,而不管前面是否要设置一个受信任的反向代理HTTP_X_FORWARDED_FOR。这意味着您可以从IIS前面删除反向代理,并且这些IP限制仍将按预期继续工作。
REMOTE_ADDR的applicationHost.config在全局IIS中进行设置applicationHost.config:
<rewrite>
<allowedServerVariables>
<add name="REMOTE_ADDR" />
<add name="REMOTE_HOST" />
</allowedServerVariables>
<globalRules>
<rule name="Remote" patternSyntax="ECMAScript">
<match url=".*" ignoreCase="false" />
<conditions>
<add input="{REMOTE_ADDR}" pattern="^10\.1\.1\.[123]$" ignoreCase="false" />
<add input="{HTTP_X_FORWARDED_FOR}" pattern="\d+\.\d+\.\d+\.\d+$" ignoreCase="false" />
</conditions>
<serverVariables>
<set name="REMOTE_ADDR" value="{C:0}" />
<set name="REMOTE_HOST" value="{C:0}" />
</serverVariables>
<action type="None" />
</rule>
</globalRules>
</rewrite>
Run Code Online (Sandbox Code Playgroud)
以上复印件配方找到的最后一个IP地址HTTP_X_FORWARDED_FOR的REMOTE_ADDR,并REMOTE_HOST <serverVariables>只有当原始值REMOTE_ADDR相匹配的IP地址可信的反向代理。
要使此配方有效,必须将第一个条件设置为与反向代理的IP地址匹配:
<add input="{REMOTE_ADDR}" pattern="^10\.1\.1\.[123]$" ignoreCase="false" />
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,HTTP_X_FORWARDED_FOR仅当由反向代理在以下IP地址之一上进行设置时,客户端IP in 才受信任:
10.1.1.1 or 10.1.1.2 or 10.1.1.3
Run Code Online (Sandbox Code Playgroud)
这需要设置REMOTE_ADDR为真实的客户端IP。
web.config可以使用以下方法在站点的IIS URL重写模块中设置IP限制web.config:
<system.webServer>
<rewrite>
<rules>
<rule name="IP Restricted" patternSyntax="ECMAScript" stopProcessing="true">
<match url=".*" ignoreCase="false" />
<conditions>
<add input="{REMOTE_ADDR}" pattern="^(127\.|10\.20\.74\.|10\.25\.182\.|10\.64\.105\.10)" ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="/403.html" appendQueryString="false" logRewrittenUrl="true" />
</rule>
</rules>
</rewrite>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)
编辑,pattern=使其仅与您需要传入的IP地址或阻止匹配。
更改<action />为所需。
因为web.config上面的配方在标准REMOTE_ADDR变量上进行过滤,所以无论有没有,它都可以使用HTTP_X_FORWARDED_FOR。中的配方applicationHost.config <rewrite> <globalRules>可确保REMOTE_ADDR始终将其设置为真实的 Client-IP,以供日后参考REMOTE_ADDR。
您可以使用IIS URL重写模块来完成此操作。
添加带有条件的新入站规则,以检查IP地址是否与{HTTP_X_Forwarded_For}不匹配。然后,您可以将规则设置为重定向,重写或中止请求。
您可以为要列入白名单的每个IP地址设置新条件。
| 归档时间: |
|
| 查看次数: |
6510 次 |
| 最近记录: |