如何在 IIS8,5(Windows 2012R2)中限制对网站的 IP 访问

如何在 IIS8,5(Windows 2012R2)中限制对网站的 IP 访问

我已经读到,要在 IIS8 中对网站进行 IP 限制,以仅允许一个或多个 IP 并拒绝其他所有人,您可以执行以下操作:

  1. 将“未指定客户端的访问”设置为“拒绝”
  2. 添加 IP 地址以“允许”

(如下面的截图所示)

但是,当我执行此操作时(如下面的屏幕截图所示),我仍然能够从其他 IP 访问该网站。

这里缺少什么?还有其他需要做的事情吗?

在此处输入图片描述

我尝试了 iisreset,但该页面不是测试机器上的浏览器缓存,因此应该无法访问。

答案1

如果安装了 IIS Windows 功能下的 IP 安全,您可以将其添加到您的 web.config 中以阻止 IP:

<location path="Default Web Site">
   <system.webServer>
      <security>
         <ipSecurity allowUnlisted="false"><!-- this line blocks everybody, except those listed below -->                
            <clear/> <!-- removes all upstream restrictions -->
            <add ipAddress="192.168.100.1" />
            <add ipAddress="169.254.0.0" subnetMask="255.255.0.0" />
         </ipSecurity>
      </security>
   </system.webServer>
</location>

答案2

很多乱七八糟的事情,我发现下面的方法对我有用(win server 2012 R2 上的 IIS 8.5.X)

确保已启用 web.config 管理功能

  • 互联网信息服务
  • 单击根服务器
  • 双击功能委托(管理下)
  • 向下滚动至IP 地址和域限制
  • 改成读/写

(就我的情况而言,它是只读的,这就是问题所在)

然后编辑 web.config 以包含

<system.webServer>
        <security>
            <!-- this line blocks everybody, except those listed below -->                
            <ipSecurity allowUnlisted="false">
                <!-- removes all upstream restrictions -->            
                <clear />
                <add ipAddress="X.X.X.X" allowed="true" />
                <add ipAddress="127.0.0.1" allowed="true" /> 
            </ipSecurity>
        </security>
</system.webServer>

其中 XXXX 是您希望允许的 IP(为您希望允许的每个 IP 或 IP 子网组合添加这样的一行)

值得注意的文档似乎遗漏了允许=“真”以及任何提及要求允许委托该功能。感谢@Summit 提供的提示这里

答案3

客户端和 IIS 服务器之间有代理吗?您可以在 IIS 日志中显示客户端来自哪个 IP。

答案4

在 IIS 7 及更高版本中执行文件级 IP 限制的步骤

在 IIS 管理器中->在内容视图中,突出显示特定文件->在操作窗格上单击“切换到功能视图”->在功能视图中,双击“IP 地址和域限制”,然后设置限制

我认为它也适用于经典的 ASP 页面。

相关内容