介绍 IIS 7.5 的应用程序池与新增的「虚拟帐户」特性

从 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 服务。

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

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

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

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

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

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

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

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

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

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

相关连结

(0)

相关推荐

  • 介绍 IIS 7.5 的应用程序池与新增的「虚拟帐户」特性

    从 Windows 7 与 Windows Server 2008 R2 开始,新增了两种特殊的帐户类型,分别是「受管理的服务帐户(Managed service accounts)」与「虚拟帐户(virtual accounts)」,可有效隔离各种网路服务以提升安全性,我今天会集中在讲解 IIS 7.5 与虚拟帐户之间的实际运用与范例. 要学会设定 IIS 一定要熟悉应用程式集区(Application Pool)与身份识别(Identity)的关系,我们都知道 IIS6 与 IIS7 预设的

  • iis中为每个应用程序池单独设置aspnet.config配置文件

    ASP.NET4.0之后,这个配置文件在并发和线程方面得到了充分的支持.比如,可以设置maxConcurrentRequestsPerCPU, maxConcurrentThreadsPerCPU和requestQueueLimit等参数,用来更加灵活的设置asp.net runtime的配置. 复制代码 代码如下: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet.config C:\Windows\Microsoft.NET\Fra

  • Windows域帐户的好处 域控制器的优点介绍

    尤其是我在刚进入公司时第一项任务便是研究TFS.SharePoint.SQL Server如何配置及管理,域帐户的用处一次次让我产生不小的震撼,有时是思想上的颠覆,我真的被他折服了.如果没有域帐户这些工作可真是不知道要麻烦多少.使用一段时间后发现我所感受及用到的: 域帐户可以在任意一台已经加入域的电脑上登录. 将域用户组加入到SQL Server登录里,域用户组内所有人员便都可以使用域用户登录数据库,继承相关权限. 域用户登录Team Foundation Server.SharePoint等都

  • WIN2003 IIS相关错误的解决方法

    我碰到的主要问题是:"Server Application Unavailable 错误"."无法显示网页": 1.如果你的.NET版本是2.0及以上的话,那要注意了:win2003是默认安装1.1的,安装.NET2.0 后,可能会程序应用程序池冲突,具体查看这篇问题:服务器应用程序不可用(server application unavailable)的解决办法 , 用cmd指令打开这个路径:C:\WINDOWS\Microsoft.NET\Framework\v(

  • win2003 iis6服务器设置排错集锦[比较全]

    问题1:未启用父路径 症状举例:Server.MapPath() 错误 'ASP 0175 : 80004005'不允许的 Path 字符 /0709/dqyllhsub/news/OpenDatabase.asp,行 4在 MapPath 的 Path 参数中不允许字符 '..'. 原因分析:许多Web页面里要用到诸如../格式的语句(即回到上一层的页面,也就是父路径),而IIS6.0出于安全考虑,这一选项默认是关闭的. 解决方法:在IIS中属性->主目录->配置->选项中.把&quo

  • NPOINT免费虚拟主机管理系统windows2003的安装方法【图文】第1/2页

    NPOINT虚拟主机管理系统下载地址http://www.jb51.net/softs/2219.html 注: 使用 SERV-U FTP软件的用户 安装方法 只要 第一步 至 第八步 就可以了.第一步:注册组件 复制npointdll文件夹到C盘根目录,然后点"开始"-"运行",输入:regsvr32 c:\npointdll\npoint.dll  系统提示: 表示注册成功 第二步:配置运行帐户 新建一个系统帐户(如:npointhost),并设置该帐户属于&

  • C++11中lambda、std::function和std:bind详解

    前言 在C++11新标准中,语言本身和标准库都增加了很多新内容,本文只涉及了一些皮毛.不过我相信这些新特性当中有一些,应该成为所有C++开发者的常规装备.本文主要介绍了C++11中lambda.std::function和std:bind,下面来一起看看详细的介绍吧. lambda 表达式 C++11中新增了lambda 表达式这一语言特性.lambda表达式可以让我们快速和便捷的创建一个"函数". 下面是lambda表达式的语法: [ capture-list ] { body }

  • 微信小程序的开发范式BeautyWe.js入门详解

    一个简单的介绍 BeautyWe.js 是什么? 它是一套专注于微信小程序的企业级开发范式,它的愿景是: 让企业级的微信小程序项目中的代码,更加简单.漂亮. 为什么要这样命名呢? Write beautiful code for wechat mini program by the beautiful we! 「We」 既是我们的 We,也是微信的 We,Both beautiful! 那么它有什么卖点呢? 专注于微信小程序环境,写原汁原味的微信小程序代码. 由于只专注于微信小程序,它的源码也很

  • CentOS7 minimal 最小化安装网络设置过程

    目录 1.VMware虚拟网络设置 2. 修改CentOS 7 虚拟机的网络设置 总结 在VMware 中安装好 CentOS 7 minimal 版之后,即使在安装的时候已经设置了网络,但是在实际的系统中依旧不能直接使用网络,因此还需要对虚拟机进行网络设置. 下面开始介绍CentOS 7 minimal 最小版的网络设置(CentOS7 minimal install network configure) 1.VMware虚拟网络设置 打开 VMware 软件 –在工具栏选择「编辑」— 选择「

  • 配置IIS应用程序池的详细介绍(iis6)

    IIS应用程序池优化方案 服务器经常产生"应用程序池 'DefaultAppPool' 提供服务的进程关闭时间超过了限制.进程 ID 是 '3504'."的错误,导致iis处于假死状态,经了解是IIS应用程序池的设置问题.解决方法如下(红色字为标记): Internet 信息服务(IIS)管理器->应用程序池->DefaultAppPool->右击属性 一.回收 1.回收工作进程(分钟):选中,值为1740 (800) 2.回收工作进程(请求数目):(不选)(原先设置

随机推荐