【问题标题】:Where (how?) does IIS store custom application pool identities?IIS 在哪里(如何?)存储自定义应用程序池标识?
【发布时间】:2016-06-21 16:59:39
【问题描述】:

我有一个用于开发的应用程序池……我让它在我的凭据下运行(因此我不必担心权限/访问问题)。有两件事让我觉得我的凭据可能只是放在一个文件(或注册表项)中……这令人担忧:

  • 当我更改密码时,我必须更新存储的凭据
  • 设置对话框有一个确认密码字段

如果 IIS 只是存储一些身份验证令牌或其他内容,我希望只输入一次密码(因为身份验证会立即进行)。

有人知道我的凭据存储在哪里吗?它们是否只是使用一些系统密钥加密,然后在应用程序池启动时取出并使用?

这是我输入身份凭据的对话框:

我从应用程序池的高级设置中打开该对话框:

其他信息

Windows 7 上的 IIS 7.5

正在在其他应用程序池中使用虚拟帐户,但这不是我在这里使用的:我使用的是实际的 Windows 帐户凭据

更新

根据 nicolas-dietrich 的回复,我发现了以下内容……

IIS 7.5 的应用程序池凭据(和常规设置)存储在%systemroot%\System32\Inetsrv\config\applicationHost.config

加密由 AesProtectedConfigurationProvider 处理,这是 protect sensitive config info 的标准 (?) 方式(如数据库连接字符串或 - 你知道 - 密码

以下是相关部分,其中敏感/不相关信息已替换为省略号 (...):

<configProtectedData>
    <providers>
        <!-- … -->
        <add name="IISWASOnlyAesProvider" type="Microsoft.ApplicationHost.AesProtectedConfigurationProvider" description="Uses an AES session key to encrypt and decrypt" keyContainerName="iisWasKey" cspProviderName="" useOAEP="false" useMachineContainer="true" sessionKey="…" />
    </providers>
</configProtectedData>

<system.applicationHost>
    <applicationPools>
        <add name="DefaultAppPool" queueLength="5000" managedRuntimeVersion="v4.0" />
        <add name="GeneralDev" queueLength="5000" autoStart="true">
            <processModel identityType="SpecificUser" userName="mydomain\myusername" password="[enc:IISWASOnlyAesProvider:…:enc]" />
        </add>
        <!-- … -->
        <applicationPoolDefaults managedRuntimeVersion="v4.0">
            <processModel identityType="ApplicationPoolIdentity" loadUserProfile="true" setProfileEnvironment="false" />
        </applicationPoolDefaults>
    </applicationPools>        
    <!-- … -->
</system.applicationHost>

希望,足够安全吗? ¯\_(ツ)_/¯

【问题讨论】:

  • 我也想知道这个任务调度器!
  • 当您说 IIS 6.1 时,我相信您的意思是 IIS7.5。没有 6.1,但 Windows 7 是 Windows 6.1,并且有 IIS7.5 - Help->About 看起来有点混乱。
  • @JoeEnos 是的,它是 v7.5 :headslap:
  • @n8wrl 不确定任务计划程序...看起来密码可能通过注册表存储 (HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\CredWom)。无论如何都不在任务配置文件中(只有用户名)
  • 因为它使用了AesProtectedConfigurationProvider,所以它将密钥存储在一个KeyContainer中。谁有权访问 KeyContainer?它是 LocalMachine 范围的吗?

标签: asp.net iis


【解决方案1】:

在 IIS6 中,AppPool 身份存储在 IIS 元数据库 (%systemroot%\System32\Inetsrv\metabase.xml) 中位于 W3SVC/AppPools//WAMUserPass 下的加密字符串中。

虽然可以解密并将其显示为纯文本 (http://www.jasonsamuel.com/2010/04/28/how-to-get-the-iusr-and-iwam-user-account-passwords-on-an-iis-server/),但它并不那么安全

【讨论】:

  • 对不起...我在 IIS7 上,而不是 6。但是:%systemroot%\System32\Inetsrv\config\applicationHost.config 有一个 applicationPools 部分,其中包含我的用户名的密钥。密码字段包含对 AesProtectedConfigurationProvider 的引用
猜你喜欢
  • 2013-11-20
  • 2014-11-14
  • 1970-01-01
  • 1970-01-01
  • 2019-06-15
  • 2011-10-08
  • 1970-01-01
  • 1970-01-01
  • 2013-03-18
相关资源
最近更新 更多