0

我们正在使用 Windows Server 2016 在 IIS 上运行一个网站。我们希望该网站是公共的,但我们希望只有一个内部 IP 地址可以访问一个文件夹。applicationHost.config 包含以下几行:

    <location path="mywebsite/private">
        <system.webServer>
            <security>
                <ipSecurity allowUnlisted="false">
                    <add ipAddress="192.168.1.0" subnetMask="255.255.255.0" allowed="true" />
                </ipSecurity>
            </security>
        </system.webServer>
    </location>

从 192.168.1.x 之外的 IP 地址访问此文件夹中的页面时,我预计会被阻止,但页面加载成功。

此外,我在 IIS 管理器中收到错误消息。我不确定它是否相关。当我导航到 mywebsite > private 并打开IP 地址和域限制功能时,我看到了与 applicationHost.config 中相同的设置。在Edit Feature Settings下,设置为 Access=Deny,域名限制=disabled,Proxy mode=disabled,Deny action type=Forbidden。当我将访问权限更改为允许时,我收到以下错误消息:

Filename: \\?\D:\mywebsite\private\web.config
Error: The configuration section 'system.webServer/security/dynamicIpSecurity' 
cannot be read because it is missing a section declaration

我们在 applicationHost.config 或任何 web.config 文件中没有任何关于dynamicIpSecurity的信息。ipSecurity不在 web.config 中。

关于为什么外部 IP 地址没有被阻止的任何建议?

更新:仍然没有完全修复,但我弄清楚发生了什么,并使用这些信息来实施解决方法。在我们的网络中,我们有 3 个区域:Web 服务器、工作站和互联网。事实证明,如果 Web 请求来自工作站,IP 地址和域限制功能会看到实际的客户端 IP 地址并按预期允许或拒绝。但是,如果请求来自 Internet,则此 IIS 功能会看到我们防火墙设备的接口 IP 地址。这很奇怪,因为 Web 应用程序会看到客户端 IP,而日志文件会记录客户端 IP。它似乎只是 IP 地址和域限制功能。是否可以对 IIS 进行一些操作以使其更有可能查看实际的客户端 IP?

4

2 回答 2

0
于 2020-08-14T03:51:30.657 回答
0

也许到现在为止,您已经解决了您提到的另一个问题,但至于您得到的有关 dynamicipsecurity 元素的错误,这是与您主要关注的“IP 地址和域”功能分开的功能。此其他功能用于添加选项,例如在短时间内阻止来自给定 IP 地址的过多请求。有关更多信息,请参阅:

https://docs.microsoft.com/en-us/iis/configuration/system.webServer/security/dynamicIpSecurity/

而且我怀疑存在的问题是即使您没有安装该功能,您的配置文件也会引用它。也许配置文件来自安装了该 iis 功能的服务器。(默认情况下不是。)

因此,您可以安装该附加功能(请参阅文档)或删除对该元素的配置文件引用,无论是在 web.config 还是 applicationhost.config 中。

于 2021-04-16T11:50:33.923 回答