如何保护 IIS 中的站点

在调查 Windows VPS 服务器上的站点感染或破坏时,最常见的根本原因是文件安全性差或 IIS 应如何访问文件内容时配置选择不当。 防止这种情况的最简单方法是从安全站点开始。

在 IIS 中设置网站非常简单,但在安全性或易于管理方面,一些默认设置并不是最佳的。 此外,一些过去被认为是必要的或标准的做法,从一开始就不再或从来没有必要。 因此,我们建议您按照以下步骤设置网站,以确保设置正确且安全。 虽然其中一些设置或权限更改可能看起来很小,但它们在托管多个域或多个租户的系统上大有帮助,因为它们阻止了任何跨站点文件访问。

将站点添加到 IIS

要在 IIS(Internet 信息服务)中添加网站,请打开 IIS 管理器, 右击 网站, 并选择 添加网站. 将站点添加到 IIS 时,我们通常建议使用域名作为“地点 名称”以便于识别。 接下来,在“身体的 小路”,您需要提供网站内容所在的路径或使用“” 导航到并选择文件夹。 “下的配置选项连接 作为…“ 和 ”测试设置…” 不需要修改。

在配置站点绑定时,普遍认为应该从“IP地址” 下拉菜单; 但是,这是基于过时的做法,通常与 SSL 过去需要专用 IP 的方式有关。 这不再需要,并且在进入任何复制或高可用性配置时实际上会导致问题,因此最好将 IP 地址设置为 全部未分配 并在“主持人 名称“ 场地。 请注意,您只能在此处提供一个值; 创建站点后,可以通过右键单击站点并转至添加其他主机名 绑定. 此外,根据您的需要,您可以选择“https”而不是“http”。 要使用 SSL 托管站点,请在设置站点以添加 SSL 并对其进行配置后访问我们关于该主题的文章。

设置匿名用户

从技术上讲,这就是在 IIS 中设置站点所需要做的一切; 但是,该站点可能运行也可能不运行,并且站点上的安全设置不是最佳的。 保护您的站点的下一步是配置将访问您的文件的 IIS 用户。 为此,您需要更改关联的匿名用户并对网站的内容文件夹进行一些安全更改。

在 IIS 中,选择左侧的新站点,在主窗口中双击 验证, 选择 匿名的 验证,然后单击“编辑…”在右侧操作栏上。

IIS 中的 IUSR 是什么?

默认情况下,IIS 中的新站点使用 IUSR 帐户访问文件。 此帐户是 IIS 通常用于访问文件内容的内置共享帐户。 这意味着它将使用应用程序池的身份(用户)来访问文件内容。

如果您只计划托管一个域,则可以保留此配置; 但是,当涉及到托管多个域时,这并不安全,因为任何使用相同帐户的站点都可以从另一个站点访问文件。 因此,作为标准做法,我们建议不要使用 IUSR 帐户来访问网站,而是选择“应用程序池标识” 并点击 . 或者,您可以在系统上为每个站点手动创建一个用户; 但是,您需要管理其他用户的凭据,需要为两个用户(匿名用户和应用程序池用户)配置权限,并且可能会出现密码复杂性和服务器或组织可能具有的轮换要求的复杂性。

就安全性而言,您无需在 IIS 中进行进一步配置; 但是,作为参考,让我们快速看一下应用程序池设置。 要检查应用程序池的设置,在 IIS 中,选择 应用程序池 在左侧菜单中,选择您创建的站点的应用程序池(通常与站点名称相同),然后单击“高级设置…”在右侧操作栏上。高级设置

在这里,相关的设置是身份,默认是“应用程序池身份”。 这意味着要访问文件内容,IIS 和相关的应用程序池将使用一个隐藏的、基于应用程序池名称的动态用户来访问文件。 此用户没有关联密码,只能由 IIS 使用,并且只能访问专门授予它的文件。 因此,它消除了管理系统用户和凭据的要求。

在 IIS 中设置文件夹权限

现在,如前所述,“应用程序池身份” 用户的权限很少,因此下一步也是最后一步是确保网站文件具有适当的安全设置。 浏览您的文件系统并找到您计划托管站点文件的文件夹。 右键单击该文件夹并转到 特性. 在属性界面,选择 安全 标签。安全选项卡

默认情况下,文件夹上设置了许多不必要且可能不安全的安全权限(可能比此处显示的更多)。 为了最好地保护网站,我们建议删除除“系统“ 和 ”管理员” 组并添加“应用程序池身份” 用户(可能还有您可能需要的任何其他用户,例如 FTP 用户); 但是,要做到这一点,您需要禁用继承。 为此,请单击“先进的”,然后点击“禁用继承”。禁用继承

在这里,您将收到一个弹出窗口,询问您是要复制当前设置还是不设置任何设置。 任何一个选项都可以工作; 但是,复制当前设置然后删除不必要的权限会更容易。 所以选择“将继承的权限转换为对此对象的显式权限” 然后单击 .

此时,要删除不必要的权限,请单击 编辑 并删除除“系统“ 和 ”管理员”组。 接下来,您需要添加“应用程序池身份” 用户到此文件夹。 为此,请单击“添加……”。 现在,根据您的服务器配置,您可能会收到一个弹出窗口,要求您对活动目录域进行身份验证。 只需点击 取消 按钮几次,直到你得到 选择用户 或者 团体 如下图所示。选择用户或组

在此屏幕上,您需要确保“地点” 选择的是您的计算机。 如果不是,请单击“地点…”并选择您的计算机(应该在顶部;您可能还需要在此处的某些身份验证窗口上单击取消)。

这 ”应用程序池身份” 用户为隐藏用户,无法搜索到该用户。 因此,您必须输入用户名才能添加它。 您需要输入的用户名是“IIS 应用程序池“。 请参阅以下示例并相应地填写您的示例:

” width=”655″ height=”362″ srcset=”https://res.cloudinary.com/lwgatsby/f_auto,c_scale,w_655/www/uploads/2019/03/Screen-Shot-2019-03-20-at-2.09.52-PM-1.png 655w, https://res.cloudinary.com/lwgatsby/f_auto,c_scale,w_300/www/uploads/2019/03/Screen-Shot-2019-03-20-at-2.09.52-PM-1.png 300w” sizes=”(max-width: 655px) 100vw, 655px”>

输入用户名后,点击 . 现在您已经添加了用户,默认情况下只授予读取权限,您需要验证您的安全设置是否类似于下图,然后单击 .验证您的安全设置

这样,您就完成了,并拥有一个可供大众查看的安全站点,而无需担心黑客会破坏它。

在 Powershell 中保护

作为奖励,如果您希望使用一些 Powershell 来弄湿您的手指,本文中介绍的步骤也可以通过 Powershell 在 Windows Server 2012 或更新的服务器上完成。 只需使用您的域名和内容路径填写前两个变量,然后运行其余的 PowerShell 命令以在 IIS 中设置站点并配置文件夹权限。

[String]$Domain = ‘<domain_Name>’

[String]$Root = ‘<path_to_your_content>’

Import-Module WebAdministration

#Create App pool & Website
New-WebAppPool -Name $Domain
New-Website -Name $Domain -HostHeader $Domain -PhysicalPath $Root -ApplicationPool $Domain
Set-WebConfigurationProperty -Filter system.webServer/security/authentication/anonymousAuthentication -Location $Domain -PSPath MACHINE/WEBROOT/APPHOST -Name userName -Value ''

#Optionally add www. Binding
New-WebBinding -Name $Domain -HostHeader www.$Domain -ErrorAction

#Remove inheritance (copy)
$ACL = Get-ACL $Root
$ACL.SetAccessRuleProtection($True,$True) | Out-Null
$ACL.Access | ?{ !(($_.IdentityReference -eq 'NT AUTHORITYSYSTEM') -or ($_.IdentityReference -eq 'BUILTINAdministrators')) } | %{ $ACL.RemoveAccessRule( $_ ) } | Out-Null
$ACL | Set-ACL

#Add IIS user permissions
$ACL = Get-ACL $Root
$acl.SetAccessRuleProtection($False, $True)
$Rule = New-Object System.Security.AccessControl.FileSystemAccessRule("IIS AppPool$Domain", "ReadAndExecute", "ContainerInherit, ObjectInherit", "None", "Allow")
$acl.AddAccessRule($Rule)
$acl | Set-Acl

附加说明:在某些情况下,站点可能需要对特定文件或文件夹的附加写入或修改权限才能上传文件、缓存文件或其他内容。 您不得将修改后的权限应用于整个站点。 相反,根据需要修改特定的目录或文件。 要应用这些设置,请转到需要修改的文件或文件夹,右键单击它,然后选择 特性. 切换到 安全 选项卡并单击 编辑. 在那里,选择具有网站名称的用户(在我上面的示例中为CodePre.com),在下面选择修改 允许 列,然后单击 . 这将使 ApplicationPoolIdentity 和 IIS 能够写入或修改文件或文件夹。

您的 Liquid Web 服务器还需要额外的保护吗? 我们的服务器保护包提供了一套安全工具,尤其适用于 Windows 服务器。 如果您的网站遭到黑客攻击,您将获得例行漏洞扫描、强化服务器配置、防病毒甚至恶意软件清理。 不要再等一分钟,看看我们如何保护您。