我正在寻找有关 IIS 使用的 IUSR 和 IWAM 帐户的良好解释,以帮助我更好地配置我们的托管环境:
- 他们为什么在那里?
- 它们之间有什么区别?
- 这些名字有含义吗?
- 我应该做出哪些最佳实践改变?
- IIS 还为我提供了将应用程序池作为网络服务、本地服务或本地系统运行的选项。我应该这样做吗?
- 我的网络服务器是域的一部分,这会带来什么改变?
在将多个站点部署到服务器时,创建这些帐户的自己的版本似乎很常见,但这会引发一些额外的问题:
- 我什么时候可能想要创建自己的 IUSR 和 IWAM 帐户?
- 我应该如何创建这些附加帐户才能使它们具有正确的权限?
我正在使用 IIS 6 和 IIS 7,大部分配置都是默认的。
答案1
IUSR 和 IWAM 可以追溯到 IIS 的早期,当时您单独安装它(而不是作为操作系统组件)。默认情况下,如果网站允许匿名身份验证,则根据操作系统上的权限使用 IUSR 帐户。这可以从默认值更改。有一些安全建议至少重命名该帐户,因此它不是“已知”帐户,就像有人建议重命名服务器上的管理员帐户一样。您可以了解有关MSDN 上的 IUSR 和身份验证。
IWAM 是为任何进程外应用程序设计的,仅在 IIS 5.0 隔离模式下在 IIS 6.0 中使用。您通常会在 COM/DCOM 对象中看到它。
对于应用程序池身份,默认以网络服务身份运行。您不应以本地系统身份运行,因为该帐户的权限大于管理员权限。因此,您基本上只能使用网络服务、本地服务或除这两个之外的本地/域帐户。
至于该怎么做,这要视情况而定。将其保留为网络服务的一个优点是,这是服务器上的有限权限帐户。但是,当它通过网络访问资源时,它会显示为 Domain\ComputerName$,这意味着您可以分配权限,允许网络服务帐户访问资源,例如在不同机器上运行的 SQL Server。此外,由于它显示为计算机帐户,如果您启用 Kerberos 身份验证,则如果您通过服务器名称访问网站,则 SPN 已经到位。
如果您希望特定帐户访问网络资源(例如,服务帐户访问基于 Web 的应用程序的 SQL Server),则需要考虑将应用程序池更改为特定 Windows 域帐户。ASP.NET 中还有其他选项可以在不更改应用程序池标识的情况下执行此操作,因此这不再是必需的。考虑使用域用户帐户的另一个原因是您正在进行 Kerberos 身份验证,并且有多个 Web 服务器为 Web 应用程序提供服务。一个很好的例子是,如果您有两个或多个 Web 服务器提供 SQL Server Reporting Services。前端可能是一个通用 URL,例如 reports.mydomain.com 或 reporting.mydomain.com。在这种情况下,SPN 只能应用于 AD 中的一个帐户。如果应用程序池在每台服务器上的网络服务下运行,则无法正常工作,因为当它们离开服务器时,它们将显示为 Domain\ComputerName$,这意味着您拥有的帐户数量与提供应用程序的服务器数量一样多。解决方案是创建一个域帐户,将所有服务器上的应用程序池标识设置为同一个域用户帐户,并创建一个 SPN,从而允许 Kerberos 身份验证。对于像 SSRS 这样的应用程序,您可能希望将用户凭据传递到后端数据库服务器,那么 Kerberos 身份验证是必须的,因为这样您将必须配置 Kerberos 委派。
我知道这有很多内容需要理解,但简短的回答是,除本地系统外,其他情况都视情况而定。
答案2
IUSR = 互联网用户,即任何匿名、未经身份验证的网站访问者(即几乎所有人)
IWAM = Internet Web 应用程序管理器,即所有 ASP 和 .NET 应用程序都将在此帐户下运行
一般来说,IUSR 和 IWAM 应该只能访问他们所需的内容。他们不应该被授予任何其他访问权限,因为一旦这些帐户被盗用,他们就无法访问任何关键内容。
这就是我能解决的所有问题了,在 IIS 管理方面拥有更多经验的其他人也许能为您提供进一步的帮助!
答案3
我总是求助于这个指南 -
http://learn.iis.net/page.aspx/140/understanding-the-built-in-user-and-group-accounts-in-iis-70/
你可以在 iis.net 上找到很多
简而言之 - IUSR 只是默认对 c:\inetpub\wwwroot 具有权限的开箱即用的来宾帐户。