FW:介绍 IIS 7.5 的应用程序集区与新增的「虚拟账户」特性

一篇比较详细探讨IIS 7.5下面账户安全的文章,值得学习一下。

 

原文链接:

http://blog.miniasp.com/post/2009/09/Introduce-IIS-75-Application-Pool-Identity-and-Virtual-Account.aspx

来自于:The Will Will Web

 

从 Windows 7 与 Windows Server 2008 R2 开始,新增了两种特殊的账户类型,分别是「受管理的服务账户(Managed service accounts)」与「虚拟账户(virtual accounts)」,可有效隔离各种网络服务以提升安全性,我今天会集中在讲解 IIS 7.5 与虚拟账户之间的实际运用与范例。

要学会设定 IIS 一定要熟悉应用程序集区(Application Pool)与身份识别(Identity)的关系,我们都知道 IIS6 与 IIS7 默认的应用程序集区身份识别都是 NETWORK SERVICE 这个系统帐户,不过 NETWORK SERVICE 这个账户可不是只有 IIS 在用而已,还有许多其他系统中与网络有关的服务程序也是用 NETWORK SERVICE 这个身份在运作,例如:SQLEXPRESS 服务。

clip_image002

这也代表着就算 IIS 没有沦陷,只要有其他使用 NETWORK SERVICE 的网络服务沦陷的话,也会有可能连带影响 IIS 的运作。这样说你可能没感觉,我反过来说,如果 IIS 被植入木马程序,黑客可以大摇大摆的利用 NETWORK SERVICE 下载你的 SQLEXPRESS 数据库备份文件、删除备份档、删除或下载你暂时卸离的数据库、甚至于偷天换日将另一组数据库上传上去,让你完全不知发生何事。

碍于时间与篇幅我没办法说太多,如果有机会我可以做很多现场的展示,包你大开眼界,信息安全这文件事真的是博大精深,不了解各种细节与原理的人永远是在雾里看花。

有了「虚拟账户」的概念,各种不同的网络服务不需要再共享同一组 NETWORK SERVICE 身份识别,甚至于同一个 IIS 下个别不同的应用程序集区也可以用完全区隔开来的「虚拟帐户」执行 Web 应用程序,除了工作处理程序 (Worker Process) (w3wp.exe) 执行的身份可以完全切开外,对于不同站台所操作的档案或目录也可以将 NTFS 权限的设定做有效区隔,让不同工作处理程序之间对系统或档案安全性的影响降至最低,非常的有意义!

首先,我们先来看看 IIS 7.5 内建的 DefaultAppPool 应用程序集区的 [进阶设定]

clip_image004

clip_image006

在这里你会看到 IIS 7.5 这次才新增的 ApplicationPoolIdentity 内建账户,而这就是为 IIS 7.5 特别订制的「虚拟账户」。

clip_image008

当我们的 ASP.NET 程序需要上传或写入档案到 Web Server 时,就必须要设定目录的 NTFS 权限让工作处理程序能够写入档案,在以往我们要设定的是 NETWORK SERVICE 账户,但现在要输入的却是一组特殊的「虚拟账户」,我们在档案总管设定权限时「虚拟账户」是无法被选取的,只能手动输入这组特殊的帐户名称,IIS 应用程序集区的虚拟帐户名称表示方式为:【IIS AppPool\应用程序集区名称】,例如内建的应用程序名称就称为: 【IIS AppPool\DefaultAppPool】,如果你新增了一个应用程序集区名为 MyAppPool 的话,虚拟账户的表示法就是:【IIS AppPool\MyAppPool】。

如下图示,在设定 NTFS 权限选取使用者时需先手动输入虚拟账户账号

clip_image010

当按下 [检查名称] 或 [Check Names] 时,名称若出现「底线」就代表该「虚拟账户」是有效的:

clip_image012

最后,我们看一下 [任务管理器] 中呈现的工作处理程序 (w3wp.exe) 的执行身份也是虚拟账户DefaultAppPool 这个身份。

clip_image014

我觉得虚拟账户这个概念实在是太棒了,以后在设定多个站台时也不需要新增一堆无意义的系统帐户或人工管理这堆系统帐户的密码与到期日,对于系统的可管理性也增强了,当你不需要虚拟账户时,也可以选择原本的 NetworkService 或自行指定账户执行。

---

虚拟账户虽然在 Windows 7 与 Windows Server 2008 R2 才出现,但 Windows Server 2008 在更新到 Service Pack 2 (SP2) 之后也会支持虚拟账户的设定,只是经我实测后发现 Windows Server 2008 SP2 虽然有支持虚拟账户,在 IIS 7 的应用程序集区 [进阶设定] 窗口中也会看到 ApplicationPoolIdentity 的选项,但在档案总管中设定 NTFS 权限时却无法透过 [检查名称] 或 [Check Names] 按钮进行名称检查,因此你将无法透过 GUI 接口设定授权给虚拟帐户,只能透过 icacls 工具配置文件案或目录权限,使用范例如下:

‧设定 UploadFiles 目录授予 IIS AppPool\DefaultAppPool 虚拟帐户拥有完全控制(Full)权限

icacls C:\Inetpub\wwwroot\UploadFiles /grant "IIS AppPool\DefaultAppPool":F

clip_image016

posted @ 2009-09-16 15:06  Web应用安全观察站  阅读(775)  评论(2编辑  收藏  举报