den*_*nor 2 iis url-rewrite-module
我试图阻止除内部管理员IP地址以外的所有IP地址的特定url页(http://www.testdomain.com/login)。我没有阻止模式登录的问题,但是我想在本地进行测试,以确保将内部管理IP排除在/ login url的阻止规则之外。看看我到目前为止有什么...
<rewrite>
<rules>
<rule name="RequestBlockingRule1" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
<match url="*login*" negate="false" />
<conditions logicalGrouping="MatchAny" trackAllCaptures="true">
<add input="{HTTP_X_Forwarded_For}" pattern="92.102.130.65" />
</conditions>
<action type="None" />
</rule>
<rule name="RequestBlockingRule2" patternSyntax="Wildcard" stopProcessing="true">
<match url="*" />
<conditions>
<add input="{URL}" pattern="*login*" />
</conditions>
<action type="CustomResponse" statusCode="404" statusReason="File or directory not found." statusDescription="The resource you are looking for might have been removed, had its name changed, or is temporarily unavailable." />
</rule>
Run Code Online (Sandbox Code Playgroud)
我还想要重复相同的规则,但要查询http://www.testdomain.com/home.aspx的查询字符串?ctl = login
<rule name="RequestBlockingRule3" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
<match url="*ctl=login*" negate="false" />
<conditions logicalGrouping="MatchAny" trackAllCaptures="true">
<add input="{HTTP_X_Forwarded_For}" pattern="93.107.170.85" />
</conditions>
<action type="None" />
</rule>
<rule name="RequestBlockingRule4" patternSyntax="Wildcard" stopProcessing="true">
<match url="*" />
<conditions>
<add input="{QUERY_STRING}" pattern="*ctl=login*" />
</conditions>
<action type="CustomResponse" statusCode="404" statusReason="File or directory not found." statusDescription="The resource you are looking for might have been removed, had its name changed, or is temporarily unavailable." />
</rule>
</rules>
</rewrite>
Run Code Online (Sandbox Code Playgroud)
我所做的是尝试针对特定模式排除内部IP,然后执行实际的阻止规则。有谁知道a)更好的选择或b)看到我可能做错的事情或可能没有做错的事情(理想情况下,我想先在本地使用真实IP地址在实际服务器上测试这些规则)。谢谢
我想建议使用一些不同的方法:
<action type="None" />配置代码为:
<rewrite>
<rules>
<rule name="Block login page" stopProcessing="true">
<match url="^login$" />
<conditions>
<add input="{Authorised Admin IPs:{REMOTE_ADDR}}" pattern="1" negate="true" />
</conditions>
<action type="CustomResponse" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden" />
</rule>
<rule name="Block query string" stopProcessing="true">
<match url=".*" />
<conditions>
<add input="{Authorised Admin IPs:{REMOTE_ADDR}}" pattern="1" negate="true" />
<add input="{QUERY_STRING}" pattern="ctl=login" />
</conditions>
<action type="CustomResponse" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden" />
</rule>
</rules>
<rewriteMaps>
<!-- This is your list of white-listed IP's-->
<rewriteMap name="Authorised Admin IPs">
<add key="92.102.130.65" value="1" />
<add key="93.107.170.85" value="1" />
<!-- local IPs-->
<add key="127.0.0.1" value="1" />
<add key="localhost" value="1" />
<add key="::1" value="1" />
</rewriteMap>
</rewriteMaps>
</rewrite>
Run Code Online (Sandbox Code Playgroud)
此规则禁止所有用户访问该URL的所有请求,这些用户的IP不在白名单中
ctl=login查询字符串的网址在上面的配置中,我正在使用{REMOTE_ADDR}。但是您可能需要使用{HTTP_X_Forwarded_For}。这取决于您的网络基础结构(如果您有代理或负载平衡器)
您可以通过添加/删除本地IP表单重写图来在本地测试此规则
| 归档时间: |
|
| 查看次数: |
2479 次 |
| 最近记录: |