是否可以仅从本地主机查看IIS上的部分站点?

是否可以仅从本地主机查看IIS上的部分站点?,iis,localhost,Iis,Localhost,我们有一个运行IIS的Web服务器。我们想运行一个共享的博客或一些东西来跟踪信息。由于安全问题,我们希望该部分只能从本地主机查看,因此人们必须远程登录才能使用它 那么,重复我的问题,网站的一部分是否可以仅从本地主机查看?这取决于您希望在未经授权的用户尝试访问时发生什么 您可以尝试将特定部分设置为虚拟目录,然后拒绝匿名用户查看。但是,系统会提示他们登录,如果他们可以登录,他们就可以看到它。您只需将此.NET添加到页面顶部即可 string MyWebServerName = currentCont

我们有一个运行IIS的Web服务器。我们想运行一个共享的博客或一些东西来跟踪信息。由于安全问题,我们希望该部分只能从本地主机查看,因此人们必须远程登录才能使用它


那么,重复我的问题,网站的一部分是否可以仅从本地主机查看?

这取决于您希望在未经授权的用户尝试访问时发生什么


您可以尝试将特定部分设置为虚拟目录,然后拒绝匿名用户查看。但是,系统会提示他们登录,如果他们可以登录,他们就可以看到它。

您只需将此.NET添加到页面顶部即可

string MyWebServerName = currentContext.Request.ServerVariables["SERVER_NAME"];

if ( MyWebServerName == "127.0.0.1" || MyWebServerName == "localhost" )
{
  // the user is local 
}
else
{
  // the user is NOT local
}

从IIS MMC中的选项判断,您还可以拥有一个只能由特定IP范围访问的虚拟目录。您可以阻止除127.0.0.1之外的所有人。不过,我还没有尝试过这个方法。

在IIS6中,您可以调出web的属性,然后单击目录安全选项卡。单击选项卡中间的按钮,编辑IP和域限制。在此选项卡上,将所有计算机设置为拒绝,然后为要允许访问此站点的IP添加例外

我不知道如何在IIS7上配置它。我看了,但找不到,如果我找到了,我会编辑这个答案

编辑:

  • 乔希

您可以授予或拒绝从特定IP访问站点或文件夹的权限。在IIS中,进入相关站点或文件夹的属性

(1) 单击“部门安全”选项卡

(2) 单击“IP地址和域名限制”框下的编辑

(3) 单击“拒绝访问”(这会告诉IIS阻止除您列出的IP之外的所有IP)

(4) 单击“添加…”

(5) 单击“单台计算机”

(6) 输入127.0.0.1(本地主机的IP)


请注意,这里最好使用IP(如我所述)而不是域名,因为使用主机文件可以很容易地伪造域。

我同意使用IIS“目录安全性”阻止除127.0.0.1(localhost)之外的所有IP地址的建议


也就是说,我想知道这种要求用户远程登录的策略怎么可能更安全。使用标准的IIS身份验证机制,而不是管理服务器机器上的Windows角色和权限,难道不是更安全(也更简单)吗?

对于在
IIS 8
/
Windows 2012

1) 在
服务器管理器
中,转到
管理,添加角色和功能
,下一步,下一步(进入
服务器角色
),向下滚动到
Web服务器(IIS)
,展开该行,然后展开
Web服务器
,最后展开
安全性
。确保安装了IP和域限制

2) 在IIS管理器中,向下搜索到要保护的文件夹,然后左键单击“选择”。在该文件夹的
功能视图
中,选择
操作中的IP和域限制,选择
编辑功能设置
。将“未指定客户端的访问权限:”
更改为“拒绝”,然后确定

3) 最后转到
操作
s菜单中的
“添加允许输入”
。键入服务器的特定IP地址

现在只允许来自服务器的请求访问。或共享该IP地址的任何服务器。因此,在一个小型网络中,办公室可以在办公室的所有PC机之间共享IP地址,这样所有这些PC机都可以访问该文件夹


最后但并非最不重要的是要记住,如果您的网络有一个动态IP地址,那么如果该IP发生变化,您将向现在使用该IP的任何人公开您的博客管理文件夹。此外,该新IP地址上的每个人都将失去对该文件夹的访问权…

如果有人希望在命令行上执行此操作,则这似乎适用于IIS 7+

%windir%\system32\inetsrv\appcmd.exe set config "Default Web Site" -section:system.webServer/security/ipSecurity /+"[ipAddress='0',allowed='False']" /commit:apphost
%windir%\system32\inetsrv\appcmd.exe set config "Default Web Site" -section:system.webServer/security/ipSecurity /+"[ipAddress='127.0.0.1',allowed='True']" /commit:apphost

我最初希望在web.config中执行此操作以简化分发,看起来以下操作可能有效:

<security>
    <ipSecurity allowUnlisted="false">    <!-- this line blocks everybody, except those listed below -->                
        <clear/> <!-- removes all upstream restrictions -->
        <add ipAddress="127.0.0.1" allowed="true"/>    <!-- allow requests from the local machine -->
    </ipSecurity>
</security>


但是,由于您需要在中央IIS配置中解锁函数,因此直接使用第一个命令进行更改没有任何优势。

您也可以使用绑定而不是IP限制。如果编辑要限制访问的网站的绑定,可以选择该网站的可用IP地址。如果将IP地址设置为127.0.0.1,则站点仅对此IP地址进行响应,并且此IP地址当然仅在计算机上本地工作

我已经使用IIS 8.5对此进行了测试。

如中所述,可以将站点的绑定配置为仅在环回接口上侦听。这使得不必使用IP地址限制就可以从网络访问站点

要同时支持IPv4和IPv6,请添加两个绑定,一个用于
127.0.0.1
,一个用于
[::1]
,并将主机名设置为
*
,以便可以使用IP地址或
localhost
访问它,如屏幕截图所示:

要以编程方式添加“本地”站点,可以使用:

appcmd add site /name:MyLoalSite /bindings:http/127.0.0.1:7103:*,http/[::1]:7103:* /physicalPath:"C:\path\to\site\"

这些答案对你有帮助吗?如果是的话,你可以标出哪一个。我想知道你是如何解决这个问题的;-)我很乐意,我仍然需要向我的朋友展示我的反应,他将实际实施它。所以可能需要几天时间,但一旦我知道,我会接受答案。这不是一个可扩展的解决方案,因为它需要访问源代码,必须应用于每个页面,并且在部署后不允许任何灵活性。是否可以在web.config中执行此操作?从命令行上看,system.webServer/security/authorization部分中的某些内容可能会起作用。我刚刚尝试了建议的方法,我不得不使用127.0.0.1b