24

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

所以,重复我的问题,网站的一部分是否只能从本地主机查看?

4

10 回答 10

30

对于有人在IIS 8/Windows 2012

1) 在Server Manager, , Manage, Add Roles and Features, Next, Next (get to Server Roles), 向下滚动到Web Server (IIS), 展开该行, 然后展开Web Server, 最后展开Security。确保安装了IP 和域限制

2) 在IIS Manager中,深入到您要保护的文件夹并左键单击选择它。在该Features View文件夹中选择IP 和域限制Actions选择Edit Feature Settings. 更改'Access for unspecified clients:''Deny'然后确定。

'Add Allow Entry'3)最后进入Actions 菜单。输入服务器的特定 IP 地址。

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

最后但同样重要的是要记住,如果您的网络有一个动态 IP 地址,那么如果该 IP 发生更改,您将向现在使用该 IP 的任何人公开您的博客管理文件夹。此外,该新 IP 地址上的每个人都将无法访问您的该文件夹...

于 2014-03-22T09:23:44.113 回答
6

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

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

编辑:配置 IIS7

  • 乔什
于 2008-11-06T21:36:20.637 回答
5

您还可以使用绑定而不是 IP 限制。如果您编辑要限制访问的网站的绑定,您可以选择该网站可用的 IP 地址。如果您将 IP 地址设置为 127.0.0.1,则站点仅响应此 IP 地址,而此 IP 地址当然只能在机器本地工作。

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

于 2016-10-05T09:59:51.360 回答
4

如果有人希望在命令行上执行此操作,这似乎适用于 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 配置中解锁该功能,因此直接使用第一个命令进行更改没有任何优势。

于 2015-06-17T08:59:45.773 回答
1

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

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

于 2008-11-06T22:23:23.973 回答
0

如果未经授权的用户尝试访问它,具体取决于您想要发生的事情。

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

于 2008-11-06T21:14:56.763 回答
0

从 IIS MMC 中的选项来看,您还可以让虚拟目录只能由某些 IP 范围访问。您可以屏蔽除 127.0.0.1 以外的所有人。但是,我还没有尝试过。

于 2008-11-06T21:18:37.847 回答
0

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

(1) 点击“目录安全”选项卡

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

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

(4) 点击“添加...”

(5) 点击“单机”

(6)输入127.0.0.1(localhost的IP)

请注意,最好在此处使用 IP(正如我所描述的)而不是域名,因为可以使用 hosts 文件轻松伪造域。

于 2008-11-06T22:05:07.100 回答
0

正如https://stackoverflow.com/a/39870955/2279059中所建议的,可以将站点的绑定配置为仅在环回接口上侦听。这使得该站点无法从网络访问,而无需使用 IP 地址限制。

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

在此处输入图像描述

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

appcmd add site /name:MyLoalSite /bindings:http/127.0.0.1:7103:*,http/[::1]:7103:* /physicalPath:"C:\path\to\site\"
于 2019-10-28T08:03:56.960 回答
-3

您可以简单地将这个 .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
}
于 2008-11-06T21:18:15.867 回答