我们有一个运行 IIS 的网络服务器。我们可能想运行一个共享博客或其他东西来跟踪信息。由于安全问题,我们希望该部分只能从本地主机查看,因此人们必须远程访问才能使用它。
所以,重复我的问题,网站的一部分是否只能从本地主机查看?
对于有人在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)最后进入Action
s 菜单。输入服务器的特定 IP 地址。
现在只允许来自您的服务器的请求访问。或任何共享该 IP 地址的服务器。因此,在一个小型网络中,办公室可以在该办公室的所有 PC 之间共享 IP 地址,因此所有这些 PC 都可以访问该文件夹。
最后但同样重要的是要记住,如果您的网络有一个动态 IP 地址,那么如果该 IP 发生更改,您将向现在使用该 IP 的任何人公开您的博客管理文件夹。此外,该新 IP 地址上的每个人都将无法访问您的该文件夹...
在 IIS6 中,您可以调出 Web 的属性并单击目录安全选项卡。单击选项卡中间的按钮以编辑 IP 和域限制。在此选项卡上将所有计算机设置为拒绝,然后为要允许访问此站点的 IP 添加例外。
我不确定如何在 IIS7 上配置它。我看了但找不到它,如果我找到它,我会编辑这个答案。
编辑:配置 IIS7
您还可以使用绑定而不是 IP 限制。如果您编辑要限制访问的网站的绑定,您可以选择该网站可用的 IP 地址。如果您将 IP 地址设置为 127.0.0.1,则站点仅响应此 IP 地址,而此 IP 地址当然只能在机器本地工作。
我已经使用 IIS 8.5 对此进行了测试。
如果有人希望在命令行上执行此操作,这似乎适用于 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 配置中解锁该功能,因此直接使用第一个命令进行更改没有任何优势。
我同意使用 IIS“目录安全”来阻止除 127.0.0.1 (localhost) 之外的所有 IP 地址的建议。
也就是说,我想知道这种要求用户远程访问的策略如何可能更安全。使用标准 IIS 身份验证机制而不是管理服务器计算机上的 Windows 角色和权限不是更安全(也更简单)吗?
如果未经授权的用户尝试访问它,具体取决于您想要发生的事情。
您可以尝试将特定部分设置为虚拟目录,然后拒绝匿名用户查看。但是,将提示他们登录,如果他们可以登录,那么他们可以看到它。
从 IIS MMC 中的选项来看,您还可以让虚拟目录只能由某些 IP 范围访问。您可以屏蔽除 127.0.0.1 以外的所有人。但是,我还没有尝试过。
您可以授予或拒绝从特定 IP 对站点或文件夹的访问权限。在 IIS 中,进入相关站点或文件夹的属性。
(1) 点击“目录安全”选项卡
(2) 单击“IP 地址和域名限制”框下的编辑。
(3) 单击“拒绝访问”(这告诉 IIS 阻止除您列出的 IP 之外的所有 IP)
(4) 点击“添加...”
(5) 点击“单机”
(6)输入127.0.0.1(localhost的IP)
请注意,最好在此处使用 IP(正如我所描述的)而不是域名,因为可以使用 hosts 文件轻松伪造域。
正如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\"
您可以简单地将这个 .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
}