532628838
圣骑士
圣骑士
  • 注册日期2011-06-10
  • 发帖数98
  • QQ
  • 火币517枚
  • 粉丝77
  • 关注39
阅读:2801回复:0

。确保ASP.NET应用程序和Web Services安全之Machine.Config和Web.Config指南

楼主#
更多 发布于:2011-07-12 13:47
 Machine.config 中的设置为服务器应用计算机级的默认值。如果要为服务器上所有应用程序强制使用特定的配置,可在 <location> 元素上使用 allowOverride="false",如上所述。这对驻留方案尤其适用,在驻留方案中,需要为服务器上的所有应用程序强制实施安全策略的各个方面。
  对于可以基于单个应用程序配置的那些设置,通常应用程序会提供 web.config 文件。尽管可以使用多个 <location> 元素从 Machine.config 配置单个应用程序,但单独的 Web.config 文件可以提供部署优势,并能使 Machine.config 文件变得更小。
  需要考虑的主要问题是计算机策略应该强制使用哪些设置。这取决于特定的方案。一些通用方案如下所示:
  <location path="" allowOverride="false">
  <system.web>
  <authentication mode="Windows"/>
  </system.web>
  </location>
  驻留方案提供驻留服务的公司需要限制应用程序,以使它们不能访问彼此的资源,从而限制对重要系统资源的访问。要实现此目标,可以配置所有应用程序以部分信任级别运行。例如,中级信任级别限制应用程序只能访问自身虚拟目录分级结构内的文件,而限制对其他类型资源的访问。有关详细信息,请参阅模块 9 ASP.NET 代码访问安全性。要对服务器上的所有应用程序应用中级信任策略,请使用以下配置:
  <location path="" allowOverride="false>
  <system.web>
  <trust level="Medium" />
  </system.web>
  </location>
  ACL 和权限
  配置文件包含敏感数据,因此需要使用适当配置的 ACL 来限制访问。
  Machine.config
  默认情况下,使用以下 ACL 配置 Machine.config:
  Administrators:完全控制
  System:完全控制
  Power Users:修改
  Users:读取和执行
  LocalMachine\ASPNET(进程标识):读取和执行
  注意 在 Windows Server 2003 上,本地服务和网络服务帐户也被授予读取权限。
  Users 组的成员默认情况下被授予读取权限,因为计算机上运行的所有托管代码都必须能够读取 Machine.config。
  Machine.config 上的默认 ACL 是安全的默认值。但是,如果只有单个 Web 应用程序运行在服务器上,或所有 Web 应用程序使用相同的进程标识,则可以通过删除用户的访问控制项 (ACE) 来进一步限制 ACL。如果确实从 DACL 中删除了“users”,需要明确添加 Web 进程标识。
  Web.config
  .NET Framework 不安装任何 Web.config 文件。如果安装提供自身 Web.config 的应用程序,通常它会从 inetpub 目录继承 ACL,默认情况下,该 ACL 将为 Everyone 组的成员授予读取权限。要锁定应用程序特定的 Web.config,请使用以下 ACL 之一。
  对于 .NET Framework 1.0:
  Administrators:完全控制
  System:完全控制
  ASP.NET 进程标识:读取
  UNC 标识:读取
  模拟标识(固定标识):读取
  模拟标识(原呼叫方):读取
  对于 .NET Framework 1.1:
  Administrators:完全控制
  System:完全控制
  ASP.NET 进程标识:读取
  UNC 标识:读取
  模拟标识(固定标识):读取
  如果应用程序使用明确帐户的模拟(即,如果模拟固定标识),如 <identity impersonate="true" username="WebUser" password="Y0urStr0ngPassw0rd$"/>,则帐户(本例中为 WebUser)和进程都需要读取权限。
  如果代码基准基于通用命名约定 (UNC) 共享,则必须为 IIS 提供的 UNC 令牌标识授予读取权限。
  如果您正在模拟但没有使用明确凭据,如 <identity impersonate="true"/>,并且没有使用 UNC,则在 .NET Framework 1.1 中只有进程需要访问权限。对于 .NET Framework 1.0,必须另外配置 ACL,使其为将被模拟的任何标识授予读取权限(即,必须为原呼叫方授予读取权限)。

喜欢0 评分0
游客

返回顶部